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
45 EXTERN_C NTSTATUS APIENTRY
D3DKMTCreateAllocation(D3DKMT_CREATEALLOCATION * pData)46 D3DKMTCreateAllocation(D3DKMT_CREATEALLOCATION *pData)
47 {
48 LOG_UNSUPPORTED_ENTRYPOINT();
49 return STATUS_NOT_IMPLEMENTED;
50 }
51
52
53 EXTERN_C NTSTATUS APIENTRY
D3DKMTCreateAllocation2(D3DKMT_CREATEALLOCATION * pData)54 D3DKMTCreateAllocation2(D3DKMT_CREATEALLOCATION *pData)
55 {
56 LOG_UNSUPPORTED_ENTRYPOINT();
57 return STATUS_NOT_IMPLEMENTED;
58 }
59
60
61 EXTERN_C NTSTATUS APIENTRY
D3DKMTQueryResourceInfo(D3DKMT_QUERYRESOURCEINFO * pData)62 D3DKMTQueryResourceInfo(D3DKMT_QUERYRESOURCEINFO *pData)
63 {
64 LOG_UNSUPPORTED_ENTRYPOINT();
65 return STATUS_NOT_IMPLEMENTED;
66 }
67
68
69 EXTERN_C NTSTATUS APIENTRY
D3DKMTOpenResource(D3DKMT_OPENRESOURCE * pData)70 D3DKMTOpenResource(D3DKMT_OPENRESOURCE *pData)
71 {
72 LOG_UNSUPPORTED_ENTRYPOINT();
73 return STATUS_NOT_IMPLEMENTED;
74 }
75
76
77 EXTERN_C NTSTATUS APIENTRY
D3DKMTOpenResource2(D3DKMT_OPENRESOURCE * pData)78 D3DKMTOpenResource2(D3DKMT_OPENRESOURCE *pData)
79 {
80 LOG_UNSUPPORTED_ENTRYPOINT();
81 return STATUS_NOT_IMPLEMENTED;
82 }
83
84
85 EXTERN_C NTSTATUS APIENTRY
D3DKMTDestroyAllocation(CONST D3DKMT_DESTROYALLOCATION * pData)86 D3DKMTDestroyAllocation(CONST D3DKMT_DESTROYALLOCATION *pData)
87 {
88 LOG_UNSUPPORTED_ENTRYPOINT();
89 return STATUS_NOT_IMPLEMENTED;
90 }
91
92
93 EXTERN_C NTSTATUS APIENTRY
D3DKMTSetAllocationPriority(CONST D3DKMT_SETALLOCATIONPRIORITY * pData)94 D3DKMTSetAllocationPriority(CONST D3DKMT_SETALLOCATIONPRIORITY *pData)
95 {
96 LOG_UNSUPPORTED_ENTRYPOINT();
97 return STATUS_NOT_IMPLEMENTED;
98 }
99
100
101 EXTERN_C NTSTATUS APIENTRY
D3DKMTQueryAllocationResidency(CONST D3DKMT_QUERYALLOCATIONRESIDENCY * pData)102 D3DKMTQueryAllocationResidency(CONST D3DKMT_QUERYALLOCATIONRESIDENCY *pData)
103 {
104 LOG_UNSUPPORTED_ENTRYPOINT();
105 return STATUS_NOT_IMPLEMENTED;
106 }
107
108
109 EXTERN_C NTSTATUS APIENTRY
D3DKMTCreateDevice(D3DKMT_CREATEDEVICE * pData)110 D3DKMTCreateDevice(D3DKMT_CREATEDEVICE *pData)
111 {
112 LOG_ENTRYPOINT();
113 pData->hDevice = 1;
114 return STATUS_SUCCESS;
115 }
116
117
118 EXTERN_C NTSTATUS APIENTRY
D3DKMTDestroyDevice(CONST D3DKMT_DESTROYDEVICE * pData)119 D3DKMTDestroyDevice(CONST D3DKMT_DESTROYDEVICE *pData)
120 {
121 LOG_ENTRYPOINT();
122 return STATUS_SUCCESS;
123 }
124
125
126 EXTERN_C NTSTATUS APIENTRY
D3DKMTCreateContext(D3DKMT_CREATECONTEXT * pData)127 D3DKMTCreateContext(D3DKMT_CREATECONTEXT *pData)
128 {
129 LOG_UNSUPPORTED_ENTRYPOINT();
130 return STATUS_NOT_IMPLEMENTED;
131 }
132
133
134 EXTERN_C NTSTATUS APIENTRY
D3DKMTDestroyContext(CONST D3DKMT_DESTROYCONTEXT * pData)135 D3DKMTDestroyContext(CONST D3DKMT_DESTROYCONTEXT *pData)
136 {
137 LOG_UNSUPPORTED_ENTRYPOINT();
138 return STATUS_NOT_IMPLEMENTED;
139 }
140
141
142 EXTERN_C NTSTATUS APIENTRY
D3DKMTCreateSynchronizationObject(D3DKMT_CREATESYNCHRONIZATIONOBJECT * pData)143 D3DKMTCreateSynchronizationObject(D3DKMT_CREATESYNCHRONIZATIONOBJECT *pData)
144 {
145 LOG_UNSUPPORTED_ENTRYPOINT();
146 return STATUS_NOT_IMPLEMENTED;
147 }
148
149
150 EXTERN_C NTSTATUS APIENTRY
D3DKMTCreateSynchronizationObject2(D3DKMT_CREATESYNCHRONIZATIONOBJECT2 * pData)151 D3DKMTCreateSynchronizationObject2(D3DKMT_CREATESYNCHRONIZATIONOBJECT2 *pData)
152 {
153 LOG_UNSUPPORTED_ENTRYPOINT();
154 return STATUS_NOT_IMPLEMENTED;
155 }
156
157
158 EXTERN_C NTSTATUS APIENTRY
D3DKMTOpenSynchronizationObject(D3DKMT_OPENSYNCHRONIZATIONOBJECT * pData)159 D3DKMTOpenSynchronizationObject(D3DKMT_OPENSYNCHRONIZATIONOBJECT *pData)
160 {
161 LOG_UNSUPPORTED_ENTRYPOINT();
162 return STATUS_NOT_IMPLEMENTED;
163 }
164
165
166 EXTERN_C NTSTATUS APIENTRY
D3DKMTDestroySynchronizationObject(CONST D3DKMT_DESTROYSYNCHRONIZATIONOBJECT * pData)167 D3DKMTDestroySynchronizationObject(CONST D3DKMT_DESTROYSYNCHRONIZATIONOBJECT *pData)
168 {
169 LOG_UNSUPPORTED_ENTRYPOINT();
170 return STATUS_NOT_IMPLEMENTED;
171 }
172
173
174 EXTERN_C NTSTATUS APIENTRY
D3DKMTWaitForSynchronizationObject(CONST D3DKMT_WAITFORSYNCHRONIZATIONOBJECT * pData)175 D3DKMTWaitForSynchronizationObject(CONST D3DKMT_WAITFORSYNCHRONIZATIONOBJECT *pData)
176 {
177 LOG_UNSUPPORTED_ENTRYPOINT();
178 return STATUS_NOT_IMPLEMENTED;
179 }
180
181
182 EXTERN_C NTSTATUS APIENTRY
D3DKMTWaitForSynchronizationObject2(CONST D3DKMT_WAITFORSYNCHRONIZATIONOBJECT2 * pData)183 D3DKMTWaitForSynchronizationObject2(CONST D3DKMT_WAITFORSYNCHRONIZATIONOBJECT2 *pData)
184 {
185 LOG_UNSUPPORTED_ENTRYPOINT();
186 return STATUS_NOT_IMPLEMENTED;
187 }
188
189
190 EXTERN_C NTSTATUS APIENTRY
D3DKMTSignalSynchronizationObject(CONST D3DKMT_SIGNALSYNCHRONIZATIONOBJECT * pData)191 D3DKMTSignalSynchronizationObject(CONST D3DKMT_SIGNALSYNCHRONIZATIONOBJECT *pData)
192 {
193 LOG_UNSUPPORTED_ENTRYPOINT();
194 return STATUS_NOT_IMPLEMENTED;
195 }
196
197
198 EXTERN_C NTSTATUS APIENTRY
D3DKMTSignalSynchronizationObject2(CONST D3DKMT_SIGNALSYNCHRONIZATIONOBJECT2 * pData)199 D3DKMTSignalSynchronizationObject2(CONST D3DKMT_SIGNALSYNCHRONIZATIONOBJECT2 *pData)
200 {
201 LOG_UNSUPPORTED_ENTRYPOINT();
202 return STATUS_NOT_IMPLEMENTED;
203 }
204
205
206 EXTERN_C NTSTATUS APIENTRY
D3DKMTLock(D3DKMT_LOCK * pData)207 D3DKMTLock(D3DKMT_LOCK *pData)
208 {
209 LOG_UNSUPPORTED_ENTRYPOINT();
210 return STATUS_NOT_IMPLEMENTED;
211 }
212
213
214 EXTERN_C NTSTATUS APIENTRY
D3DKMTUnlock(CONST D3DKMT_UNLOCK * pData)215 D3DKMTUnlock(CONST D3DKMT_UNLOCK *pData)
216 {
217 LOG_UNSUPPORTED_ENTRYPOINT();
218 return STATUS_NOT_IMPLEMENTED;
219 }
220
221
222 EXTERN_C NTSTATUS APIENTRY
D3DKMTGetDisplayModeList(D3DKMT_GETDISPLAYMODELIST * pData)223 D3DKMTGetDisplayModeList(D3DKMT_GETDISPLAYMODELIST *pData)
224 {
225 LOG_UNSUPPORTED_ENTRYPOINT();
226 return STATUS_NOT_IMPLEMENTED;
227 }
228
229
230 EXTERN_C NTSTATUS APIENTRY
D3DKMTSetDisplayMode(CONST D3DKMT_SETDISPLAYMODE * pData)231 D3DKMTSetDisplayMode(CONST D3DKMT_SETDISPLAYMODE *pData)
232 {
233 LOG_UNSUPPORTED_ENTRYPOINT();
234 return STATUS_NOT_IMPLEMENTED;
235 }
236
237
238 EXTERN_C NTSTATUS APIENTRY
D3DKMTGetMultisampleMethodList(D3DKMT_GETMULTISAMPLEMETHODLIST * pData)239 D3DKMTGetMultisampleMethodList(D3DKMT_GETMULTISAMPLEMETHODLIST *pData)
240 {
241 LOG_UNSUPPORTED_ENTRYPOINT();
242 return STATUS_NOT_IMPLEMENTED;
243 }
244
245
246 EXTERN_C NTSTATUS APIENTRY
D3DKMTPresent(CONST D3DKMT_PRESENT * pData)247 D3DKMTPresent(CONST D3DKMT_PRESENT *pData)
248 {
249 LOG_UNSUPPORTED_ENTRYPOINT();
250 return STATUS_NOT_IMPLEMENTED;
251 }
252
253
254 EXTERN_C NTSTATUS APIENTRY
D3DKMTRender(D3DKMT_RENDER * pData)255 D3DKMTRender(D3DKMT_RENDER *pData)
256 {
257 LOG_UNSUPPORTED_ENTRYPOINT();
258 return STATUS_NOT_IMPLEMENTED;
259 }
260
261
262 EXTERN_C NTSTATUS APIENTRY
D3DKMTGetRuntimeData(CONST D3DKMT_GETRUNTIMEDATA * pData)263 D3DKMTGetRuntimeData(CONST D3DKMT_GETRUNTIMEDATA *pData)
264 {
265 LOG_UNSUPPORTED_ENTRYPOINT();
266 return STATUS_NOT_IMPLEMENTED;
267 }
268
269
270 EXTERN_C NTSTATUS APIENTRY
D3DKMTQueryAdapterInfo(CONST D3DKMT_QUERYADAPTERINFO * pData)271 D3DKMTQueryAdapterInfo(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
344 EXTERN_C NTSTATUS APIENTRY
D3DKMTOpenAdapterFromHdc(D3DKMT_OPENADAPTERFROMHDC * pData)345 D3DKMTOpenAdapterFromHdc(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
356 EXTERN_C NTSTATUS APIENTRY
D3DKMTOpenAdapterFromGdiDisplayName(D3DKMT_OPENADAPTERFROMGDIDISPLAYNAME * pData)357 D3DKMTOpenAdapterFromGdiDisplayName(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
368 EXTERN_C NTSTATUS APIENTRY
D3DKMTOpenAdapterFromDeviceName(D3DKMT_OPENADAPTERFROMDEVICENAME * pData)369 D3DKMTOpenAdapterFromDeviceName(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
379 EXTERN_C NTSTATUS APIENTRY
D3DKMTCloseAdapter(CONST D3DKMT_CLOSEADAPTER * pData)380 D3DKMTCloseAdapter(CONST D3DKMT_CLOSEADAPTER *pData)
381 {
382 LOG_ENTRYPOINT();
383 return STATUS_SUCCESS;
384 }
385
386
387 EXTERN_C NTSTATUS APIENTRY
D3DKMTGetSharedPrimaryHandle(D3DKMT_GETSHAREDPRIMARYHANDLE * pData)388 D3DKMTGetSharedPrimaryHandle(D3DKMT_GETSHAREDPRIMARYHANDLE *pData)
389 {
390 LOG_UNSUPPORTED_ENTRYPOINT();
391 return STATUS_NOT_IMPLEMENTED;
392 }
393
394
395 EXTERN_C NTSTATUS APIENTRY
D3DKMTEscape(CONST D3DKMT_ESCAPE * pData)396 D3DKMTEscape(CONST D3DKMT_ESCAPE *pData)
397 {
398 LOG_UNSUPPORTED_ENTRYPOINT();
399 return STATUS_NOT_IMPLEMENTED;
400 }
401
402
403 EXTERN_C NTSTATUS APIENTRY
D3DKMTSetVidPnSourceOwner(CONST D3DKMT_SETVIDPNSOURCEOWNER * pData)404 D3DKMTSetVidPnSourceOwner(CONST D3DKMT_SETVIDPNSOURCEOWNER *pData)
405 {
406 LOG_UNSUPPORTED_ENTRYPOINT();
407 return STATUS_NOT_IMPLEMENTED;
408 }
409
410
411 EXTERN_C NTSTATUS APIENTRY
D3DKMTSetVidPnSourceOwner1(const void * pData)412 D3DKMTSetVidPnSourceOwner1(const void *pData)
413 {
414 LOG_UNSUPPORTED_ENTRYPOINT();
415 return STATUS_NOT_IMPLEMENTED;
416 }
417
418
419 EXTERN_C NTSTATUS APIENTRY
D3DKMTGetPresentHistory(D3DKMT_GETPRESENTHISTORY * pData)420 D3DKMTGetPresentHistory(D3DKMT_GETPRESENTHISTORY *pData)
421 {
422 LOG_UNSUPPORTED_ENTRYPOINT();
423 return STATUS_NOT_IMPLEMENTED;
424 }
425
426
427 EXTERN_C NTSTATUS APIENTRY
D3DKMTGetPresentQueueEvent(D3DKMT_HANDLE hAdapter,HANDLE * pData)428 D3DKMTGetPresentQueueEvent(D3DKMT_HANDLE hAdapter, HANDLE *pData)
429 {
430 LOG_UNSUPPORTED_ENTRYPOINT();
431 return STATUS_NOT_IMPLEMENTED;
432 }
433
434
435 EXTERN_C NTSTATUS APIENTRY
D3DKMTCreateOverlay(D3DKMT_CREATEOVERLAY * pData)436 D3DKMTCreateOverlay(D3DKMT_CREATEOVERLAY *pData)
437 {
438 LOG_UNSUPPORTED_ENTRYPOINT();
439 return STATUS_NOT_IMPLEMENTED;
440 }
441
442
443 EXTERN_C NTSTATUS APIENTRY
D3DKMTUpdateOverlay(CONST D3DKMT_UPDATEOVERLAY * pData)444 D3DKMTUpdateOverlay(CONST D3DKMT_UPDATEOVERLAY *pData)
445 {
446 LOG_UNSUPPORTED_ENTRYPOINT();
447 return STATUS_NOT_IMPLEMENTED;
448 }
449
450
451 EXTERN_C NTSTATUS APIENTRY
D3DKMTFlipOverlay(CONST D3DKMT_FLIPOVERLAY * pData)452 D3DKMTFlipOverlay(CONST D3DKMT_FLIPOVERLAY *pData)
453 {
454 LOG_UNSUPPORTED_ENTRYPOINT();
455 return STATUS_NOT_IMPLEMENTED;
456 }
457
458
459 EXTERN_C NTSTATUS APIENTRY
D3DKMTDestroyOverlay(CONST D3DKMT_DESTROYOVERLAY * pData)460 D3DKMTDestroyOverlay(CONST D3DKMT_DESTROYOVERLAY *pData)
461 {
462 LOG_UNSUPPORTED_ENTRYPOINT();
463 return STATUS_NOT_IMPLEMENTED;
464 }
465
466
467 EXTERN_C NTSTATUS APIENTRY
D3DKMTWaitForVerticalBlankEvent(CONST D3DKMT_WAITFORVERTICALBLANKEVENT * pData)468 D3DKMTWaitForVerticalBlankEvent(CONST D3DKMT_WAITFORVERTICALBLANKEVENT *pData)
469 {
470 LOG_ENTRYPOINT();
471 return STATUS_SUCCESS;
472 }
473
474
475 EXTERN_C NTSTATUS APIENTRY
D3DKMTSetGammaRamp(CONST D3DKMT_SETGAMMARAMP * pData)476 D3DKMTSetGammaRamp(CONST D3DKMT_SETGAMMARAMP *pData)
477 {
478 LOG_UNSUPPORTED_ENTRYPOINT();
479 return STATUS_NOT_IMPLEMENTED;
480 }
481
482
483 EXTERN_C NTSTATUS APIENTRY
D3DKMTGetDeviceState(D3DKMT_GETDEVICESTATE * pData)484 D3DKMTGetDeviceState(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
507 EXTERN_C NTSTATUS APIENTRY
D3DKMTCreateDCFromMemory(D3DKMT_CREATEDCFROMMEMORY * pData)508 D3DKMTCreateDCFromMemory(D3DKMT_CREATEDCFROMMEMORY *pData)
509 {
510 LOG_UNSUPPORTED_ENTRYPOINT();
511 return STATUS_NOT_IMPLEMENTED;
512 }
513
514
515 EXTERN_C NTSTATUS APIENTRY
D3DKMTDestroyDCFromMemory(CONST D3DKMT_DESTROYDCFROMMEMORY * pData)516 D3DKMTDestroyDCFromMemory(CONST D3DKMT_DESTROYDCFROMMEMORY *pData)
517 {
518 LOG_UNSUPPORTED_ENTRYPOINT();
519 return STATUS_NOT_IMPLEMENTED;
520 }
521
522
523 EXTERN_C NTSTATUS APIENTRY
D3DKMTSetContextSchedulingPriority(CONST D3DKMT_SETCONTEXTSCHEDULINGPRIORITY * pData)524 D3DKMTSetContextSchedulingPriority(CONST D3DKMT_SETCONTEXTSCHEDULINGPRIORITY *pData)
525 {
526 LOG_UNSUPPORTED_ENTRYPOINT();
527 return STATUS_NOT_IMPLEMENTED;
528 }
529
530
531 EXTERN_C NTSTATUS APIENTRY
D3DKMTGetContextSchedulingPriority(D3DKMT_GETCONTEXTSCHEDULINGPRIORITY * pData)532 D3DKMTGetContextSchedulingPriority(D3DKMT_GETCONTEXTSCHEDULINGPRIORITY *pData)
533 {
534 LOG_UNSUPPORTED_ENTRYPOINT();
535 return STATUS_NOT_IMPLEMENTED;
536 }
537
538
539 EXTERN_C NTSTATUS APIENTRY
D3DKMTSetProcessSchedulingPriorityClass(HANDLE hProcess,D3DKMT_SCHEDULINGPRIORITYCLASS Priority)540 D3DKMTSetProcessSchedulingPriorityClass(HANDLE hProcess, D3DKMT_SCHEDULINGPRIORITYCLASS Priority)
541 {
542 LOG_UNSUPPORTED_ENTRYPOINT();
543 return STATUS_NOT_IMPLEMENTED;
544 }
545
546
547 EXTERN_C NTSTATUS APIENTRY
D3DKMTGetProcessSchedulingPriorityClass(HANDLE hProcess,D3DKMT_SCHEDULINGPRIORITYCLASS * pPriority)548 D3DKMTGetProcessSchedulingPriorityClass(HANDLE hProcess, D3DKMT_SCHEDULINGPRIORITYCLASS *pPriority)
549 {
550 LOG_UNSUPPORTED_ENTRYPOINT();
551 return STATUS_NOT_IMPLEMENTED;
552 }
553
554
555 EXTERN_C NTSTATUS APIENTRY
D3DKMTReleaseProcessVidPnSourceOwners(HANDLE hProcess)556 D3DKMTReleaseProcessVidPnSourceOwners(HANDLE hProcess)
557 {
558 LOG_UNSUPPORTED_ENTRYPOINT();
559 return STATUS_NOT_IMPLEMENTED;
560 }
561
562
563 EXTERN_C NTSTATUS APIENTRY
D3DKMTGetScanLine(D3DKMT_GETSCANLINE * pData)564 D3DKMTGetScanLine(D3DKMT_GETSCANLINE *pData)
565 {
566 LOG_UNSUPPORTED_ENTRYPOINT();
567 return STATUS_NOT_IMPLEMENTED;
568 }
569
570
571 EXTERN_C NTSTATUS APIENTRY
D3DKMTChangeSurfacePointer(CONST D3DKMT_CHANGESURFACEPOINTER * pData)572 D3DKMTChangeSurfacePointer(CONST D3DKMT_CHANGESURFACEPOINTER *pData)
573 {
574 LOG_UNSUPPORTED_ENTRYPOINT();
575 return STATUS_NOT_IMPLEMENTED;
576 }
577
578
579 EXTERN_C NTSTATUS APIENTRY
D3DKMTSetQueuedLimit(CONST D3DKMT_SETQUEUEDLIMIT * pData)580 D3DKMTSetQueuedLimit(CONST D3DKMT_SETQUEUEDLIMIT *pData)
581 {
582 LOG_UNSUPPORTED_ENTRYPOINT();
583 return STATUS_NOT_IMPLEMENTED;
584 }
585
586
587 EXTERN_C NTSTATUS APIENTRY
D3DKMTPollDisplayChildren(CONST D3DKMT_POLLDISPLAYCHILDREN * pData)588 D3DKMTPollDisplayChildren(CONST D3DKMT_POLLDISPLAYCHILDREN *pData)
589 {
590 LOG_UNSUPPORTED_ENTRYPOINT();
591 return STATUS_NOT_IMPLEMENTED;
592 }
593
594
595 EXTERN_C NTSTATUS APIENTRY
D3DKMTInvalidateActiveVidPn(CONST D3DKMT_INVALIDATEACTIVEVIDPN * pData)596 D3DKMTInvalidateActiveVidPn(CONST D3DKMT_INVALIDATEACTIVEVIDPN *pData)
597 {
598 LOG_UNSUPPORTED_ENTRYPOINT();
599 return STATUS_NOT_IMPLEMENTED;
600 }
601
602
603 EXTERN_C NTSTATUS APIENTRY
D3DKMTCheckOcclusion(CONST D3DKMT_CHECKOCCLUSION * pData)604 D3DKMTCheckOcclusion(CONST D3DKMT_CHECKOCCLUSION *pData)
605 {
606 LOG_UNSUPPORTED_ENTRYPOINT();
607 return STATUS_NOT_IMPLEMENTED;
608 }
609
610
611 EXTERN_C NTSTATUS APIENTRY
D3DKMTWaitForIdle(CONST D3DKMT_WAITFORIDLE * pData)612 D3DKMTWaitForIdle(CONST D3DKMT_WAITFORIDLE *pData)
613 {
614 LOG_UNSUPPORTED_ENTRYPOINT();
615 return STATUS_NOT_IMPLEMENTED;
616 }
617
618
619 EXTERN_C NTSTATUS APIENTRY
D3DKMTCheckMonitorPowerState(CONST D3DKMT_CHECKMONITORPOWERSTATE * pData)620 D3DKMTCheckMonitorPowerState(CONST D3DKMT_CHECKMONITORPOWERSTATE *pData)
621 {
622 LOG_UNSUPPORTED_ENTRYPOINT();
623 return STATUS_NOT_IMPLEMENTED;
624 }
625
626
627 EXTERN_C BOOLEAN APIENTRY
D3DKMTCheckExclusiveOwnership(VOID)628 D3DKMTCheckExclusiveOwnership(VOID)
629 {
630 LOG_UNSUPPORTED_ENTRYPOINT();
631 return FALSE;
632 }
633
634
635 EXTERN_C NTSTATUS APIENTRY
D3DKMTCheckVidPnExclusiveOwnership(CONST D3DKMT_CHECKVIDPNEXCLUSIVEOWNERSHIP * pData)636 D3DKMTCheckVidPnExclusiveOwnership(CONST D3DKMT_CHECKVIDPNEXCLUSIVEOWNERSHIP *pData)
637 {
638 LOG_UNSUPPORTED_ENTRYPOINT();
639 return STATUS_NOT_IMPLEMENTED;
640 }
641
642
643 EXTERN_C NTSTATUS APIENTRY
D3DKMTSetDisplayPrivateDriverFormat(CONST D3DKMT_SETDISPLAYPRIVATEDRIVERFORMAT * pData)644 D3DKMTSetDisplayPrivateDriverFormat(CONST D3DKMT_SETDISPLAYPRIVATEDRIVERFORMAT *pData)
645 {
646 LOG_UNSUPPORTED_ENTRYPOINT();
647 return STATUS_NOT_IMPLEMENTED;
648 }
649
650
651 EXTERN_C NTSTATUS APIENTRY
D3DKMTSharedPrimaryLockNotification(CONST D3DKMT_SHAREDPRIMARYLOCKNOTIFICATION * pData)652 D3DKMTSharedPrimaryLockNotification(CONST D3DKMT_SHAREDPRIMARYLOCKNOTIFICATION *pData)
653 {
654 LOG_UNSUPPORTED_ENTRYPOINT();
655 return STATUS_NOT_IMPLEMENTED;
656 }
657
658
659 EXTERN_C NTSTATUS APIENTRY
D3DKMTSharedPrimaryUnLockNotification(CONST D3DKMT_SHAREDPRIMARYUNLOCKNOTIFICATION * pData)660 D3DKMTSharedPrimaryUnLockNotification(CONST D3DKMT_SHAREDPRIMARYUNLOCKNOTIFICATION *pData)
661 {
662 LOG_UNSUPPORTED_ENTRYPOINT();
663 return STATUS_NOT_IMPLEMENTED;
664 }
665
666
667 EXTERN_C NTSTATUS APIENTRY
D3DKMTCreateKeyedMutex(D3DKMT_CREATEKEYEDMUTEX * pData)668 D3DKMTCreateKeyedMutex(D3DKMT_CREATEKEYEDMUTEX *pData)
669 {
670 LOG_UNSUPPORTED_ENTRYPOINT();
671 return STATUS_NOT_IMPLEMENTED;
672 }
673
674
675 EXTERN_C NTSTATUS APIENTRY
D3DKMTOpenKeyedMutex(D3DKMT_OPENKEYEDMUTEX * pData)676 D3DKMTOpenKeyedMutex(D3DKMT_OPENKEYEDMUTEX *pData)
677 {
678 LOG_UNSUPPORTED_ENTRYPOINT();
679 return STATUS_NOT_IMPLEMENTED;
680 }
681
682
683 EXTERN_C NTSTATUS APIENTRY
D3DKMTDestroyKeyedMutex(CONST D3DKMT_DESTROYKEYEDMUTEX * pData)684 D3DKMTDestroyKeyedMutex(CONST D3DKMT_DESTROYKEYEDMUTEX *pData)
685 {
686 LOG_UNSUPPORTED_ENTRYPOINT();
687 return STATUS_NOT_IMPLEMENTED;
688 }
689
690
691 EXTERN_C NTSTATUS APIENTRY
D3DKMTAcquireKeyedMutex(D3DKMT_ACQUIREKEYEDMUTEX * pData)692 D3DKMTAcquireKeyedMutex(D3DKMT_ACQUIREKEYEDMUTEX *pData)
693 {
694 LOG_UNSUPPORTED_ENTRYPOINT();
695 return STATUS_NOT_IMPLEMENTED;
696 }
697
698
699 EXTERN_C NTSTATUS APIENTRY
D3DKMTReleaseKeyedMutex(D3DKMT_RELEASEKEYEDMUTEX * pData)700 D3DKMTReleaseKeyedMutex(D3DKMT_RELEASEKEYEDMUTEX *pData)
701 {
702 LOG_UNSUPPORTED_ENTRYPOINT();
703 return STATUS_NOT_IMPLEMENTED;
704 }
705
706
707 EXTERN_C NTSTATUS APIENTRY
D3DKMTConfigureSharedResource(CONST D3DKMT_CONFIGURESHAREDRESOURCE * pData)708 D3DKMTConfigureSharedResource(CONST D3DKMT_CONFIGURESHAREDRESOURCE *pData)
709 {
710 LOG_UNSUPPORTED_ENTRYPOINT();
711 return STATUS_NOT_IMPLEMENTED;
712 }
713
714
715 EXTERN_C NTSTATUS APIENTRY
D3DKMTGetOverlayState(D3DKMT_GETOVERLAYSTATE * pData)716 D3DKMTGetOverlayState(D3DKMT_GETOVERLAYSTATE *pData)
717 {
718 LOG_UNSUPPORTED_ENTRYPOINT();
719 return STATUS_NOT_IMPLEMENTED;
720 }
721
722
723 EXTERN_C NTSTATUS APIENTRY
D3DKMTCheckSharedResourceAccess(CONST D3DKMT_CHECKSHAREDRESOURCEACCESS * pData)724 D3DKMTCheckSharedResourceAccess(CONST D3DKMT_CHECKSHAREDRESOURCEACCESS *pData)
725 {
726 LOG_UNSUPPORTED_ENTRYPOINT();
727 return STATUS_NOT_IMPLEMENTED;
728 }
729