1/************************************************************************** 2 * 3 * Copyright 2012-2021 VMware, Inc. 4 * All Rights Reserved. 5 * 6 * Permission is hereby granted, free of charge, to any person obtaining a 7 * copy of this software and associated documentation files (the 8 * "Software"), to deal in the Software without restriction, including 9 * without limitation the rights to use, copy, modify, merge, publish, 10 * distribute, sub license, and/or sell copies of the Software, and to 11 * permit persons to whom the Software is furnished to do so, subject to 12 * the following conditions: 13 * 14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16 * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL 17 * THE COPYRIGHT HOLDERS, AUTHORS AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, 18 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR 19 * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE 20 * USE OR OTHER DEALINGS IN THE SOFTWARE. 21 * 22 * The above copyright notice and this permission notice (including the 23 * next paragraph) shall be included in all copies or substantial portions 24 * of the Software. 25 * 26 **************************************************************************/ 27 28/* 29 * D3DKMT.cpp -- 30 * Implement kernel mode thunks, so that this can be loaded as a 31 * software DLL (D3D_DRIVER_TYPE_SOFTWARE). 32 */ 33 34 35#include "DriverIncludes.h" 36 37#include "Debug.h" 38 39 40#ifndef STATUS_NOT_IMPLEMENTED 41#define STATUS_NOT_IMPLEMENTED 0xC0000002 42#endif 43 44 45EXTERN_C NTSTATUS APIENTRY 46D3DKMTCreateAllocation(D3DKMT_CREATEALLOCATION *pData) 47{ 48 LOG_UNSUPPORTED_ENTRYPOINT(); 49 return STATUS_NOT_IMPLEMENTED; 50} 51 52 53EXTERN_C NTSTATUS APIENTRY 54D3DKMTCreateAllocation2(D3DKMT_CREATEALLOCATION *pData) 55{ 56 LOG_UNSUPPORTED_ENTRYPOINT(); 57 return STATUS_NOT_IMPLEMENTED; 58} 59 60 61EXTERN_C NTSTATUS APIENTRY 62D3DKMTQueryResourceInfo(D3DKMT_QUERYRESOURCEINFO *pData) 63{ 64 LOG_UNSUPPORTED_ENTRYPOINT(); 65 return STATUS_NOT_IMPLEMENTED; 66} 67 68 69EXTERN_C NTSTATUS APIENTRY 70D3DKMTOpenResource(D3DKMT_OPENRESOURCE *pData) 71{ 72 LOG_UNSUPPORTED_ENTRYPOINT(); 73 return STATUS_NOT_IMPLEMENTED; 74} 75 76 77EXTERN_C NTSTATUS APIENTRY 78D3DKMTOpenResource2(D3DKMT_OPENRESOURCE *pData) 79{ 80 LOG_UNSUPPORTED_ENTRYPOINT(); 81 return STATUS_NOT_IMPLEMENTED; 82} 83 84 85EXTERN_C NTSTATUS APIENTRY 86D3DKMTDestroyAllocation(CONST D3DKMT_DESTROYALLOCATION *pData) 87{ 88 LOG_UNSUPPORTED_ENTRYPOINT(); 89 return STATUS_NOT_IMPLEMENTED; 90} 91 92 93EXTERN_C NTSTATUS APIENTRY 94D3DKMTSetAllocationPriority(CONST D3DKMT_SETALLOCATIONPRIORITY *pData) 95{ 96 LOG_UNSUPPORTED_ENTRYPOINT(); 97 return STATUS_NOT_IMPLEMENTED; 98} 99 100 101EXTERN_C NTSTATUS APIENTRY 102D3DKMTQueryAllocationResidency(CONST D3DKMT_QUERYALLOCATIONRESIDENCY *pData) 103{ 104 LOG_UNSUPPORTED_ENTRYPOINT(); 105 return STATUS_NOT_IMPLEMENTED; 106} 107 108 109EXTERN_C NTSTATUS APIENTRY 110D3DKMTCreateDevice(D3DKMT_CREATEDEVICE *pData) 111{ 112 LOG_ENTRYPOINT(); 113 pData->hDevice = 1; 114 return STATUS_SUCCESS; 115} 116 117 118EXTERN_C NTSTATUS APIENTRY 119D3DKMTDestroyDevice(CONST D3DKMT_DESTROYDEVICE *pData) 120{ 121 LOG_ENTRYPOINT(); 122 return STATUS_SUCCESS; 123} 124 125 126EXTERN_C NTSTATUS APIENTRY 127D3DKMTCreateContext(D3DKMT_CREATECONTEXT *pData) 128{ 129 LOG_UNSUPPORTED_ENTRYPOINT(); 130 return STATUS_NOT_IMPLEMENTED; 131} 132 133 134EXTERN_C NTSTATUS APIENTRY 135D3DKMTDestroyContext(CONST D3DKMT_DESTROYCONTEXT *pData) 136{ 137 LOG_UNSUPPORTED_ENTRYPOINT(); 138 return STATUS_NOT_IMPLEMENTED; 139} 140 141 142EXTERN_C NTSTATUS APIENTRY 143D3DKMTCreateSynchronizationObject(D3DKMT_CREATESYNCHRONIZATIONOBJECT *pData) 144{ 145 LOG_UNSUPPORTED_ENTRYPOINT(); 146 return STATUS_NOT_IMPLEMENTED; 147} 148 149 150EXTERN_C NTSTATUS APIENTRY 151D3DKMTCreateSynchronizationObject2(D3DKMT_CREATESYNCHRONIZATIONOBJECT2 *pData) 152{ 153 LOG_UNSUPPORTED_ENTRYPOINT(); 154 return STATUS_NOT_IMPLEMENTED; 155} 156 157 158EXTERN_C NTSTATUS APIENTRY 159D3DKMTOpenSynchronizationObject(D3DKMT_OPENSYNCHRONIZATIONOBJECT *pData) 160{ 161 LOG_UNSUPPORTED_ENTRYPOINT(); 162 return STATUS_NOT_IMPLEMENTED; 163} 164 165 166EXTERN_C NTSTATUS APIENTRY 167D3DKMTDestroySynchronizationObject(CONST D3DKMT_DESTROYSYNCHRONIZATIONOBJECT *pData) 168{ 169 LOG_UNSUPPORTED_ENTRYPOINT(); 170 return STATUS_NOT_IMPLEMENTED; 171} 172 173 174EXTERN_C NTSTATUS APIENTRY 175D3DKMTWaitForSynchronizationObject(CONST D3DKMT_WAITFORSYNCHRONIZATIONOBJECT *pData) 176{ 177 LOG_UNSUPPORTED_ENTRYPOINT(); 178 return STATUS_NOT_IMPLEMENTED; 179} 180 181 182EXTERN_C NTSTATUS APIENTRY 183D3DKMTWaitForSynchronizationObject2(CONST D3DKMT_WAITFORSYNCHRONIZATIONOBJECT2 *pData) 184{ 185 LOG_UNSUPPORTED_ENTRYPOINT(); 186 return STATUS_NOT_IMPLEMENTED; 187} 188 189 190EXTERN_C NTSTATUS APIENTRY 191D3DKMTSignalSynchronizationObject(CONST D3DKMT_SIGNALSYNCHRONIZATIONOBJECT *pData) 192{ 193 LOG_UNSUPPORTED_ENTRYPOINT(); 194 return STATUS_NOT_IMPLEMENTED; 195} 196 197 198EXTERN_C NTSTATUS APIENTRY 199D3DKMTSignalSynchronizationObject2(CONST D3DKMT_SIGNALSYNCHRONIZATIONOBJECT2 *pData) 200{ 201 LOG_UNSUPPORTED_ENTRYPOINT(); 202 return STATUS_NOT_IMPLEMENTED; 203} 204 205 206EXTERN_C NTSTATUS APIENTRY 207D3DKMTLock(D3DKMT_LOCK *pData) 208{ 209 LOG_UNSUPPORTED_ENTRYPOINT(); 210 return STATUS_NOT_IMPLEMENTED; 211} 212 213 214EXTERN_C NTSTATUS APIENTRY 215D3DKMTUnlock(CONST D3DKMT_UNLOCK *pData) 216{ 217 LOG_UNSUPPORTED_ENTRYPOINT(); 218 return STATUS_NOT_IMPLEMENTED; 219} 220 221 222EXTERN_C NTSTATUS APIENTRY 223D3DKMTGetDisplayModeList(D3DKMT_GETDISPLAYMODELIST *pData) 224{ 225 LOG_UNSUPPORTED_ENTRYPOINT(); 226 return STATUS_NOT_IMPLEMENTED; 227} 228 229 230EXTERN_C NTSTATUS APIENTRY 231D3DKMTSetDisplayMode(CONST D3DKMT_SETDISPLAYMODE *pData) 232{ 233 LOG_UNSUPPORTED_ENTRYPOINT(); 234 return STATUS_NOT_IMPLEMENTED; 235} 236 237 238EXTERN_C NTSTATUS APIENTRY 239D3DKMTGetMultisampleMethodList(D3DKMT_GETMULTISAMPLEMETHODLIST *pData) 240{ 241 LOG_UNSUPPORTED_ENTRYPOINT(); 242 return STATUS_NOT_IMPLEMENTED; 243} 244 245 246EXTERN_C NTSTATUS APIENTRY 247D3DKMTPresent(D3DKMT_PRESENT *pData) 248{ 249 LOG_UNSUPPORTED_ENTRYPOINT(); 250 return STATUS_NOT_IMPLEMENTED; 251} 252 253 254EXTERN_C NTSTATUS APIENTRY 255D3DKMTRender(D3DKMT_RENDER *pData) 256{ 257 LOG_UNSUPPORTED_ENTRYPOINT(); 258 return STATUS_NOT_IMPLEMENTED; 259} 260 261 262EXTERN_C NTSTATUS APIENTRY 263D3DKMTGetRuntimeData(CONST D3DKMT_GETRUNTIMEDATA *pData) 264{ 265 LOG_UNSUPPORTED_ENTRYPOINT(); 266 return STATUS_NOT_IMPLEMENTED; 267} 268 269 270EXTERN_C NTSTATUS APIENTRY 271D3DKMTQueryAdapterInfo(CONST D3DKMT_QUERYADAPTERINFO *pData) 272{ 273 LOG_ENTRYPOINT(); 274 275 switch (pData->Type) { 276 case KMTQAITYPE_UMDRIVERNAME: 277 { 278 D3DKMT_UMDFILENAMEINFO *pResult = 279 (D3DKMT_UMDFILENAMEINFO *)pData->pPrivateDriverData; 280 if (pResult->Version != KMTUMDVERSION_DX10 && 281 pResult->Version != KMTUMDVERSION_DX11) { 282 DebugPrintf("%s: unsupported UMD version (%u)\n", 283 __FUNCTION__, pResult->Version); 284 return STATUS_INVALID_PARAMETER; 285 } 286 HMODULE hModule = 0; 287 BOOL bRet; 288 DWORD dwRet; 289 bRet = GetModuleHandleEx(GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS, 290 (LPCTSTR)D3DKMTQueryAdapterInfo, 291 &hModule); 292 assert(bRet); 293 dwRet = GetModuleFileNameW(hModule, pResult->UmdFileName, MAX_PATH); 294 assert(dwRet); 295 return STATUS_SUCCESS; 296 } 297 break; 298 case KMTQAITYPE_GETSEGMENTSIZE: 299 { 300 D3DKMT_SEGMENTSIZEINFO *pResult = 301 (D3DKMT_SEGMENTSIZEINFO *)pData->pPrivateDriverData; 302 pResult->DedicatedVideoMemorySize = 0; 303 pResult->DedicatedSystemMemorySize = 0; 304 pResult->SharedSystemMemorySize = 3ULL*1024ULL*1024ULL*1024ULL; 305 return STATUS_SUCCESS; 306 } 307 break; 308 case KMTQAITYPE_CHECKDRIVERUPDATESTATUS: 309 { 310 BOOL *pResult = (BOOL *)pData->pPrivateDriverData; 311 *pResult = FALSE; 312 return STATUS_SUCCESS; 313 } 314 case KMTQAITYPE_DRIVERVERSION: 315 { 316 D3DKMT_DRIVERVERSION *pResult = (D3DKMT_DRIVERVERSION *)pData->pPrivateDriverData; 317 *pResult = KMT_DRIVERVERSION_WDDM_1_0; 318 return STATUS_SUCCESS; 319 } 320 case KMTQAITYPE_XBOX: 321 { 322 BOOL *pResult = (BOOL *)pData->pPrivateDriverData; 323 *pResult = FALSE; 324 return STATUS_SUCCESS; 325 } 326 case KMTQAITYPE_PHYSICALADAPTERCOUNT: 327 { 328 UINT *pResult = (UINT *)pData->pPrivateDriverData; 329 *pResult = 1; 330 return STATUS_SUCCESS; 331 } 332 case KMTQAITYPE_PHYSICALADAPTERDEVICEIDS: 333 ZeroMemory(pData->pPrivateDriverData, pData->PrivateDriverDataSize); 334 return STATUS_SUCCESS; 335 default: 336 DebugPrintf("%s: unsupported query type (Type=%u, PrivateDriverDataSize=%u)\n", 337 __FUNCTION__, pData->Type, pData->PrivateDriverDataSize); 338 ZeroMemory(pData->pPrivateDriverData, pData->PrivateDriverDataSize); 339 return STATUS_NOT_IMPLEMENTED; 340 } 341} 342 343 344EXTERN_C NTSTATUS APIENTRY 345D3DKMTOpenAdapterFromHdc(D3DKMT_OPENADAPTERFROMHDC *pData) 346{ 347 LOG_ENTRYPOINT(); 348 pData->hAdapter = 1; 349 pData->AdapterLuid.LowPart = 0; 350 pData->AdapterLuid.HighPart = 0; 351 pData->VidPnSourceId = 1; 352 return STATUS_SUCCESS; 353} 354 355 356EXTERN_C NTSTATUS APIENTRY 357D3DKMTOpenAdapterFromGdiDisplayName(D3DKMT_OPENADAPTERFROMGDIDISPLAYNAME *pData) 358{ 359 LOG_ENTRYPOINT(); 360 pData->hAdapter = 1; 361 pData->AdapterLuid.LowPart = 0; 362 pData->AdapterLuid.HighPart = 0; 363 pData->VidPnSourceId = 1; 364 return STATUS_SUCCESS; 365} 366 367 368EXTERN_C NTSTATUS APIENTRY 369D3DKMTOpenAdapterFromDeviceName(D3DKMT_OPENADAPTERFROMDEVICENAME *pData) 370{ 371 LOG_ENTRYPOINT(); 372 pData->hAdapter = 1; 373 pData->AdapterLuid.LowPart = 0; 374 pData->AdapterLuid.HighPart = 0; 375 return STATUS_SUCCESS; 376} 377 378 379EXTERN_C NTSTATUS APIENTRY 380D3DKMTCloseAdapter(CONST D3DKMT_CLOSEADAPTER *pData) 381{ 382 LOG_ENTRYPOINT(); 383 return STATUS_SUCCESS; 384} 385 386 387EXTERN_C NTSTATUS APIENTRY 388D3DKMTGetSharedPrimaryHandle(D3DKMT_GETSHAREDPRIMARYHANDLE *pData) 389{ 390 LOG_UNSUPPORTED_ENTRYPOINT(); 391 return STATUS_NOT_IMPLEMENTED; 392} 393 394 395EXTERN_C NTSTATUS APIENTRY 396D3DKMTEscape(CONST D3DKMT_ESCAPE *pData) 397{ 398 LOG_UNSUPPORTED_ENTRYPOINT(); 399 return STATUS_NOT_IMPLEMENTED; 400} 401 402 403EXTERN_C NTSTATUS APIENTRY 404D3DKMTSetVidPnSourceOwner(CONST D3DKMT_SETVIDPNSOURCEOWNER *pData) 405{ 406 LOG_UNSUPPORTED_ENTRYPOINT(); 407 return STATUS_NOT_IMPLEMENTED; 408} 409 410 411EXTERN_C NTSTATUS APIENTRY 412D3DKMTSetVidPnSourceOwner1(CONST D3DKMT_SETVIDPNSOURCEOWNER1 *pData) 413{ 414 LOG_UNSUPPORTED_ENTRYPOINT(); 415 return STATUS_NOT_IMPLEMENTED; 416} 417 418 419EXTERN_C NTSTATUS APIENTRY 420D3DKMTGetPresentHistory(D3DKMT_GETPRESENTHISTORY *pData) 421{ 422 LOG_UNSUPPORTED_ENTRYPOINT(); 423 return STATUS_NOT_IMPLEMENTED; 424} 425 426 427EXTERN_C NTSTATUS APIENTRY 428D3DKMTGetPresentQueueEvent(D3DKMT_HANDLE hAdapter, HANDLE *pData) 429{ 430 LOG_UNSUPPORTED_ENTRYPOINT(); 431 return STATUS_NOT_IMPLEMENTED; 432} 433 434 435EXTERN_C NTSTATUS APIENTRY 436D3DKMTCreateOverlay(D3DKMT_CREATEOVERLAY *pData) 437{ 438 LOG_UNSUPPORTED_ENTRYPOINT(); 439 return STATUS_NOT_IMPLEMENTED; 440} 441 442 443EXTERN_C NTSTATUS APIENTRY 444D3DKMTUpdateOverlay(CONST D3DKMT_UPDATEOVERLAY *pData) 445{ 446 LOG_UNSUPPORTED_ENTRYPOINT(); 447 return STATUS_NOT_IMPLEMENTED; 448} 449 450 451EXTERN_C NTSTATUS APIENTRY 452D3DKMTFlipOverlay(CONST D3DKMT_FLIPOVERLAY *pData) 453{ 454 LOG_UNSUPPORTED_ENTRYPOINT(); 455 return STATUS_NOT_IMPLEMENTED; 456} 457 458 459EXTERN_C NTSTATUS APIENTRY 460D3DKMTDestroyOverlay(CONST D3DKMT_DESTROYOVERLAY *pData) 461{ 462 LOG_UNSUPPORTED_ENTRYPOINT(); 463 return STATUS_NOT_IMPLEMENTED; 464} 465 466 467EXTERN_C NTSTATUS APIENTRY 468D3DKMTWaitForVerticalBlankEvent(CONST D3DKMT_WAITFORVERTICALBLANKEVENT *pData) 469{ 470 LOG_ENTRYPOINT(); 471 return STATUS_SUCCESS; 472} 473 474 475EXTERN_C NTSTATUS APIENTRY 476D3DKMTSetGammaRamp(CONST D3DKMT_SETGAMMARAMP *pData) 477{ 478 LOG_UNSUPPORTED_ENTRYPOINT(); 479 return STATUS_NOT_IMPLEMENTED; 480} 481 482 483EXTERN_C NTSTATUS APIENTRY 484D3DKMTGetDeviceState(D3DKMT_GETDEVICESTATE *pData) 485{ 486 LOG_ENTRYPOINT(); 487 switch (pData->StateType) { 488 case D3DKMT_DEVICESTATE_EXECUTION: 489 pData->ExecutionState = D3DKMT_DEVICEEXECUTION_ACTIVE; 490 return STATUS_SUCCESS; 491 case D3DKMT_DEVICESTATE_PRESENT: 492 pData->PresentState.PresentStats.PresentCount = 0; 493 pData->PresentState.PresentStats.PresentRefreshCount = 0; 494 pData->PresentState.PresentStats.SyncRefreshCount = 0; 495 pData->PresentState.PresentStats.SyncQPCTime.QuadPart = 0; 496 pData->PresentState.PresentStats.SyncGPUTime.QuadPart = 0; 497 return STATUS_SUCCESS; 498 case D3DKMT_DEVICESTATE_RESET: 499 pData->ResetState.Value = 0; 500 return STATUS_SUCCESS; 501 default: 502 return STATUS_INVALID_PARAMETER; 503 } 504} 505 506 507EXTERN_C NTSTATUS APIENTRY 508D3DKMTCreateDCFromMemory(D3DKMT_CREATEDCFROMMEMORY *pData) 509{ 510 LOG_UNSUPPORTED_ENTRYPOINT(); 511 return STATUS_NOT_IMPLEMENTED; 512} 513 514 515EXTERN_C NTSTATUS APIENTRY 516D3DKMTDestroyDCFromMemory(CONST D3DKMT_DESTROYDCFROMMEMORY *pData) 517{ 518 LOG_UNSUPPORTED_ENTRYPOINT(); 519 return STATUS_NOT_IMPLEMENTED; 520} 521 522 523EXTERN_C NTSTATUS APIENTRY 524D3DKMTSetContextSchedulingPriority(CONST D3DKMT_SETCONTEXTSCHEDULINGPRIORITY *pData) 525{ 526 LOG_UNSUPPORTED_ENTRYPOINT(); 527 return STATUS_NOT_IMPLEMENTED; 528} 529 530 531EXTERN_C NTSTATUS APIENTRY 532D3DKMTGetContextSchedulingPriority(D3DKMT_GETCONTEXTSCHEDULINGPRIORITY *pData) 533{ 534 LOG_UNSUPPORTED_ENTRYPOINT(); 535 return STATUS_NOT_IMPLEMENTED; 536} 537 538 539EXTERN_C NTSTATUS APIENTRY 540D3DKMTSetProcessSchedulingPriorityClass(HANDLE hProcess, D3DKMT_SCHEDULINGPRIORITYCLASS Priority) 541{ 542 LOG_UNSUPPORTED_ENTRYPOINT(); 543 return STATUS_NOT_IMPLEMENTED; 544} 545 546 547EXTERN_C NTSTATUS APIENTRY 548D3DKMTGetProcessSchedulingPriorityClass(HANDLE hProcess, D3DKMT_SCHEDULINGPRIORITYCLASS *pPriority) 549{ 550 LOG_UNSUPPORTED_ENTRYPOINT(); 551 return STATUS_NOT_IMPLEMENTED; 552} 553 554 555EXTERN_C NTSTATUS APIENTRY 556D3DKMTReleaseProcessVidPnSourceOwners(HANDLE hProcess) 557{ 558 LOG_UNSUPPORTED_ENTRYPOINT(); 559 return STATUS_NOT_IMPLEMENTED; 560} 561 562 563EXTERN_C NTSTATUS APIENTRY 564D3DKMTGetScanLine(D3DKMT_GETSCANLINE *pData) 565{ 566 LOG_UNSUPPORTED_ENTRYPOINT(); 567 return STATUS_NOT_IMPLEMENTED; 568} 569 570 571EXTERN_C NTSTATUS APIENTRY 572D3DKMTChangeSurfacePointer(CONST D3DKMT_CHANGESURFACEPOINTER *pData) 573{ 574 LOG_UNSUPPORTED_ENTRYPOINT(); 575 return STATUS_NOT_IMPLEMENTED; 576} 577 578 579EXTERN_C NTSTATUS APIENTRY 580D3DKMTSetQueuedLimit(CONST D3DKMT_SETQUEUEDLIMIT *pData) 581{ 582 LOG_UNSUPPORTED_ENTRYPOINT(); 583 return STATUS_NOT_IMPLEMENTED; 584} 585 586 587EXTERN_C NTSTATUS APIENTRY 588D3DKMTPollDisplayChildren(CONST D3DKMT_POLLDISPLAYCHILDREN *pData) 589{ 590 LOG_UNSUPPORTED_ENTRYPOINT(); 591 return STATUS_NOT_IMPLEMENTED; 592} 593 594 595EXTERN_C NTSTATUS APIENTRY 596D3DKMTInvalidateActiveVidPn(CONST D3DKMT_INVALIDATEACTIVEVIDPN *pData) 597{ 598 LOG_UNSUPPORTED_ENTRYPOINT(); 599 return STATUS_NOT_IMPLEMENTED; 600} 601 602 603EXTERN_C NTSTATUS APIENTRY 604D3DKMTCheckOcclusion(CONST D3DKMT_CHECKOCCLUSION *pData) 605{ 606 LOG_UNSUPPORTED_ENTRYPOINT(); 607 return STATUS_NOT_IMPLEMENTED; 608} 609 610 611EXTERN_C NTSTATUS APIENTRY 612D3DKMTWaitForIdle(CONST D3DKMT_WAITFORIDLE *pData) 613{ 614 LOG_UNSUPPORTED_ENTRYPOINT(); 615 return STATUS_NOT_IMPLEMENTED; 616} 617 618 619EXTERN_C NTSTATUS APIENTRY 620D3DKMTCheckMonitorPowerState(CONST D3DKMT_CHECKMONITORPOWERSTATE *pData) 621{ 622 LOG_UNSUPPORTED_ENTRYPOINT(); 623 return STATUS_NOT_IMPLEMENTED; 624} 625 626 627EXTERN_C BOOLEAN APIENTRY 628D3DKMTCheckExclusiveOwnership(VOID) 629{ 630 LOG_UNSUPPORTED_ENTRYPOINT(); 631 return FALSE; 632} 633 634 635EXTERN_C NTSTATUS APIENTRY 636D3DKMTCheckVidPnExclusiveOwnership(CONST D3DKMT_CHECKVIDPNEXCLUSIVEOWNERSHIP *pData) 637{ 638 LOG_UNSUPPORTED_ENTRYPOINT(); 639 return STATUS_NOT_IMPLEMENTED; 640} 641 642 643EXTERN_C NTSTATUS APIENTRY 644D3DKMTSetDisplayPrivateDriverFormat(CONST D3DKMT_SETDISPLAYPRIVATEDRIVERFORMAT *pData) 645{ 646 LOG_UNSUPPORTED_ENTRYPOINT(); 647 return STATUS_NOT_IMPLEMENTED; 648} 649 650 651EXTERN_C NTSTATUS APIENTRY 652D3DKMTSharedPrimaryLockNotification(CONST D3DKMT_SHAREDPRIMARYLOCKNOTIFICATION *pData) 653{ 654 LOG_UNSUPPORTED_ENTRYPOINT(); 655 return STATUS_NOT_IMPLEMENTED; 656} 657 658 659EXTERN_C NTSTATUS APIENTRY 660D3DKMTSharedPrimaryUnLockNotification(CONST D3DKMT_SHAREDPRIMARYUNLOCKNOTIFICATION *pData) 661{ 662 LOG_UNSUPPORTED_ENTRYPOINT(); 663 return STATUS_NOT_IMPLEMENTED; 664} 665 666 667EXTERN_C NTSTATUS APIENTRY 668D3DKMTCreateKeyedMutex(D3DKMT_CREATEKEYEDMUTEX *pData) 669{ 670 LOG_UNSUPPORTED_ENTRYPOINT(); 671 return STATUS_NOT_IMPLEMENTED; 672} 673 674 675EXTERN_C NTSTATUS APIENTRY 676D3DKMTOpenKeyedMutex(D3DKMT_OPENKEYEDMUTEX *pData) 677{ 678 LOG_UNSUPPORTED_ENTRYPOINT(); 679 return STATUS_NOT_IMPLEMENTED; 680} 681 682 683EXTERN_C NTSTATUS APIENTRY 684D3DKMTDestroyKeyedMutex(CONST D3DKMT_DESTROYKEYEDMUTEX *pData) 685{ 686 LOG_UNSUPPORTED_ENTRYPOINT(); 687 return STATUS_NOT_IMPLEMENTED; 688} 689 690 691EXTERN_C NTSTATUS APIENTRY 692D3DKMTAcquireKeyedMutex(D3DKMT_ACQUIREKEYEDMUTEX *pData) 693{ 694 LOG_UNSUPPORTED_ENTRYPOINT(); 695 return STATUS_NOT_IMPLEMENTED; 696} 697 698 699EXTERN_C NTSTATUS APIENTRY 700D3DKMTReleaseKeyedMutex(D3DKMT_RELEASEKEYEDMUTEX *pData) 701{ 702 LOG_UNSUPPORTED_ENTRYPOINT(); 703 return STATUS_NOT_IMPLEMENTED; 704} 705 706 707EXTERN_C NTSTATUS APIENTRY 708D3DKMTConfigureSharedResource(CONST D3DKMT_CONFIGURESHAREDRESOURCE *pData) 709{ 710 LOG_UNSUPPORTED_ENTRYPOINT(); 711 return STATUS_NOT_IMPLEMENTED; 712} 713 714 715EXTERN_C NTSTATUS APIENTRY 716D3DKMTGetOverlayState(D3DKMT_GETOVERLAYSTATE *pData) 717{ 718 LOG_UNSUPPORTED_ENTRYPOINT(); 719 return STATUS_NOT_IMPLEMENTED; 720} 721 722 723EXTERN_C NTSTATUS APIENTRY 724D3DKMTCheckSharedResourceAccess(CONST D3DKMT_CHECKSHAREDRESOURCEACCESS *pData) 725{ 726 LOG_UNSUPPORTED_ENTRYPOINT(); 727 return STATUS_NOT_IMPLEMENTED; 728} 729