[SDK][WIN32SS] Prepare d3dkmt functions up to Windows Vista (#5612)

Prepare the d3dkmt APIs up to Vista RTM
Build the skeleton needed for having userspace components talk to a WDDM KMD driver

Co-authored-by: Mark Jansen <mark.jansen@reactos.org>
Co-authored-by: Hermès BÉLUSCA - MAÏTO <hermes.belusca-maito@reactos.org>
This commit is contained in:
Justin Miller 2025-03-24 21:21:09 +01:00 committed by GitHub
parent 818842de06
commit e7a9e7ca3d
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
17 changed files with 1987 additions and 16 deletions

241
sdk/include/ddk/d3dkmddi.h Normal file
View file

@ -0,0 +1,241 @@
/*
* PROJECT: ReactOS Display Driver Model
* LICENSE: MIT (https://spdx.org/licenses/MIT)
* PURPOSE: Header file for WDDM style DDIs
* COPYRIGHT: Copyright 2024 Justin Miller <justin.miller@reactos.org>
*/
#ifndef _D3DKMDDI_H_
#define _D3DKMDDI_H_
#include <d3dkmdt.h>
typedef struct _DXGK_ALLOCATIONINFOFLAGS_WDDM2_0
{
union
{
struct
{
UINT CpuVisible : 1;
UINT PermanentSysMem : 1;
UINT Cached : 1;
UINT Protected : 1;
UINT ExistingSysMem : 1;
UINT ExistingKernelSysMem : 1;
UINT FromEndOfSegment : 1;
UINT DisableLargePageMapping : 1;
UINT Overlay : 1;
UINT Capture : 1;
#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_1)
UINT CreateInVpr : 1;
#else
UINT Reserved00 : 1;
#endif
UINT DXGK_ALLOC_RESERVED17 : 1;
UINT Reserved02 : 1;
#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_9)
UINT MapApertureCpuVisible : 1;
#else
UINT Reserved03 : 1;
#endif
UINT HistoryBuffer : 1;
UINT AccessedPhysically : 1;
UINT ExplicitResidencyNotification : 1;
UINT HardwareProtected : 1;
UINT CpuVisibleOnDemand : 1;
UINT DXGK_ALLOC_RESERVED16 : 1;
UINT DXGK_ALLOC_RESERVED15 : 1;
UINT DXGK_ALLOC_RESERVED14 : 1;
UINT DXGK_ALLOC_RESERVED13 : 1;
UINT DXGK_ALLOC_RESERVED12 : 1;
UINT DXGK_ALLOC_RESERVED11 : 1;
UINT DXGK_ALLOC_RESERVED10 : 1;
UINT DXGK_ALLOC_RESERVED9 : 1;
UINT DXGK_ALLOC_RESERVED4 : 1;
UINT DXGK_ALLOC_RESERVED3 : 1;
UINT DXGK_ALLOC_RESERVED2 : 1;
UINT DXGK_ALLOC_RESERVED1 : 1;
UINT DXGK_ALLOC_RESERVED0 : 1;
};
UINT Value;
};
} DXGK_ALLOCATIONINFOFLAGS_WDDM2_0;
C_ASSERT(sizeof(DXGK_ALLOCATIONINFOFLAGS_WDDM2_0) == 0x4);
typedef struct _DXGK_SEGMENTPREFERENCE
{
union
{
struct
{
UINT SegmentId0 : 5;
UINT Direction0 : 1;
UINT SegmentId1 : 5;
UINT Direction1 : 1;
UINT SegmentId2 : 5;
UINT Direction2 : 1;
UINT SegmentId3 : 5;
UINT Direction3 : 1;
UINT SegmentId4 : 5;
UINT Direction4 : 1;
UINT Reserved : 2;
};
UINT Value;
};
} DXGK_SEGMENTPREFERENCE, *PDXGK_SEGMENTPREFERENCE;
C_ASSERT(sizeof(DXGK_SEGMENTPREFERENCE) == 0x4);
typedef struct _DXGK_SEGMENTBANKPREFERENCE
{
union
{
struct
{
UINT Bank0 : 7;
UINT Direction0 : 1;
UINT Bank1 : 7;
UINT Direction1 : 1;
UINT Bank2 : 7;
UINT Direction2 : 1;
UINT Bank3 : 7;
UINT Direction3 : 1;
};
UINT Value;
};
} DXGK_SEGMENTBANKPREFERENCE;
C_ASSERT(sizeof(DXGK_SEGMENTBANKPREFERENCE) == 0x4);
typedef struct _DXGK_ALLOCATIONINFOFLAGS
{
union
{
struct
{
UINT CpuVisible : 1;
UINT PermanentSysMem : 1;
UINT Cached : 1;
UINT Protected : 1;
UINT ExistingSysMem : 1;
UINT ExistingKernelSysMem : 1;
UINT FromEndOfSegment : 1;
UINT Swizzled : 1;
UINT Overlay : 1;
UINT Capture : 1;
UINT UseAlternateVA : 1;
UINT SynchronousPaging : 1;
UINT LinkMirrored : 1;
UINT LinkInstanced : 1;
UINT HistoryBuffer : 1;
#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_0)
UINT AccessedPhysically : 1;
UINT ExplicitResidencyNotification : 1;
UINT HardwareProtected : 1;
UINT CpuVisibleOnDemand : 1;
#else
UINT Reserved : 4;
#endif
UINT DXGK_ALLOC_RESERVED16 : 1;
UINT DXGK_ALLOC_RESERVED15 : 1;
UINT DXGK_ALLOC_RESERVED14 : 1;
UINT DXGK_ALLOC_RESERVED13 : 1;
UINT DXGK_ALLOC_RESERVED12 : 1;
UINT DXGK_ALLOC_RESERVED11 : 1;
UINT DXGK_ALLOC_RESERVED10 : 1;
UINT DXGK_ALLOC_RESERVED9 : 1;
UINT DXGK_ALLOC_RESERVED4 : 1;
UINT DXGK_ALLOC_RESERVED3 : 1;
UINT DXGK_ALLOC_RESERVED2 : 1;
UINT DXGK_ALLOC_RESERVED1 : 1;
UINT DXGK_ALLOC_RESERVED0 : 1;
};
UINT Value;
};
} DXGK_ALLOCATIONINFOFLAGS;
C_ASSERT(sizeof(DXGK_ALLOCATIONINFOFLAGS) == 0x4);
typedef struct _DXGK_ALLOCATIONUSAGEINFO1
{
union
{
struct
{
UINT PrivateFormat : 1;
UINT Swizzled : 1;
UINT MipMap : 1;
UINT Cube : 1;
UINT Volume : 1;
UINT Vertex : 1;
UINT Index : 1;
UINT Reserved : 25;
};
UINT Value;
} Flags;
union
{
D3DDDIFORMAT Format;
UINT PrivateFormat;
};
UINT SwizzledFormat;
UINT ByteOffset;
UINT Width;
UINT Height;
UINT Pitch;
UINT Depth;
UINT SlicePitch;
} DXGK_ALLOCATIONUSAGEINFO1;
C_ASSERT(sizeof(DXGK_ALLOCATIONUSAGEINFO1) == 0x24);
typedef struct _DXGK_ALLOCATIONUSAGEHINT
{
UINT Version;
DXGK_ALLOCATIONUSAGEINFO1 v1;
} DXGK_ALLOCATIONUSAGEHINT;
C_ASSERT(sizeof(DXGK_ALLOCATIONUSAGEHINT) == 0x28);
typedef struct _DXGK_ALLOCATIONINFO
{
VOID* pPrivateDriverData;
UINT PrivateDriverDataSize;
UINT Alignment;
SIZE_T Size;
SIZE_T PitchAlignedSize;
DXGK_SEGMENTBANKPREFERENCE HintedBank;
DXGK_SEGMENTPREFERENCE PreferredSegment;
UINT SupportedReadSegmentSet;
UINT SupportedWriteSegmentSet;
UINT EvictionSegmentSet;
union
{
UINT MaximumRenamingListLength;
UINT PhysicalAdapterIndex;
};
HANDLE hAllocation;
union
{
DXGK_ALLOCATIONINFOFLAGS Flags;
#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_0)
DXGK_ALLOCATIONINFOFLAGS_WDDM2_0 FlagsWddm2;
#endif
};
DXGK_ALLOCATIONUSAGEHINT* pAllocationUsageHint;
UINT AllocationPriority;
#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM3_0)
DXGK_ALLOCATIONINFOFLAGS2 Flags2;
#endif
} DXGK_ALLOCATIONINFO;
#ifdef _WIN64
#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM3_0)
C_ASSERT(sizeof(DXGK_ALLOCATIONINFO) == 0x5C);
#else
C_ASSERT(sizeof(DXGK_ALLOCATIONINFO) == 0x58);
#endif
#else
#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM3_0)
C_ASSERT(sizeof(DXGK_ALLOCATIONINFO) == 0x40);
#else
C_ASSERT(sizeof(DXGK_ALLOCATIONINFO) == 0x3C);
#endif
#endif
#endif // _D3DKMDDI_H_

View file

@ -3923,4 +3923,392 @@ NtGdiGetCurrentDpiInfo(
#endif /* PRIVATE_DWM_INTERFACE */
/* ReactOS Display Driver Model */
__kernel_entry
W32KAPI
BOOLEAN
APIENTRY
NtGdiDdDDICheckExclusiveOwnership(VOID);
__kernel_entry
W32KAPI
NTSTATUS
APIENTRY
NtGdiDdDDICreateAllocation(
_Inout_ D3DKMT_CREATEALLOCATION* unnamedParam1);
__kernel_entry
W32KAPI
NTSTATUS
APIENTRY
NtGdiDdDDICheckMonitorPowerState(
_In_ const D3DKMT_CHECKMONITORPOWERSTATE* unnamedParam1);
__kernel_entry
W32KAPI
NTSTATUS
APIENTRY
NtGdiDdDDICheckOcclusion(
_In_ const D3DKMT_CHECKOCCLUSION* unnamedParam1);
__kernel_entry
W32KAPI
NTSTATUS
APIENTRY
NtGdiDdDDICloseAdapter(
_In_ const D3DKMT_CLOSEADAPTER* unnamedParam1);
__kernel_entry
W32KAPI
NTSTATUS
WINAPI
NtGdiDdDDICreateContext(
_Inout_ D3DKMT_CREATECONTEXT* unnamedParam1);
__kernel_entry
W32KAPI
NTSTATUS
APIENTRY
NtGdiDdDDICreateDevice(
_Inout_ D3DKMT_CREATEDEVICE* unnamedParam1);
__kernel_entry
W32KAPI
NTSTATUS
APIENTRY
NtGdiDdDDICreateOverlay(
_Inout_ D3DKMT_CREATEOVERLAY* unnamedParam1);
__kernel_entry
W32KAPI
NTSTATUS
APIENTRY
NtGdiDdDDICreateSynchronizationObject(
_Inout_ D3DKMT_CREATESYNCHRONIZATIONOBJECT* unnamedParam1);
__kernel_entry
W32KAPI
NTSTATUS
APIENTRY
NtGdiDdDDIWaitForVerticalBlankEvent(
_In_ const D3DKMT_WAITFORVERTICALBLANKEVENT* unnamedParam1);
__kernel_entry
W32KAPI
NTSTATUS
APIENTRY
NtGdiDdDDIWaitForIdle(
_In_ const D3DKMT_WAITFORIDLE* unnamedParam1);
__kernel_entry
W32KAPI
NTSTATUS
APIENTRY
NtGdiDdDDIUpdateOverlay(
_In_ const D3DKMT_UPDATEOVERLAY* unnamedParam1);
__kernel_entry
W32KAPI
NTSTATUS
WINAPI
NtGdiDdDDIUnlock(
_In_ const D3DKMT_UNLOCK* unnamedParam1);
__kernel_entry
W32KAPI
NTSTATUS
APIENTRY
NtGdiDdDDIDestroyAllocation(
_In_ const D3DKMT_DESTROYALLOCATION* unnamedParam1);
__kernel_entry
W32KAPI
NTSTATUS
APIENTRY
NtGdiDdDDIDestroyContext(
_In_ const D3DKMT_DESTROYCONTEXT* unnamedParam1);
__kernel_entry
W32KAPI
NTSTATUS
APIENTRY
NtGdiDdDDIDestroyDevice(
_In_ const D3DKMT_DESTROYDEVICE* unnamedParam1);
__kernel_entry
W32KAPI
NTSTATUS
APIENTRY
NtGdiDdDDIDestroyOverlay(
_In_ const D3DKMT_DESTROYOVERLAY* unnamedParam1);
__kernel_entry
W32KAPI
NTSTATUS
APIENTRY
NtGdiDdDDIDestroySynchronizationObject(
_In_ const D3DKMT_DESTROYSYNCHRONIZATIONOBJECT* unnamedParam1);
__kernel_entry
W32KAPI
NTSTATUS
APIENTRY
NtGdiDdDDIEscape(
_In_ const D3DKMT_ESCAPE* unnamedParam1);
__kernel_entry
W32KAPI
NTSTATUS
APIENTRY
NtGdiDdDDIFlipOverlay(
_In_ const D3DKMT_FLIPOVERLAY* unnamedParam1);
__kernel_entry
W32KAPI
NTSTATUS
APIENTRY
NtGdiDdDDIGetContextSchedulingPriority(
_Inout_ D3DKMT_GETCONTEXTSCHEDULINGPRIORITY* unnamedParam1);
__kernel_entry
W32KAPI
NTSTATUS
APIENTRY
NtGdiDdDDIGetDeviceState(
_Inout_ D3DKMT_GETDEVICESTATE* unnamedParam1);
__kernel_entry
W32KAPI
NTSTATUS
APIENTRY
NtGdiDdDDIGetDisplayModeList(
_Inout_ D3DKMT_GETDISPLAYMODELIST* unnamedParam1);
__kernel_entry
W32KAPI
NTSTATUS
APIENTRY
NtGdiDdDDIGetMultisampleMethodList(
_Inout_ D3DKMT_GETMULTISAMPLEMETHODLIST* unnamedParam1);
__kernel_entry
W32KAPI
NTSTATUS
APIENTRY
NtGdiDdDDIGetPresentHistory(
_Inout_ D3DKMT_GETPRESENTHISTORY* unnamedParam1);
__kernel_entry
W32KAPI
NTSTATUS
APIENTRY
NtGdiDdDDIGetProcessSchedulingPriorityClass(
_In_ HANDLE unnamedParam1,
_Out_ D3DKMT_SCHEDULINGPRIORITYCLASS *unnamedParam2);
__kernel_entry
W32KAPI
NTSTATUS
APIENTRY
NtGdiDdDDIGetRuntimeData(
_In_ const D3DKMT_GETRUNTIMEDATA* unnamedParam1);
__kernel_entry
W32KAPI
NTSTATUS
APIENTRY
NtGdiDdDDIGetScanLine(
_In_ D3DKMT_GETSCANLINE* unnamedParam1);
__kernel_entry
W32KAPI
NTSTATUS
APIENTRY
NtGdiDdDDIGetSharedPrimaryHandle(
_Inout_ D3DKMT_GETSHAREDPRIMARYHANDLE* unnamedParam1);
__kernel_entry
W32KAPI
NTSTATUS
APIENTRY
NtGdiDdDDIInvalidateActiveVidPn(
_In_ const D3DKMT_INVALIDATEACTIVEVIDPN* unnamedParam1);
__kernel_entry
W32KAPI
NTSTATUS
APIENTRY
NtGdiDdDDILock(
_Inout_ D3DKMT_LOCK* unnamedParam1);
__kernel_entry
W32KAPI
NTSTATUS
APIENTRY
NtGdiDdDDIOpenAdapterFromDeviceName(
_Inout_ D3DKMT_OPENADAPTERFROMDEVICENAME* unnamedParam1);
__kernel_entry
W32KAPI
NTSTATUS
APIENTRY
NtGdiDdDDIOpenAdapterFromGdiDisplayName(
_Inout_ D3DKMT_OPENADAPTERFROMGDIDISPLAYNAME* unnamedParam1);
__kernel_entry
W32KAPI
NTSTATUS
APIENTRY
NtGdiDdDDIOpenAdapterFromHdc(
_Inout_ D3DKMT_OPENADAPTERFROMHDC* unnamedParam1);
__kernel_entry
W32KAPI
NTSTATUS
APIENTRY
NtGdiDdDDIOpenResource(
_Inout_ D3DKMT_OPENRESOURCE* unnamedParam1);
__kernel_entry
W32KAPI
NTSTATUS
APIENTRY
NtGdiDdDDIPollDisplayChildren(
_In_ const D3DKMT_POLLDISPLAYCHILDREN* unnamedParam1);
__kernel_entry
W32KAPI
NTSTATUS
APIENTRY
NtGdiDdDDIPresent(
_In_ D3DKMT_PRESENT* unnamedParam1);
__kernel_entry
W32KAPI
NTSTATUS
APIENTRY
NtGdiDdDDIQueryAdapterInfo(
_Inout_ const D3DKMT_QUERYADAPTERINFO* unnamedParam1);
__kernel_entry
W32KAPI
NTSTATUS
APIENTRY
NtGdiDdDDIQueryAllocationResidency(
_In_ const D3DKMT_QUERYALLOCATIONRESIDENCY* unnamedParam1);
__kernel_entry
W32KAPI
NTSTATUS
APIENTRY
NtGdiDdDDIQueryResourceInfo(
_Inout_ D3DKMT_QUERYRESOURCEINFO* unnamedParam1);
__kernel_entry
W32KAPI
NTSTATUS
APIENTRY
NtGdiDdDDIQueryStatistics(
_Inout_ const D3DKMT_QUERYSTATISTICS* unnamedParam1);
__kernel_entry
W32KAPI
NTSTATUS
APIENTRY
NtGdiDdDDIReleaseProcessVidPnSourceOwners(
_In_ HANDLE unnamedParam1);
__kernel_entry
W32KAPI
NTSTATUS
APIENTRY
NtGdiDdDDIRender(
_In_ D3DKMT_RENDER* unnamedParam1);
__kernel_entry
W32KAPI
NTSTATUS
APIENTRY
NtGdiDdDDISetAllocationPriority(
_In_ const D3DKMT_SETALLOCATIONPRIORITY* unnamedParam1);
__kernel_entry
W32KAPI
NTSTATUS
APIENTRY
NtGdiDdDDISetContextSchedulingPriority(
_In_ const D3DKMT_SETCONTEXTSCHEDULINGPRIORITY* unnamedParam1);
__kernel_entry
W32KAPI
NTSTATUS
APIENTRY
NtGdiDdDDISetDisplayMode(
_In_ const D3DKMT_SETDISPLAYMODE* unnamedParam1);
__kernel_entry
W32KAPI
NTSTATUS
APIENTRY
NtGdiDdDDISetDisplayPrivateDriverFormat(
_In_ const D3DKMT_SETDISPLAYPRIVATEDRIVERFORMAT* unnamedParam1);
__kernel_entry
W32KAPI
NTSTATUS
APIENTRY
NtGdiDdDDISetGammaRamp(
_In_ const D3DKMT_SETGAMMARAMP* unnamedParam1);
__kernel_entry
W32KAPI
NTSTATUS
APIENTRY
NtGdiDdDDISetProcessSchedulingPriorityClass(
_In_ HANDLE unnamedParam1,
_In_ D3DKMT_SCHEDULINGPRIORITYCLASS unnamedParam2);
__kernel_entry
W32KAPI
NTSTATUS
APIENTRY
NtGdiDdDDISetQueuedLimit(
_Inout_ const D3DKMT_SETQUEUEDLIMIT* unnamedParam1);
__kernel_entry
W32KAPI
NTSTATUS
APIENTRY
NtGdiDdDDISetVidPnSourceOwner(
_In_ const D3DKMT_SETVIDPNSOURCEOWNER* unnamedParam1);
__kernel_entry
W32KAPI
NTSTATUS
APIENTRY
NtGdiDdDDISharedPrimaryLockNotification(
_In_ const D3DKMT_SHAREDPRIMARYLOCKNOTIFICATION* unnamedParam1);
__kernel_entry
W32KAPI
NTSTATUS
APIENTRY
NtGdiDdDDISharedPrimaryUnLockNotification(
_In_ const D3DKMT_SHAREDPRIMARYUNLOCKNOTIFICATION* unnamedParam1);
__kernel_entry
W32KAPI
NTSTATUS
APIENTRY
NtGdiDdDDISignalSynchronizationObject(
_In_ const D3DKMT_SIGNALSYNCHRONIZATIONOBJECT* unnamedParam1);
__kernel_entry
W32KAPI
NTSTATUS
APIENTRY
NtGdiDdDDIWaitForSynchronizationObject(
_In_ const D3DKMT_WAITFORSYNCHRONIZATIONOBJECT* unnamedParam1);
#endif /* _NTGDI_ */

View file

@ -0,0 +1,410 @@
/*
* PROJECT: ReactOS Display Driver Model
* LICENSE: MIT (https://spdx.org/licenses/MIT)
* PURPOSE: Dxgkrnl callbacks header
* COPYRIGHT: Copyright 2023 Justin Miller <justin.miller@reactos.org>
*/
#pragma once
#include <d3dkmddi.h>
/*
* Every structure in here is shared across two or more modules and doesn't currently
* match a single Windows version/update.
*
* These structures DO have variants in Windows, I just would like to track what
* we don't match 1:1 yet. Or haven't bother attempting to do so.
*/
/* REACTOS_WIN32K_DXGKRNL_INTERFACE function Pointers: */
typedef
NTSTATUS
DXGADAPTER_CREATEALLOCATION(_Inout_ D3DKMT_CREATEALLOCATION* unnamedParam1);
typedef DXGADAPTER_CREATEALLOCATION *PDXGADAPTER_CREATEALLOCATION;
typedef
NTSTATUS
DXGADAPTER_CHECKMONITORPOWERSTATE(_In_ const D3DKMT_CHECKMONITORPOWERSTATE* unnamedParam1);
typedef DXGADAPTER_CHECKMONITORPOWERSTATE *PDXGADAPTER_CHECKMONITORPOWERSTATE;
typedef
NTSTATUS
DXGADAPTER_CHECKOCCLUSION(_In_ const D3DKMT_CHECKOCCLUSION* unnamedParam1);
typedef DXGADAPTER_CHECKOCCLUSION *PDXGADAPTER_CHECKOCCLUSION;
typedef
NTSTATUS
DXGADAPTER_CLOSEADAPTER(_In_ const D3DKMT_CLOSEADAPTER* unnamedParam1);
typedef DXGADAPTER_CLOSEADAPTER *PDXGADAPTER_CLOSEADAPTER;
typedef
NTSTATUS
DXGADAPTER_CREATECONTEXT(_Inout_ const D3DKMT_CREATECONTEXT* unnamedParam1);
typedef DXGADAPTER_CREATECONTEXT *PDXGADAPTER_CREATECONTEXT;
typedef
NTSTATUS
DXGADAPTER_CREATEDEVICE(_Inout_ const D3DKMT_CREATEDEVICE* unnamedParam1);
typedef DXGADAPTER_CREATEDEVICE *PDXGADAPTER_CREATEDEVICE;
typedef
NTSTATUS
DXGADAPTER_CREATEOVERLAY(_Inout_ const D3DKMT_CREATEOVERLAY* unnamedParam1);
typedef DXGADAPTER_CREATEOVERLAY *PDXGADAPTER_CREATEOVERLAY;
typedef
NTSTATUS
DXGADAPTER_CREATESYNCHRONIZATIONOBJECT(_Inout_ const D3DKMT_CREATESYNCHRONIZATIONOBJECT* unnamedParam1);
typedef DXGADAPTER_CREATESYNCHRONIZATIONOBJECT *PDXGADAPTER_CREATESYNCHRONIZATIONOBJECT;
typedef
NTSTATUS
DXGADAPTER_DESTROYALLOCATION(_In_ const D3DKMT_DESTROYALLOCATION* unnamedParam1);
typedef DXGADAPTER_DESTROYALLOCATION *PDXGADAPTER_DESTROYALLOCATION;
typedef
NTSTATUS
DXGADAPTER_DESTROYCONTEXT(_In_ const D3DKMT_DESTROYCONTEXT* unnamedParam1);
typedef DXGADAPTER_DESTROYCONTEXT *PDXGADAPTER_DESTROYCONTEXT;
typedef
NTSTATUS
DXGADAPTER_DESTROYDEVICE(_In_ const D3DKMT_DESTROYDEVICE* unnamedParam1);
typedef DXGADAPTER_DESTROYDEVICE *PDXGADAPTER_DESTROYDEVICE;
typedef
NTSTATUS
DXGADAPTER_DESTROYOVERLAY(_In_ const D3DKMT_DESTROYOVERLAY* unnamedParam1);
typedef DXGADAPTER_DESTROYOVERLAY *PDXGADAPTER_DESTROYOVERLAY;
typedef
NTSTATUS
DXGADAPTER_DESTROYSYNCHRONIZATIONOBJECT(_In_ const D3DKMT_DESTROYSYNCHRONIZATIONOBJECT* unnamedParam1);
typedef DXGADAPTER_DESTROYSYNCHRONIZATIONOBJECT *PDXGADAPTER_DESTROYSYNCHRONIZATIONOBJECT;
typedef
NTSTATUS
DXGADAPTER_ESCAPE(_In_ const D3DKMT_ESCAPE* unnamedParam1);
typedef DXGADAPTER_ESCAPE *PDXGADAPTER_ESCAPE;
typedef
NTSTATUS
DXGADAPTER_FLIPOVERLAY(_In_ const D3DKMT_FLIPOVERLAY* unnamedParam1);
typedef DXGADAPTER_FLIPOVERLAY *PDXGADAPTER_FLIPOVERLAY;
typedef
NTSTATUS
DXGADAPTER_GETCONTEXTSCHEDULINGPRIORITY(_Inout_ const D3DKMT_GETCONTEXTSCHEDULINGPRIORITY* unnamedParam1);
typedef DXGADAPTER_GETCONTEXTSCHEDULINGPRIORITY *PDXGADAPTER_GETCONTEXTSCHEDULINGPRIORITY;
typedef
NTSTATUS
DXGADAPTER_GETDEVICESTATE(_Inout_ D3DKMT_GETDEVICESTATE* unnamedParam1);
typedef DXGADAPTER_GETDEVICESTATE *PDXGADAPTER_GETDEVICESTATE;
typedef
NTSTATUS
DXGADAPTER_GETDISPLAYMODELIST(_Inout_ D3DKMT_GETDISPLAYMODELIST* unnamedParam1);
typedef DXGADAPTER_GETDISPLAYMODELIST *PDXGADAPTER_GETDISPLAYMODELIST;
typedef
NTSTATUS
DXGADAPTER_GETMULTISAMPLEMETHODLIST(_Inout_ D3DKMT_GETMULTISAMPLEMETHODLIST* unnamedParam1);
typedef DXGADAPTER_GETMULTISAMPLEMETHODLIST *PDXGADAPTER_GETMULTISAMPLEMETHODLIST;
typedef
NTSTATUS
DXGADAPTER_GETRUNTIMEDATA(_Inout_ const D3DKMT_GETRUNTIMEDATA* unnamedParam1);
typedef DXGADAPTER_GETRUNTIMEDATA *PDXGADAPTER_GETRUNTIMEDATA;
typedef
NTSTATUS
DXGADAPTER_GETSCANLINE(_Inout_ D3DKMT_GETSCANLINE* unnamedParam1);
typedef DXGADAPTER_GETSCANLINE *PDXGADAPTER_GETSCANLINE;
typedef
NTSTATUS
DXGADAPTER_SIGNALSYNCHRONIZATIONOBJECT(_In_ const D3DKMT_SIGNALSYNCHRONIZATIONOBJECT* unnamedParam1);
typedef DXGADAPTER_SIGNALSYNCHRONIZATIONOBJECT *PDXGADAPTER_SIGNALSYNCHRONIZATIONOBJECT;
typedef
NTSTATUS
DXGADAPTER_WAITFORVERTICALBLANKEVENT(_In_ const D3DKMT_WAITFORVERTICALBLANKEVENT* unnamedParam1);
typedef DXGADAPTER_WAITFORVERTICALBLANKEVENT *PDXGADAPTER_WAITFORVERTICALBLANKEVENT;
typedef
NTSTATUS
DXGADAPTER_WAITFORSYNCHRONIZATIONOBJECT(_In_ const D3DKMT_WAITFORSYNCHRONIZATIONOBJECT* unnamedParam1);
typedef DXGADAPTER_WAITFORSYNCHRONIZATIONOBJECT *PDXGADAPTER_WAITFORSYNCHRONIZATIONOBJECT;
typedef
NTSTATUS
DXGADAPTER_SETVIDPNSOURCEOWNER(_In_ const D3DKMT_SETVIDPNSOURCEOWNER* unnamedParam1);
typedef DXGADAPTER_SETVIDPNSOURCEOWNER *PDXGADAPTER_SETVIDPNSOURCEOWNER;
typedef
NTSTATUS
DXGADAPTER_WAITFORIDLE(_In_ const D3DKMT_WAITFORIDLE* unnamedParam1);
typedef DXGADAPTER_WAITFORIDLE *PDXGADAPTER_WAITFORIDLE;
typedef
NTSTATUS
DXGADAPTER_UPDATEOVERLAY(_In_ const D3DKMT_UPDATEOVERLAY* unnamedParam1);
typedef DXGADAPTER_UPDATEOVERLAY *PDXGADAPTER_UPDATEOVERLAY;
typedef
NTSTATUS
DXGADAPTER_SETQUEUEDLIMIT(_In_ const D3DKMT_SETQUEUEDLIMIT* unnamedParam1);
typedef DXGADAPTER_SETQUEUEDLIMIT *PDXGADAPTER_SETQUEUEDLIMIT;
typedef
NTSTATUS
DXGADAPTER_SETGAMMARAMP(_In_ const D3DKMT_SETGAMMARAMP* unnamedParam1);
typedef DXGADAPTER_SETGAMMARAMP *PDXGADAPTER_SETGAMMARAMP;
typedef
NTSTATUS
DXGADAPTER_SETDISPLAYMODE(_In_ const D3DKMT_SETDISPLAYMODE* unnamedParam1);
typedef DXGADAPTER_SETDISPLAYMODE *PDXGADAPTER_SETDISPLAYMODE;
typedef
NTSTATUS
DXGADAPTER_SETDISPLAYPRIVATEDRIVERFORMAT(_In_ const D3DKMT_SETDISPLAYPRIVATEDRIVERFORMAT* unnamedParam1);
typedef DXGADAPTER_SETDISPLAYPRIVATEDRIVERFORMAT *PDXGADAPTER_SETDISPLAYPRIVATEDRIVERFORMAT;
typedef
NTSTATUS
DXGADAPTER_SETGAMMARAMP(_In_ const D3DKMT_SETGAMMARAMP* unnamedParam1);
typedef DXGADAPTER_SETGAMMARAMP *PDXGADAPTER_SETGAMMARAMP;
typedef
NTSTATUS
DXGADAPTER_SETQUEUEDLIMIT(_In_ const D3DKMT_SETQUEUEDLIMIT* unnamedParam1);
typedef DXGADAPTER_SETQUEUEDLIMIT *PDXGADAPTER_SETQUEUEDLIMIT;
typedef
NTSTATUS
DXGADAPTER_SETVIDPNSOURCEOWNER(_In_ const D3DKMT_SETVIDPNSOURCEOWNER* unnamedParam1);
typedef DXGADAPTER_SETVIDPNSOURCEOWNER *PDXGADAPTER_SETVIDPNSOURCEOWNER;
typedef
NTSTATUS
DXGADAPTER_UNLOCK(_In_ const D3DKMT_UNLOCK* unnamedParam1);
typedef DXGADAPTER_UNLOCK *PDXGADAPTER_UNLOCK;
typedef
NTSTATUS
DXGADAPTER_UPDATEOVERLAY(_In_ const D3DKMT_UPDATEOVERLAY* unnamedParam1);
typedef DXGADAPTER_UPDATEOVERLAY *PDXGADAPTER_UPDATEOVERLAY;
typedef
NTSTATUS
DXGADAPTER_WAITFORIDLE(_In_ const D3DKMT_WAITFORIDLE* unnamedParam1);
typedef DXGADAPTER_WAITFORIDLE *PDXGADAPTER_WAITFORIDLE;
typedef
NTSTATUS
DXGADAPTER_WAITFORSYNCHRONIZATIONOBJECT(_In_ const D3DKMT_WAITFORSYNCHRONIZATIONOBJECT* unnamedParam1);
typedef DXGADAPTER_WAITFORSYNCHRONIZATIONOBJECT *PDXGADAPTER_WAITFORSYNCHRONIZATIONOBJECT;
typedef
NTSTATUS
DXGADAPTER_WAITFORVERTICALBLANKEVENT(_In_ const D3DKMT_WAITFORVERTICALBLANKEVENT* unnamedParam1);
typedef DXGADAPTER_WAITFORVERTICALBLANKEVENT *PDXGADAPTER_WAITFORVERTICALBLANKEVENT;
typedef
NTSTATUS
DXGADAPTER_SIGNALSYNCHRONIZATIONOBJECT(_In_ const D3DKMT_SIGNALSYNCHRONIZATIONOBJECT* unnamedParam1);
typedef DXGADAPTER_SIGNALSYNCHRONIZATIONOBJECT *PDXGADAPTER_SIGNALSYNCHRONIZATIONOBJECT;
typedef
NTSTATUS
DXGADAPTER_QUERYRESOURCEINFO(_Inout_ D3DKMT_QUERYRESOURCEINFO* unnamedParam1);
typedef DXGADAPTER_QUERYRESOURCEINFO *PDXGADAPTER_QUERYRESOURCEINFO;
typedef
NTSTATUS
DXGADAPTER_GETPRESENTHISTORY(_Inout_ D3DKMT_GETPRESENTHISTORY* unnamedParam1);
typedef DXGADAPTER_GETPRESENTHISTORY *PDXGADAPTER_GETPRESENTHISTORY;
typedef
NTSTATUS
DXGADAPTER_SETALLOCATIONPRIORITY(_In_ const D3DKMT_SETALLOCATIONPRIORITY* unnamedParam1);
typedef DXGADAPTER_SETALLOCATIONPRIORITY *PDXGADAPTER_SETALLOCATIONPRIORITY;
typedef
NTSTATUS
DXGADAPTER_INVALIDATEACTIVEVIDPN(_In_ const D3DKMT_INVALIDATEACTIVEVIDPN* unnamedParam1);
typedef DXGADAPTER_INVALIDATEACTIVEVIDPN *PDXGADAPTER_INVALIDATEACTIVEVIDPN;
typedef
NTSTATUS
DXGADAPTER_GETSHAREDPRIMARYHANDLE(_In_ D3DKMT_GETSHAREDPRIMARYHANDLE* unnamedParam1);
typedef DXGADAPTER_GETSHAREDPRIMARYHANDLE *PDXGADAPTER_GETSHAREDPRIMARYHANDLE;
typedef
NTSTATUS
DXGADAPTER_LOCK(_In_ D3DKMT_LOCK* unnamedParam1);
typedef DXGADAPTER_LOCK *PDXGADAPTER_LOCK;
typedef
NTSTATUS
DXGADAPTER_POLLDISPLAYCHILDREN(_In_ const D3DKMT_POLLDISPLAYCHILDREN* unnamedParam1);
typedef DXGADAPTER_POLLDISPLAYCHILDREN *PDXGADAPTER_POLLDISPLAYCHILDREN;
typedef
NTSTATUS
DXGADAPTER_OPENRESOURCE(_Inout_ D3DKMT_OPENRESOURCE* unnamedParam1);
typedef DXGADAPTER_OPENRESOURCE *PDXGADAPTER_OPENRESOURCE;
typedef
NTSTATUS
DXGADAPTER_PRESENT(_In_ D3DKMT_PRESENT* unnamedParam1);
typedef DXGADAPTER_PRESENT *PDXGADAPTER_PRESENT;
typedef
NTSTATUS
DXGADAPTER_QUERYADAPTERINFO(_Inout_ const D3DKMT_QUERYADAPTERINFO* unnamedParam1);
typedef DXGADAPTER_QUERYADAPTERINFO *PDXGADAPTER_QUERYADAPTERINFO;
typedef
NTSTATUS
DXGADAPTER_QUERYALLOCATIONRESIDENCY(_In_ const D3DKMT_QUERYALLOCATIONRESIDENCY* unnamedParam1);
typedef DXGADAPTER_QUERYALLOCATIONRESIDENCY *PDXGADAPTER_QUERYALLOCATIONRESIDENCY;
typedef
NTSTATUS
DXGADAPTER_QUERYSTATISTICS(_Inout_ const D3DKMT_QUERYSTATISTICS* unnamedParam1);
typedef DXGADAPTER_QUERYSTATISTICS *PDXGADAPTER_QUERYSTATISTICS;
typedef
NTSTATUS
DXGADAPTER_RELEASEPROCESSVIDPNSOURCEOWNERS(_In_ HANDLE unnamedParam1);
typedef DXGADAPTER_RELEASEPROCESSVIDPNSOURCEOWNERS *PDXGADAPTER_RELEASEPROCESSVIDPNSOURCEOWNERS;
typedef
NTSTATUS
DXGADAPTER_RENDER(_In_ D3DKMT_RENDER* unnamedParam1);
typedef DXGADAPTER_RENDER *PDXGADAPTER_RENDER;
typedef
NTSTATUS
DXGADAPTER_SETCONTEXTSCHEDULINGPRIORITY(_In_ const D3DKMT_SETCONTEXTSCHEDULINGPRIORITY* unnamedParam1);
typedef DXGADAPTER_SETCONTEXTSCHEDULINGPRIORITY *PDXGADAPTER_SETCONTEXTSCHEDULINGPRIORITY;
/*
* This structure is the callbacks list that exist between DXGKNRL and Win32k.
* This private interface is undocumented and changes with every Windows update
* that remotely touches WDDM.
*
* Reversing this isn't possible until we can throw our DxgKrnl into vista or above at runtime.
* But this cannot happen without us first supporting watchdog.
*/
typedef struct _REACTOS_WIN32K_DXGKRNL_INTERFACE
{
PDXGADAPTER_PRESENT RxgkIntPfnPresent;
PDXGADAPTER_QUERYADAPTERINFO RxgkIntPfnQueryAdapterInfo;
PDXGADAPTER_QUERYALLOCATIONRESIDENCY RxgkIntPfnQueryAllocationResidency;
PDXGADAPTER_QUERYSTATISTICS RxgkIntPfnQueryStatistics;
PDXGADAPTER_RELEASEPROCESSVIDPNSOURCEOWNERS RxgkIntPfnReleaseProcessVidPnSourceOwners;
PDXGADAPTER_RENDER RxgkIntPfnRender;
PDXGADAPTER_SETCONTEXTSCHEDULINGPRIORITY RxgkIntPfnSetContextSchedulingPriority;
PDXGADAPTER_OPENRESOURCE RxgkIntPfnOpenResource;
PDXGADAPTER_POLLDISPLAYCHILDREN RxgkIntPfnPollDisplayChildren;
PDXGADAPTER_LOCK RxgkIntPfnLock;
PDXGADAPTER_GETSHAREDPRIMARYHANDLE RxgkIntPfnGetSharedPrimaryHandle;
PDXGADAPTER_INVALIDATEACTIVEVIDPN RxgkIntPfnInvalidateActiveVidPn;
PDXGADAPTER_SETALLOCATIONPRIORITY RxgkIntPfnSetAllocationPriority;
PDXGADAPTER_GETPRESENTHISTORY RxgkIntPfnGetPresentHistory;
PDXGADAPTER_QUERYRESOURCEINFO RxgkIntPfnQueryResourceInfo;
PDXGADAPTER_CREATEALLOCATION RxgkIntPfnCreateAllocation;
PDXGADAPTER_CHECKMONITORPOWERSTATE RxgkIntPfnCheckMonitorPowerState;
PDXGADAPTER_CHECKOCCLUSION RxgkIntPfnCheckOcclusion;
PDXGADAPTER_CLOSEADAPTER RxgkIntPfnCloseAdapter;
PDXGADAPTER_CREATECONTEXT RxgkIntPfnCreateContext;
PDXGADAPTER_CREATEDEVICE RxgkIntPfnCreateDevice;
PDXGADAPTER_CREATEOVERLAY RxgkIntPfnCreateOverlay;
PDXGADAPTER_CREATESYNCHRONIZATIONOBJECT RxgkIntPfnCreateSynchronizationObject;
PDXGADAPTER_DESTROYCONTEXT RxgkIntPfnDestroyContext;
PDXGADAPTER_DESTROYDEVICE RxgkIntPfnDestroyDevice;
PDXGADAPTER_DESTROYOVERLAY RxgkIntPfnDestroyOverlay;
PDXGADAPTER_DESTROYSYNCHRONIZATIONOBJECT RxgkIntPfnDestroySynchronizationObject;
PDXGADAPTER_ESCAPE RxgkIntPfnEscape;
PDXGADAPTER_DESTROYALLOCATION RxgkIntPfnDestroyAllocation;
PDXGADAPTER_FLIPOVERLAY RxgkIntPfnFlipOverlay;
PDXGADAPTER_GETCONTEXTSCHEDULINGPRIORITY RxgkIntPfnGetContextSchedulingPriority;
PDXGADAPTER_GETDEVICESTATE RxgkIntPfnGetDeviceState;
PDXGADAPTER_GETDISPLAYMODELIST RxgkIntPfnGetDisplayModeList;
PDXGADAPTER_GETMULTISAMPLEMETHODLIST RxgkIntPfnGetMultisampleMethodList;
PDXGADAPTER_GETRUNTIMEDATA RxgkIntPfnGetRuntimeData;
PDXGADAPTER_GETSCANLINE RxgkIntPfnGetScanLine;
PDXGADAPTER_SIGNALSYNCHRONIZATIONOBJECT RxgkIntPfnSignalSynchronizationObject;
PDXGADAPTER_WAITFORVERTICALBLANKEVENT RxgkIntPfnWaitForVerticalBlankEvent;
PDXGADAPTER_WAITFORSYNCHRONIZATIONOBJECT RxgkIntPfnWaitForSynchronizationObject;
PDXGADAPTER_SETVIDPNSOURCEOWNER RxgkIntPfnSetVidPnSourceOwner;
PDXGADAPTER_WAITFORIDLE RxgkIntPfnWaitForIdle;
PDXGADAPTER_UPDATEOVERLAY RxgkIntPfnUpdateOverlay;
PDXGADAPTER_SETQUEUEDLIMIT RxgkIntPfnSetQueuedLimit;
PDXGADAPTER_SETGAMMARAMP RxgkIntPfnSetGammaRamp;
PDXGADAPTER_SETDISPLAYMODE RxgkIntPfnSetDisplayMode;
PDXGADAPTER_SETDISPLAYPRIVATEDRIVERFORMAT RxgkIntPfnSetDisplayPrivateDriverFormat;
PDXGADAPTER_UNLOCK RxgkIntPfnUnlock;
} REACTOS_WIN32K_DXGKRNL_INTERFACE, *PREACTOS_WIN32K_DXGKRNL_INTERFACE;