24#define WIN32_NO_STATUS
31#include "ddk/d3dkmthk.h"
42DEFINE_DEVPROPKEY(DEVPROPKEY_GPU_LUID, 0x60b193cb, 0x5276, 0x4d0f, 0x96, 0xfc, 0xf1, 0x73, 0xab, 0xad, 0x3e, 0xc6, 2);
84 if (!pD3DKMTOpenAdapterFromGdiDisplayName
87 win_skip(
"D3DKMTOpenAdapterFromGdiDisplayName() is unavailable.\n");
92 status = pD3DKMTCloseAdapter(&close_adapter_desc);
96 status = pD3DKMTOpenAdapterFromGdiDisplayName(
NULL);
99 memset(&open_adapter_gdi_desc, 0,
sizeof(open_adapter_gdi_desc));
100 status = pD3DKMTOpenAdapterFromGdiDisplayName(&open_adapter_gdi_desc);
107 status = pD3DKMTOpenAdapterFromGdiDisplayName(&open_adapter_gdi_desc);
116 ok(open_adapter_gdi_desc.
hAdapter,
"Expect not null.\n");
118 "Expect LUID not zero.\n");
121 status = pD3DKMTCloseAdapter(&close_adapter_desc);
136 if (!pD3DKMTOpenAdapterFromHdc)
138 win_skip(
"D3DKMTOpenAdapterFromHdc() is missing.\n");
144 if (0)
status = pD3DKMTOpenAdapterFromHdc(
NULL);
146 memset(&open_adapter_hdc_desc, 0,
sizeof(open_adapter_hdc_desc));
147 status = pD3DKMTOpenAdapterFromHdc(&open_adapter_hdc_desc);
150 win_skip(
"D3DKMTOpenAdapterFromHdc() is not supported.\n");
164 open_adapter_hdc_desc.
hDc =
hdc;
165 status = pD3DKMTOpenAdapterFromHdc(&open_adapter_hdc_desc);
173 status = pD3DKMTCloseAdapter(&close_adapter_desc);
180 open_adapter_hdc_desc.
hDc =
hdc;
181 status = pD3DKMTOpenAdapterFromHdc(&open_adapter_hdc_desc);
184 "Got unexpected return code %#lx.\n",
status);
188 status = pD3DKMTCloseAdapter(&close_adapter_desc);
202 win_skip(
"D3DKMTEnumAdapters2() is unavailable.\n");
211 memset(&enum_adapters_2_desc, 0,
sizeof(enum_adapters_2_desc));
212 status = pD3DKMTEnumAdapters2(&enum_adapters_2_desc);
215 "Got unexpected value %lu.\n", enum_adapters_2_desc.
NumAdapters);
219 ok(!!enum_adapters_2_desc.
pAdapters,
"Expect not null.\n");
222 status = pD3DKMTEnumAdapters2(&enum_adapters_2_desc);
230 "Expect LUID not zero.\n");
233 status = pD3DKMTCloseAdapter(&close_adapter_desc);
239 status = pD3DKMTEnumAdapters2(&enum_adapters_2_desc);
252 win_skip(
"D3DKMTCloseAdapter() is unavailable.\n");
260 memset(&close_adapter_desc, 0,
sizeof(close_adapter_desc));
261 status = pD3DKMTCloseAdapter(&close_adapter_desc);
275 win_skip(
"D3DKMTCreateDevice() is unavailable.\n");
283 memset(&create_device_desc, 0,
sizeof(create_device_desc));
284 status = pD3DKMTCreateDevice(&create_device_desc);
288 status = pD3DKMTOpenAdapterFromGdiDisplayName(&open_adapter_gdi_desc);
293 status = pD3DKMTCreateDevice(&create_device_desc);
295 ok(create_device_desc.
hDevice,
"Expect not null.\n");
304 status = pD3DKMTDestroyDevice(&destroy_device_desc);
308 status = pD3DKMTCloseAdapter(&close_adapter_desc);
319 win_skip(
"D3DKMTDestroyDevice() is unavailable.\n");
327 memset(&destroy_device_desc, 0,
sizeof(destroy_device_desc));
328 status = pD3DKMTDestroyDevice(&destroy_device_desc);
335 static const DWORD wait_step = 100;
348 static const struct test_data1
423 static const struct test_data2
456 skip(
"D3DKMTCheckVidPnExclusiveOwnership() is unavailable.\n");
461 status = pD3DKMTCheckVidPnExclusiveOwnership(
NULL);
464 memset(&check_owner_desc, 0,
sizeof(check_owner_desc));
465 status = pD3DKMTCheckVidPnExclusiveOwnership(&check_owner_desc);
470 status = pD3DKMTOpenAdapterFromGdiDisplayName(&open_adapter_gdi_desc);
473 memset(&create_device_desc, 0,
sizeof(create_device_desc));
475 status = pD3DKMTCreateDevice(&create_device_desc);
483 if (tests1[
i].owner_type != -1)
485 owner_type = tests1[
i].owner_type;
486 set_owner_desc.
pType = &owner_type;
496 status = pD3DKMTSetVidPnSourceOwner(&set_owner_desc);
497 ok(
status == tests1[
i].expected_set_status ||
502 "Got unexpected return code %#lx at test %d.\n",
status,
i);
504 status = pD3DKMTCheckVidPnExclusiveOwnership(&check_owner_desc);
513 total_time += wait_step;
514 status = pD3DKMTCheckVidPnExclusiveOwnership(&check_owner_desc);
517 ok(
status == tests1[
i].expected_check_status
521 "Got unexpected return code %#lx at test %d.\n",
status,
i);
525 memset(&create_device_desc2, 0,
sizeof(create_device_desc2));
527 status = pD3DKMTCreateDevice(&create_device_desc2);
533 set_owner_desc.
pType = &owner_type;
536 status = pD3DKMTSetVidPnSourceOwner(&set_owner_desc);
538 status = pD3DKMTCheckVidPnExclusiveOwnership(&check_owner_desc);
546 status = pD3DKMTSetVidPnSourceOwner(&set_owner_desc);
548 status = pD3DKMTCheckVidPnExclusiveOwnership(&check_owner_desc);
557 status = pD3DKMTSetVidPnSourceOwner(&set_owner_desc);
559 status = pD3DKMTCheckVidPnExclusiveOwnership(&check_owner_desc);
567 if (tests2[
i].set_owner_type1 != -1)
570 owner_type = tests2[
i].set_owner_type1;
571 set_owner_desc.
pType = &owner_type;
578 status = pD3DKMTSetVidPnSourceOwner(&set_owner_desc);
579 ok(
status == tests2[
i].expected_set_status1
582 "Got unexpected return code %#lx at test %d.\n",
status,
i);
585 if (tests2[
i].set_owner_type2 != -1)
588 owner_type = tests2[
i].set_owner_type2;
589 set_owner_desc.
pType = &owner_type;
592 status = pD3DKMTSetVidPnSourceOwner(&set_owner_desc);
593 ok(
status == tests2[
i].expected_set_status2
598 "Got unexpected return code %#lx at test %d.\n",
status,
i);
601 status = pD3DKMTCheckVidPnExclusiveOwnership(&check_owner_desc);
608 total_time += wait_step;
609 status = pD3DKMTCheckVidPnExclusiveOwnership(&check_owner_desc);
612 ok(
status == tests2[
i].expected_check_status
616 "Got unexpected return code %#lx at test %d.\n",
status,
i);
619 if (tests2[
i].set_owner_type1 != -1)
625 status = pD3DKMTSetVidPnSourceOwner(&set_owner_desc);
630 if (tests2[
i].set_owner_type2 != -1)
636 status = pD3DKMTSetVidPnSourceOwner(&set_owner_desc);
644 set_owner_desc.
pType = &owner_type;
647 status = pD3DKMTSetVidPnSourceOwner(&set_owner_desc);
651 status = pD3DKMTDestroyDevice(&destroy_device_desc);
656 set_owner_desc.
pType = &owner_type;
659 status = pD3DKMTSetVidPnSourceOwner(&set_owner_desc);
665 status = pD3DKMTDestroyDevice(&destroy_device_desc);
669 status = pD3DKMTCloseAdapter(&close_adapter_desc);
681 skip(
"D3DKMTSetVidPnSourceOwner() is unavailable.\n");
686 status = pD3DKMTSetVidPnSourceOwner(&set_owner_desc);
717 status = pD3DKMTCheckOcclusion(&occlusion_desc);
720 hwnd =
CreateWindowA(
"static",
"static1",
WS_OVERLAPPEDWINDOW |
WS_VISIBLE, 0, 0, 200, 200, 0, 0, 0, 0);
721 ok(
hwnd !=
NULL,
"Failed to create window.\n");
724 status = pD3DKMTCheckOcclusion(&occlusion_desc);
730 status = pD3DKMTCheckOcclusion(&occlusion_desc);
738 status = pD3DKMTCheckOcclusion(&occlusion_desc);
743 hwnd2 =
CreateWindowA(
"static",
"static2",
WS_OVERLAPPEDWINDOW |
WS_VISIBLE, 100, 100, 200, 200, 0, 0, 0, 0);
744 ok(hwnd2 !=
NULL,
"Failed to create window.\n");
747 status = pD3DKMTCheckOcclusion(&occlusion_desc);
750 occlusion_desc.
hWnd = hwnd2;
751 status = pD3DKMTCheckOcclusion(&occlusion_desc);
755 if (pDwmEnableComposition)
758 ok(
hr ==
S_OK,
"Failed to disable composition.\n");
761 status = pD3DKMTCheckOcclusion(&occlusion_desc);
765 occlusion_desc.
hWnd = hwnd2;
766 status = pD3DKMTCheckOcclusion(&occlusion_desc);
771 status = pD3DKMTCheckOcclusion(&occlusion_desc);
778 status = pD3DKMTCheckOcclusion(&occlusion_desc);
783 ok(
hr ==
S_OK,
"Failed to enable composition.\n");
786 skip(
"Skip testing composition.\n");
789 status = pD3DKMTOpenAdapterFromGdiDisplayName(&open_adapter_gdi_desc);
792 memset(&create_device_desc, 0,
sizeof(create_device_desc));
794 status = pD3DKMTCreateDevice(&create_device_desc);
799 status = pD3DKMTCheckVidPnExclusiveOwnership(&check_owner_desc);
807 set_owner_desc.
pType = &owner_type;
810 status = pD3DKMTSetVidPnSourceOwner(&set_owner_desc);
822 status = pD3DKMTCheckOcclusion(&occlusion_desc);
823 ok(
status == expected_occlusion,
"Got unexpected return code %#lx.\n",
status);
828 occlusion_desc.
hWnd = hwnd2;
829 status = pD3DKMTCheckOcclusion(&occlusion_desc);
830 ok(
status == expected_occlusion,
"Got unexpected return code %#lx.\n",
status);
836 status = pD3DKMTCheckOcclusion(&occlusion_desc);
837 ok(
status == expected_occlusion,
"Got unexpected return code %#lx.\n",
status);
841 status = pD3DKMTCheckOcclusion(&occlusion_desc);
842 ok(
status == expected_occlusion,
"Got unexpected return code %#lx.\n",
status);
846 status = pD3DKMTCheckVidPnExclusiveOwnership(&check_owner_desc);
854 status = pD3DKMTSetVidPnSourceOwner(&set_owner_desc);
858 status = pD3DKMTCheckOcclusion(&occlusion_desc);
864 status = pD3DKMTCheckVidPnExclusiveOwnership(&check_owner_desc);
869 status = pD3DKMTDestroyDevice(&destroy_device_desc);
873 status = pD3DKMTCloseAdapter(&close_adapter_desc);
878#if (DLL_EXPORT_VERSION >= _WIN32_WINNT_VISTA)
899 iface_data->
cbSize =
sizeof(*iface_data);
906 sizeof(iface_detail_buffer),
NULL, &device_data );
914 ret = SetupDiGetDevicePropertyW(
set, &device_data, &DEVPROPKEY_GPU_LUID, &
type,
915 (
BYTE *)&luid,
sizeof(luid),
NULL, 0);
926 skip(
"Luid not found.\n");
930 status = pD3DKMTCloseAdapter(&close_adapter_desc);
949 status = pD3DKMTOpenAdapterFromDeviceName(
NULL);
952 win_skip(
"D3DKMTOpenAdapterFromDeviceName() is not supported.\n");
982 if (!pD3DKMTQueryVideoMemoryInfo)
984 win_skip(
"D3DKMTQueryVideoMemoryInfo() is unavailable.\n");
989 ok(
ret,
"Failed to get primary adapter name.\n");
990 status = pD3DKMTOpenAdapterFromGdiDisplayName(&open_adapter_desc);
1002 status = pD3DKMTQueryVideoMemoryInfo(&query_memory_info);
1006 "Unexpected budget %I64u and reservation %I64u.\n", query_memory_info.
Budget,
1009 "Unexpected current usage %I64u.\n", query_memory_info.
CurrentUsage);
1018 status = pD3DKMTQueryVideoMemoryInfo(&query_memory_info);
1025 status = pD3DKMTQueryVideoMemoryInfo(&query_memory_info);
1032 status = pD3DKMTQueryVideoMemoryInfo(&query_memory_info);
1038 status = pD3DKMTQueryVideoMemoryInfo(&query_memory_info);
1044 status = pD3DKMTQueryVideoMemoryInfo(&query_memory_info);
1050 status = pD3DKMTQueryVideoMemoryInfo(&query_memory_info);
1054 status = pD3DKMTCloseAdapter(&close_adapter_desc);
1058#if (DLL_EXPORT_VERSION >= _WIN32_WINNT_VISTA)
1065 WCHAR device_id[256];
1079 iface_data->
cbSize =
sizeof(*iface_data);
1085 sizeof(iface_detail_buffer),
NULL, &device_data );
1088 ret = SetupDiGetDevicePropertyW(
set, &device_data, &DEVPKEY_Device_MatchingDeviceId, &
type,
1089 (
BYTE *)device_id,
sizeof(device_id),
NULL, 0);
1093 ret = SetupDiGetDevicePropertyW(
set, &device_data, &DEVPKEY_Device_BusNumber, &
type,
1095 if (!
wcsicmp(device_id,
L"root\\basicrender") || !
wcsicmp(device_id,
L"root\\basicdisplay"))
1097 ok(!
ret,
"Found Bus Id.\n");
1105 ret = SetupDiGetDevicePropertyW(
set, &device_data, &DEVPKEY_Device_RemovalPolicy, &
type,
1132 pD3DKMTCheckOcclusion = (
void *)
GetProcAddress(gdi32,
"D3DKMTCheckOcclusion");
1133 pD3DKMTCheckVidPnExclusiveOwnership = (
void *)
GetProcAddress(gdi32,
"D3DKMTCheckVidPnExclusiveOwnership");
1134 pD3DKMTCloseAdapter = (
void *)
GetProcAddress(gdi32,
"D3DKMTCloseAdapter");
1135 pD3DKMTCreateDevice = (
void *)
GetProcAddress(gdi32,
"D3DKMTCreateDevice");
1136 pD3DKMTDestroyDevice = (
void *)
GetProcAddress(gdi32,
"D3DKMTDestroyDevice");
1137 pD3DKMTEnumAdapters2 = (
void *)
GetProcAddress(gdi32,
"D3DKMTEnumAdapters2");
1138 pD3DKMTOpenAdapterFromDeviceName = (
void *)
GetProcAddress(gdi32,
"D3DKMTOpenAdapterFromDeviceName");
1139 pD3DKMTOpenAdapterFromGdiDisplayName = (
void *)
GetProcAddress(gdi32,
"D3DKMTOpenAdapterFromGdiDisplayName");
1140 pD3DKMTOpenAdapterFromHdc = (
void *)
GetProcAddress(gdi32,
"D3DKMTOpenAdapterFromHdc");
1141 pD3DKMTSetVidPnSourceOwner = (
void *)
GetProcAddress(gdi32,
"D3DKMTSetVidPnSourceOwner");
1142 pD3DKMTQueryVideoMemoryInfo = (
void *)
GetProcAddress(gdi32,
"D3DKMTQueryVideoMemoryInfo");
1145 pDwmEnableComposition = (
void *)
GetProcAddress(dwmapi,
"DwmEnableComposition");
1156#if (DLL_EXPORT_VERSION >= _WIN32_WINNT_VISTA)
1160#if (DLL_EXPORT_VERSION >= _WIN32_WINNT_VISTA)
#define CM_REMOVAL_POLICY_EXPECT_SURPRISE_REMOVAL
#define CM_REMOVAL_POLICY_EXPECT_ORDERLY_REMOVAL
#define CM_REMOVAL_POLICY_EXPECT_NO_REMOVAL
#define STATUS_INVALID_HANDLE
#define DEFINE_DEVPROPKEY(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8, pid)
#define DEVPROP_TYPE_UINT32
#define DEVPROP_TYPE_STRING
#define GetProcAddress(x, y)
#define INVALID_HANDLE_VALUE
#define GetCurrentProcess()
HMODULE WINAPI DECLSPEC_HOTPATCH GetModuleHandleA(LPCSTR lpModuleName)
HINSTANCE WINAPI DECLSPEC_HOTPATCH LoadLibraryA(LPCSTR lpLibFileName)
HANDLE WINAPI OpenProcess(IN DWORD dwDesiredAccess, IN BOOL bInheritHandle, IN DWORD dwProcessId)
BOOL WINAPI SetupDiEnumDeviceInterfaces(HDEVINFO DeviceInfoSet, PSP_DEVINFO_DATA DeviceInfoData, CONST GUID *InterfaceClassGuid, DWORD MemberIndex, PSP_DEVICE_INTERFACE_DATA DeviceInterfaceData)
HDEVINFO WINAPI SetupDiGetClassDevsW(CONST GUID *class, LPCWSTR enumstr, HWND parent, DWORD flags)
BOOL WINAPI SetupDiGetDeviceInterfaceDetailW(HDEVINFO DeviceInfoSet, PSP_DEVICE_INTERFACE_DATA DeviceInterfaceData, PSP_DEVICE_INTERFACE_DETAIL_DATA_W DeviceInterfaceDetailData, DWORD DeviceInterfaceDetailDataSize, PDWORD RequiredSize, PSP_DEVINFO_DATA DeviceInfoData)
BOOL WINAPI SetupDiDestroyDeviceInfoList(HDEVINFO devinfo)
static const WCHAR device_name[]
#define DWM_EC_ENABLECOMPOSITION
#define DWM_EC_DISABLECOMPOSITION
GLuint GLuint GLsizei GLenum type
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
#define PROCESS_SET_INFORMATION
#define todo_wine_if(is_todo)
void __cdecl void __cdecl void __cdecl void __cdecl void __cdecl void winetest_pop_context(void)
void __cdecl void __cdecl void __cdecl void __cdecl void __cdecl winetest_push_context(const char *fmt,...) __WINE_PRINTF_ATTR(1
static void test_D3DKMTQueryVideoMemoryInfo(void)
static void test_D3DKMTCheckOcclusion(void)
static BOOL get_primary_adapter_name(WCHAR *name)
static void test_D3DKMTOpenAdapterFromDeviceName_deviface(const GUID *devinterface_guid, NTSTATUS expected_status, BOOL todo)
static void test_D3DKMTEnumAdapters2(void)
static void test_D3DKMTOpenAdapterFromGdiDisplayName(void)
static void test_gpu_device_properties_guid(const GUID *devinterface_guid)
static void test_D3DKMTCloseAdapter(void)
static void test_gpu_device_properties(void)
static const WCHAR display1W[]
static void test_D3DKMTOpenAdapterFromDeviceName(void)
static void test_D3DKMTOpenAdapterFromHdc(void)
static void test_D3DKMTCreateDevice(void)
static void test_D3DKMTCheckVidPnExclusiveOwnership(void)
static void test_D3DKMTDestroyDevice(void)
static void test_D3DKMTSetVidPnSourceOwner(void)
struct @1813::@1814 driver
#define STATUS_GRAPHICS_VIDPN_SOURCE_IN_USE
#define STATUS_GRAPHICS_PRESENT_OCCLUDED
#define STATUS_PROCEDURE_NOT_FOUND
#define STATUS_GRAPHICS_PRESENT_UNOCCLUDED
#define WS_OVERLAPPEDWINDOW
#define DIGCF_DEVICEINTERFACE
struct _SP_DEVICE_INTERFACE_DETAIL_DATA_W SP_DEVICE_INTERFACE_DETAIL_DATA_W
#define STATUS_BUFFER_TOO_SMALL
D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId
D3DDDI_PATCHLOCATIONLIST * pPatchLocationList
D3DDDI_ALLOCATIONLIST * pAllocationList
UINT PatchLocationListSize
D3DKMT_ADAPTERINFO * pAdapters
D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId
UINT PhysicalAdapterIndex
D3DKMT_MEMORY_SEGMENT_GROUP MemorySegmentGroup
UINT64 CurrentReservation
UINT64 AvailableForReservation
const D3DKMT_VIDPNSOURCEOWNER_TYPE * pType
const D3DDDI_VIDEO_PRESENT_SOURCE_ID * pVidPnSourceId
WCHAR DevicePath[ANYSIZE_ARRAY]
VOID WINAPI DECLSPEC_HOTPATCH Sleep(IN DWORD dwMilliseconds)
#define STATUS_ACCESS_DENIED
#define STATUS_INVALID_PARAMETER
#define STATUS_UNSUCCESSFUL
BOOL WINAPI EnumDisplayDevicesW(LPCWSTR lpDevice, DWORD iDevNum, PDISPLAY_DEVICEW lpDisplayDevice, DWORD dwFlags)
DWORD WINAPI GetLastError(void)
DWORD WINAPI GetCurrentProcessId(void)
@ D3DKMT_MEMORY_SEGMENT_GROUP_LOCAL
@ D3DKMT_MEMORY_SEGMENT_GROUP_NON_LOCAL
enum _D3DKMT_MEMORY_SEGMENT_GROUP D3DKMT_MEMORY_SEGMENT_GROUP
enum _D3DKMT_VIDPNSOURCEOWNER_TYPE D3DKMT_VIDPNSOURCEOWNER_TYPE
@ D3DKMT_VIDPNSOURCEOWNER_EMULATED
@ D3DKMT_VIDPNSOURCEOWNER_UNOWNED
@ D3DKMT_VIDPNSOURCEOWNER_EXCLUSIVEGDI
@ D3DKMT_VIDPNSOURCEOWNER_EXCLUSIVE
@ D3DKMT_VIDPNSOURCEOWNER_SHARED
#define DISPLAY_DEVICE_PRIMARY_DEVICE
#define DISPLAY_DEVICE_ATTACHED_TO_DESKTOP
BOOL WINAPI DeleteDC(_In_ HDC)
HDC WINAPI CreateDCW(_In_opt_ LPCWSTR pszDriver, _In_opt_ LPCWSTR pszDevice, _In_opt_ LPCWSTR psz, _In_opt_ const DEVMODEW *pdmInit)
int WINAPI ReleaseDC(_In_opt_ HWND, _In_ HDC)
BOOL WINAPI ShowWindow(_In_ HWND, _In_ int)
#define CreateWindowA(a, b, c, d, e, f, g, h, i, j, k)
BOOL WINAPI SetWindowPos(_In_ HWND, _In_opt_ HWND, _In_ int, _In_ int, _In_ int, _In_ int, _In_ UINT)
LONG WINAPI GetWindowLongW(_In_ HWND, _In_ int)
HWND WINAPI GetDesktopWindow(void)
HDC WINAPI GetDC(_In_opt_ HWND)
BOOL WINAPI DestroyWindow(_In_ HWND)
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#define RtlEqualLuid(Luid1, Luid2)