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