ReactOS 0.4.15-dev-7924-g5949c20
ddraw.c
Go to the documentation of this file.
1/*
2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS kernel
4 * PURPOSE: Native DirectDraw implementation
5 * FILE: win32ss/reactx/ntddraw/ddraw.c
6 * PROGRAMER: Magnus olsen (magnus@greatlord.com)
7 * REVISION HISTORY:
8 * 19/1-2006 Magnus Olsen
9 */
10
11#include <win32k.h>
12
13// #define NDEBUG
14#include <debug.h>
15
18
19/* export from dxeng.c */
20extern DRVFN gaEngFuncs[];
21extern ULONG gcEngFuncs;
23
27
28#define DXDBG 1
29
30/************************************************************************/
31/* DirectX graphic/video driver loading and cleanup starts here */
32/************************************************************************/
36 PDRVENABLEDATA DxEngDrvOld,
37 ULONG ulc2,
38 PDRVENABLEDATA DxgDrvOld,
39 PULONG DirectDrawContext,
40 PEPROCESS Proc)
41{
42 DRVENABLEDATA DxEngDrv;
43 DRVENABLEDATA DxgDrv;
44
46
47 /* FIXME: Setup of gaEngFuncs driver export list
48 * but not in this api, we can add it here tempary until we figout where
49 * no code have been writen for it yet
50 */
51
52 /* FIXME: ReactOS does not loading the dxapi.sys or import functions from it yet */
53 // DxApiGetVersion()
54
55 /* Loading the kernel interface of DirectX for win32k */
56
57 DPRINT1("Warning: trying loading xp/2003/windows7/reactos dxg.sys\n");
58 ghDxGraphics = EngLoadImage(L"\\SystemRoot\\System32\\drivers\\dxg.sys");
59 if ( ghDxGraphics == NULL)
60 {
62 DPRINT1("Warning: no ReactX or DirectX kernel driver found\n");
63 }
64 else
65 {
66 /* Import DxDdStartupDxGraphics and DxDdCleanupDxGraphics */
69
72 {
73 /* Setup driver data for activate the dx interface */
75 DxEngDrv.pdrvfn = gaEngFuncs;
76 DxEngDrv.c = gcEngFuncs;
77
79 &DxEngDrv,
80 sizeof(DRVENABLEDATA),
81 &DxgDrv,
83 Proc );
84 }
85
86 /* Check if we manage loading the data and execute the dxStartupDxGraphics if it is successful */
87 if (!NT_SUCCESS(Status))
88 {
91 if (ghDxGraphics != NULL)
92 {
95 }
96 DPRINT1("Warning: DirectX graphics interface can not be initialized\n");
97 }
98 else
99 {
100 /* Sort the drv functions list in index order, this allows us doing, smaller optimize
101 * in API that are redirect to dx.sys
102 */
103
104 PDRVFN lstDrvFN = DxgDrv.pdrvfn;
105 INT t;
106 for (t=0;t<=DXG_INDEX_DxDdIoctl;t++)
107 {
108 gpDxFuncs[lstDrvFN[t].iFunc].iFunc =lstDrvFN[t].iFunc;
109 gpDxFuncs[lstDrvFN[t].iFunc].pfn =lstDrvFN[t].pfn;
110 }
111
112 DPRINT("DirectX interface is activated\n");
113 }
114 }
115
116 /* Return the status */
117 return Status;
118}
119
120/************************************************************************/
121/* DirectX graphic/video driver loading cleanup ends here */
122/************************************************************************/
123
124/************************************************************************/
125/* NtGdiDdCreateDirectDrawObject */
126/************************************************************************/
127HANDLE
130{
131 PGD_DDCREATEDIRECTDRAWOBJECT pfnDdCreateDirectDrawObject;
132
133 if (hdc == NULL)
134 {
135 DPRINT1("Warning: hdc is NULL\n");
136 return 0;
137 }
138
139 /* Get the pfnDdCreateDirectDrawObject after we load the drv */
141
142 if (pfnDdCreateDirectDrawObject == NULL)
143 {
144 DPRINT1("Warning: no pfnDdCreateDirectDrawObject\n");
146 }
147
148 DPRINT("Calling dxg.sys pfnDdCreateDirectDrawObject\n");
149
150 return pfnDdCreateDirectDrawObject(hdc);
151}
152
153/*++
154* @name NtGdiDxgGenericThunk
155* @implemented
156*
157* The function NtGdiDxgGenericThunk redirects DirectX calls to another function.
158* It redirects to dxg.sys in Windows XP/2003, dxkrnl.sys in Vista and is fully implemented in win32k.sys in Windows 2000 and below
159*
160* @param ULONG_PTR ulIndex
161* The functions we want to redirect
162*
163* @param ULONG_PTR ulHandle
164* Unknown
165*
166* @param SIZE_T *pdwSizeOfPtr1
167* Unknown
168*
169* @param PVOID pvPtr1
170* Unknown
171*
172* @param SIZE_T *pdwSizeOfPtr2
173* Unknown
174*
175* @param PVOID pvPtr2
176* Unknown
177*
178* @return
179* Always returns DDHAL_DRIVER_NOTHANDLED
180*
181* @remarks.
182* dxg.sys NtGdiDxgGenericThunk calls are redirected to dxg.sys
183* This function is no longer used but is still present in Windows NT 2000/XP/2003.
184*
185*--*/
186DWORD
189 ULONG_PTR ulHandle,
190 SIZE_T *pdwSizeOfPtr1,
191 PVOID pvPtr1,
192 SIZE_T *pdwSizeOfPtr2,
193 PVOID pvPtr2)
194{
196
197 if (pfnDxgGenericThunk == NULL)
198 {
199 DPRINT1("Warning: no pfnDxgGenericThunk\n");
201 }
202
203 DPRINT("Calling dxg.sys pfnDxgGenericThunk\n");
204 return pfnDxgGenericThunk(ulIndex, ulHandle, pdwSizeOfPtr1, pvPtr1, pdwSizeOfPtr2, pvPtr2);
205}
206
207/************************************************************************/
208/* NtGdiDdGetDriverState */
209/************************************************************************/
210DWORD
213{
215
216 if (pfnDdGetDriverState == NULL)
217 {
218 DPRINT1("Warning: no pfnDdGetDriverState\n");
220 }
221
222 DPRINT("Calling dxg.sys pfnDdGetDriverState\n");
223 return pfnDdGetDriverState(pdata);
224}
225
226/************************************************************************/
227/* NtGdiDdColorControl */
228/************************************************************************/
229DWORD
232 PDD_COLORCONTROLDATA puColorControlData)
233{
235
236 if (pfnDdColorControl == NULL)
237 {
238 DPRINT1("Warning: no pfnDdColorControl\n");
240 }
241
242 DPRINT("Calling dxg.sys pfnDdColorControl\n");
243 return pfnDdColorControl(hSurface,puColorControlData);
244}
245
246/************************************************************************/
247/* NtGdiDdCreateSurfaceObject */
248/************************************************************************/
249HANDLE
252 HANDLE hSurface,
253 PDD_SURFACE_LOCAL puSurfaceLocal,
254 PDD_SURFACE_MORE puSurfaceMore,
255 PDD_SURFACE_GLOBAL puSurfaceGlobal,
256 BOOL bComplete
257)
258{
260
261 if (pfnDdCreateSurfaceObject == NULL)
262 {
263 DPRINT1("Warning: no pfnDdCreateSurfaceObject\n");
265 }
266
267 DPRINT("Calling dxg.sys pfnDdCreateSurfaceObject\n");
268 return pfnDdCreateSurfaceObject(hDirectDrawLocal, hSurface, puSurfaceLocal, puSurfaceMore, puSurfaceGlobal, bComplete);
269}
270
271/************************************************************************/
272/* NtGdiDdDeleteDirectDrawObject */
273/************************************************************************/
274BOOL
277{
279
280 if (pfnDdDeleteDirectDrawObject == NULL)
281 {
282 DPRINT1("Warning: no pfnDdDeleteDirectDrawObject\n");
283 return FALSE;
284 }
285
286 if (hDirectDrawLocal == NULL)
287 {
288 DPRINT1("Warning: hDirectDrawLocal is NULL\n");
289 return FALSE;
290 }
291
292 DPRINT("Calling dxg.sys pfnDdDeleteDirectDrawObject(%p)\n", hDirectDrawLocal);
293 return pfnDdDeleteDirectDrawObject(hDirectDrawLocal);
294}
295
296/************************************************************************/
297/* NtGdiDdDeleteSurfaceObject */
298/************************************************************************/
299BOOL
302{
304
305 if (pfnDdDeleteSurfaceObject == NULL)
306 {
307 DPRINT1("Warning: no pfnDdDeleteSurfaceObject\n");
309 }
310 /* Try and see if the handle is valid */
311
312 DPRINT("Calling dxg.sys pfnDdDeleteSurfaceObject\n");
313 return pfnDdDeleteSurfaceObject(hSurface);
314}
315
316/************************************************************************/
317/* NtGdiDdQueryDirectDrawObject */
318/************************************************************************/
319BOOL
323 DWORD *pCallBackFlags,
324 LPD3DNTHAL_CALLBACKS puD3dCallbacks,
325 LPD3DNTHAL_GLOBALDRIVERDATA puD3dDriverData,
326 PDD_D3DBUFCALLBACKS puD3dBufferCallbacks,
327 LPDDSURFACEDESC puD3dTextureFormats,
328 DWORD *puNumHeaps,
329 VIDEOMEMORY *puvmList,
330 DWORD *puNumFourCC,
331 DWORD *puFourCC)
332{
334
335 if (pfnDdQueryDirectDrawObject == NULL)
336 {
337 DPRINT1("Warning: no pfnDdQueryDirectDrawObject\n");
339 }
340
341 DPRINT("Calling dxg.sys pfnDdQueryDirectDrawObject\n");
342 return pfnDdQueryDirectDrawObject(hDirectDrawLocal, pHalInfo, pCallBackFlags, puD3dCallbacks, puD3dDriverData,
343 puD3dBufferCallbacks, puD3dTextureFormats, puNumHeaps, puvmList, puNumFourCC, puFourCC);
344}
345
346/************************************************************************/
347/* NtGdiDdReenableDirectDrawObject */
348/************************************************************************/
349BOOL
352 BOOL *pubNewMode)
353{
354#if DXDBG
355 BOOL status;
356#endif
358
359 if (pfnDdReenableDirectDrawObject == NULL)
360 {
361 DPRINT1("Warning: no pfnDdReenableDirectDrawObject\n");
363 }
364
365 DPRINT("Calling dxg.sys pfnDdReenableDirectDrawObject\n");
366#if DXDBG
367 status = pfnDdReenableDirectDrawObject(hDirectDrawLocal, pubNewMode);
368 DPRINT1("end Calling dxg.sys pfnDdReenableDirectDrawObject, status: 0x%08x\n", status);
369 return status;
370#else
371 return pfnDdReenableDirectDrawObject(hDirectDrawLocal, pubNewMode);
372#endif
373}
374
375/************************************************************************/
376/* NtGdiDdGetDriverInfo */
377/************************************************************************/
378DWORD
381 PDD_GETDRIVERINFODATA puGetDriverInfoData)
382
383{
385
386 if (pfnDdGetDriverInfo == NULL)
387 {
388 DPRINT1("Warning: no pfnDdGetDriverInfo\n");
390 }
391
392 DPRINT("Calling dxg.sys pfnDdGetDriverInfo\n");
393 return pfnDdGetDriverInfo(hDirectDrawLocal, puGetDriverInfoData);
394}
395
396/************************************************************************/
397/* NtGdiDdGetAvailDriverMemory */
398/************************************************************************/
399DWORD
402 PDD_GETAVAILDRIVERMEMORYDATA puGetAvailDriverMemoryData)
403{
405
406 if (pfnDdGetAvailDriverMemory == NULL)
407 {
408 DPRINT1("Warning: no pfnDdGetAvailDriverMemory\n");
410 }
411
412 DPRINT("Calling dxg.sys pfnDdGetAvailDriverMemory\n");
413 return pfnDdGetAvailDriverMemory(hDirectDrawLocal, puGetAvailDriverMemoryData);
414}
415
416/************************************************************************/
417/* NtGdiDdSetExclusiveMode */
418/************************************************************************/
419
420DWORD
423 PDD_SETEXCLUSIVEMODEDATA puSetExclusiveModeData)
424{
426
427 if (pfnDdSetExclusiveMode == NULL)
428 {
429 DPRINT1("Warning: no pfnDdSetExclusiveMode\n");
431 }
432
433 DPRINT("Calling dxg.sys pfnDdSetExclusiveMode\n");
434 return pfnDdSetExclusiveMode(hDirectDraw, puSetExclusiveModeData);
435}
436
437/************************************************************************/
438/* NtGdiDdFlipToGDISurface */
439/************************************************************************/
440DWORD
443 PDD_FLIPTOGDISURFACEDATA puFlipToGDISurfaceData)
444{
446
447 if (pfnDdFlipToGDISurface == NULL)
448 {
449 DPRINT1("Warning: no pfnDdFlipToGDISurface\n");
451 }
452
453 DPRINT("Calling dxg.sys pfnDdFlipToGDISurface\n");
454 return pfnDdFlipToGDISurface(hDirectDraw, puFlipToGDISurfaceData);
455}
456
457/************************************************************************/
458/* NtGdiDdGetDC */
459/************************************************************************/
460HDC
463 PALETTEENTRY *puColorTable)
464{
466
467 if (pfnDdGetDC == NULL)
468 {
469 DPRINT1("Warning: no pfnDdGetDC\n");
471 }
472
473 DPRINT("Calling dxg.sys pfnDdGetDC\n");
474 return pfnDdGetDC(hSurface, puColorTable);
475}
476
477/************************************************************************/
478/* NtGdiDdGetDxHandle */
479/************************************************************************/
480HANDLE
483 HANDLE hSurface,
484 BOOL bRelease)
485{
487
488 if (pfnDdGetDxHandle == NULL)
489 {
490 DPRINT1("Warning: no pfnDdGetDxHandle\n");
492 }
493
494 DPRINT("Calling dxg.sys pfnDdGetDxHandle\n");
495 return pfnDdGetDxHandle(hDirectDraw, hSurface, bRelease);
496}
497
498/************************************************************************/
499/* NtGdiDdReleaseDC */
500/************************************************************************/
501BOOL
504{
506
507 if (pfnDdReleaseDC == NULL)
508 {
509 DPRINT1("Warning: no pfnDdReleaseDC\n");
511 }
512
513 DPRINT("Calling dxg.sys pfnDdReleaseDC\n");
514 return pfnDdReleaseDC(hSurface);
515}
516
517/************************************************************************/
518/* NtGdiDdResetVisrgn */
519/************************************************************************/
520BOOL
523 HWND hwnd)
524{
525
527
528 if (pfnDdResetVisrgn == NULL)
529 {
530 DPRINT1("Warning: no pfnDdResetVisrgn\n");
532 }
533
534 DPRINT("Calling dxg.sys pfnDdResetVisrgn\n");
535 return pfnDdResetVisrgn(hSurface, hwnd);
536}
537
538/************************************************************************/
539/* NtGdiDdSetGammaRamp */
540/************************************************************************/
541BOOL
544 HDC hdc,
545 LPVOID lpGammaRamp)
546{
548
549 if (pfnDdSetGammaRamp == NULL)
550 {
551 DPRINT1("Warning: no pfnDdSetGammaRamp\n");
553 }
554
555 DPRINT("Calling dxg.sys pfnDdSetGammaRamp\n");
556 return pfnDdSetGammaRamp(hDirectDraw, hdc, lpGammaRamp);
557}
LONG NTSTATUS
Definition: precomp.h:26
#define DPRINT1
Definition: precomp.h:8
#define DDHAL_DRIVER_NOTHANDLED
Definition: ddrawi.h:320
#define NULL
Definition: types.h:112
#define FALSE
Definition: types.h:117
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:32
#define APIENTRY
Definition: api.h:79
DWORD(NTAPI * PGD_DXGENERICTRUNK)(ULONG_PTR, ULONG_PTR, SIZE_T *, PVOID, SIZE_T *, PVOID)
Definition: dxg.h:123
#define DXG_INDEX_DxDdGetDriverState
Definition: dxg.h:16
#define DXG_INDEX_DxDdColorControl
Definition: dxg.h:24
#define DXG_INDEX_DxDdReenableDirectDrawObject
Definition: dxg.h:55
#define DXG_INDEX_DxDdGetAvailDriverMemory
Definition: dxg.h:39
#define DXG_INDEX_DxDdIoctl
Definition: dxg.h:100
#define DXG_INDEX_DxDdDeleteSurfaceObject
Definition: dxg.h:32
#define DXG_INDEX_DxDdResetVisrgn
Definition: dxg.h:58
#define DXG_INDEX_DxDdSetExclusiveMode
Definition: dxg.h:60
#define DXG_INDEX_DxDdFlipToGDISurface
Definition: dxg.h:38
#define DXG_INDEX_DxDdQueryDirectDrawObject
Definition: dxg.h:53
#define DXG_INDEX_DxDdGetDC
Definition: dxg.h:41
#define DXG_INDEX_DxDdGetDxHandle
Definition: dxg.h:43
#define DXG_INDEX_DxDdGetDriverInfo
Definition: dxg.h:42
#define DXG_INDEX_DxDdSetGammaRamp
Definition: dxg.h:61
#define DXG_INDEX_DxDdCreateSurfaceObject
Definition: dxg.h:30
#define DXG_INDEX_DxDdDeleteDirectDrawObject
Definition: dxg.h:31
#define DXG_INDEX_DxDxgGenericThunk
Definition: dxg.h:10
#define DXG_INDEX_DxDdReleaseDC
Definition: dxg.h:56
#define DXG_INDEX_DxDdCreateDirectDrawObject
Definition: dxg.h:25
unsigned int BOOL
Definition: ntddk_ex.h:94
unsigned long DWORD
Definition: ntddk_ex.h:95
Status
Definition: gdiplustypes.h:25
GLdouble GLdouble t
Definition: gl.h:2047
DWORD(APIENTRY * PGD_DXDDFLIPTOGDISURFACE)(HANDLE, PDD_FLIPTOGDISURFACEDATA)
Definition: intddraw.h:30
BOOL(APIENTRY * PGD_DXDDDELETEDIRECTDRAWOBJECT)(HANDLE)
Definition: intddraw.h:28
NTSTATUS(APIENTRY * PGD_DXDDCLEANUPDXGRAPHICS)(VOID)
Definition: intddraw.h:23
BOOL(APIENTRY * PGD_DDRESTVISRGN)(HANDLE, HWND)
Definition: intddraw.h:16
NTSTATUS(APIENTRY * PGD_DXDDSTARTUPDXGRAPHICS)(ULONG, PDRVENABLEDATA, ULONG, PDRVENABLEDATA, PULONG, PEPROCESS)
Definition: intddraw.h:22
HANDLE(APIENTRY * PGD_DDGETDXHANDLE)(HANDLE, HANDLE, BOOL)
Definition: intddraw.h:17
BOOL(APIENTRY * PGD_DXDDDELETESURFACEOBJECT)(HANDLE)
Definition: intddraw.h:29
DWORD(APIENTRY * PGD_DXDDSETEXCLUSIVEMODE)(HANDLE, PDD_SETEXCLUSIVEMODEDATA)
Definition: intddraw.h:21
BOOL(APIENTRY * PGD_DDRELEASEDC)(HANDLE)
Definition: intddraw.h:15
DWORD(APIENTRY * PGD_DXDDGETDRIVERINFO)(HANDLE, PDD_GETDRIVERINFODATA)
Definition: intddraw.h:20
DWORD(APIENTRY * PGD_DDGETDRIVERSTATE)(PDD_GETDRIVERSTATEDATA)
Definition: intddraw.h:25
DWORD(APIENTRY * PGD_DXDDREENABLEDIRECTDRAWOBJECT)(HANDLE, BOOL *)
Definition: intddraw.h:19
BOOL(APIENTRY * PGD_DDSETGAMMARAMP)(HANDLE, HDC, LPVOID)
Definition: intddraw.h:14
HDC(APIENTRY * PGD_DDGETDC)(HANDLE, PALETTEENTRY *)
Definition: intddraw.h:18
BOOL(APIENTRY * PGD_DXDDQUERYDIRECTDRAWOBJECT)(HANDLE, DD_HALINFO *, DWORD *, LPD3DNTHAL_CALLBACKS, LPD3DNTHAL_GLOBALDRIVERDATA, PDD_D3DBUFCALLBACKS, LPDDSURFACEDESC, DWORD *, VIDEOMEMORY *, DWORD *, DWORD *)
Definition: intddraw.h:32
DWORD(APIENTRY * PGD_DXDDGETAVAILDRIVERMEMORY)(HANDLE, PDD_GETAVAILDRIVERMEMORYDATA)
Definition: intddraw.h:31
HANDLE(APIENTRY * PGD_DDCREATEDIRECTDRAWOBJECT)(HDC hdc)
Definition: intddraw.h:24
DWORD(APIENTRY * PGD_DDCOLORCONTROL)(HANDLE hSurface, PDD_COLORCONTROLDATA puColorControlData)
Definition: intddraw.h:26
HANDLE(APIENTRY * PGD_DXDDCREATESURFACEOBJECT)(HANDLE, HANDLE, PDD_SURFACE_LOCAL, PDD_SURFACE_MORE, PDD_SURFACE_GLOBAL, BOOL)
Definition: intddraw.h:27
HDC hdc
Definition: main.c:9
static HDC
Definition: imagelist.c:92
static PROTOCOLDATA * pdata
Definition: protocol.c:158
#define STATUS_DLL_NOT_FOUND
Definition: ntstatus.h:545
#define STATUS_PROCEDURE_NOT_FOUND
Definition: ntstatus.h:358
#define L(x)
Definition: ntvdm.h:50
#define DPRINT
Definition: sndvol32.h:71
Definition: winddi.h:529
PFN pfn
Definition: winddi.h:531
ULONG iFunc
Definition: winddi.h:530
Definition: ps.c:97
ULONG iDriverVersion
Definition: winddi.h:542
DRVFN * pdrvfn
Definition: winddi.h:544
uint32_t * PULONG
Definition: typedefs.h:59
ULONG_PTR SIZE_T
Definition: typedefs.h:80
int32_t INT
Definition: typedefs.h:58
uint32_t ULONG_PTR
Definition: typedefs.h:65
uint32_t ULONG
Definition: typedefs.h:59
NTSTATUS APIENTRY DxDdStartupDxGraphics(ULONG ulc1, PDRVENABLEDATA DxEngDrvOld, ULONG ulc2, PDRVENABLEDATA DxgDrvOld, PULONG DirectDrawContext, PEPROCESS Proc)
Definition: ddraw.c:35
DRVFN gpDxFuncs[DXG_INDEX_DxDdIoctl+1]
Definition: ddraw.c:24
EDD_DIRECTDRAW_GLOBAL edd_DdirectDraw_Global
HANDLE APIENTRY NtGdiDdGetDxHandle(HANDLE hDirectDraw, HANDLE hSurface, BOOL bRelease)
Definition: ddraw.c:482
ULONG gcEngFuncs
Definition: dxeng.c:17
HANDLE ghDxGraphics
Definition: ddraw.c:25
BOOL APIENTRY NtGdiDdReleaseDC(HANDLE hSurface)
Definition: ddraw.c:503
DWORD APIENTRY NtGdiDdGetAvailDriverMemory(HANDLE hDirectDrawLocal, PDD_GETAVAILDRIVERMEMORYDATA puGetAvailDriverMemoryData)
Definition: ddraw.c:401
PGD_DXDDSTARTUPDXGRAPHICS gpfnStartupDxGraphics
Definition: ddraw.c:16
BOOL APIENTRY NtGdiDdReenableDirectDrawObject(HANDLE hDirectDrawLocal, BOOL *pubNewMode)
Definition: ddraw.c:351
BOOL APIENTRY NtGdiDdQueryDirectDrawObject(HANDLE hDirectDrawLocal, DD_HALINFO *pHalInfo, DWORD *pCallBackFlags, LPD3DNTHAL_CALLBACKS puD3dCallbacks, LPD3DNTHAL_GLOBALDRIVERDATA puD3dDriverData, PDD_D3DBUFCALLBACKS puD3dBufferCallbacks, LPDDSURFACEDESC puD3dTextureFormats, DWORD *puNumHeaps, VIDEOMEMORY *puvmList, DWORD *puNumFourCC, DWORD *puFourCC)
Definition: ddraw.c:321
DWORD APIENTRY NtGdiDdFlipToGDISurface(HANDLE hDirectDraw, PDD_FLIPTOGDISURFACEDATA puFlipToGDISurfaceData)
Definition: ddraw.c:442
DWORD APIENTRY NtGdiDdGetDriverInfo(HANDLE hDirectDrawLocal, PDD_GETDRIVERINFODATA puGetDriverInfoData)
Definition: ddraw.c:380
DWORD APIENTRY NtGdiDdGetDriverState(PDD_GETDRIVERSTATEDATA pdata)
Definition: ddraw.c:212
HDC APIENTRY NtGdiDdGetDC(HANDLE hSurface, PALETTEENTRY *puColorTable)
Definition: ddraw.c:462
HANDLE APIENTRY NtGdiDdCreateSurfaceObject(HANDLE hDirectDrawLocal, HANDLE hSurface, PDD_SURFACE_LOCAL puSurfaceLocal, PDD_SURFACE_MORE puSurfaceMore, PDD_SURFACE_GLOBAL puSurfaceGlobal, BOOL bComplete)
Definition: ddraw.c:251
HANDLE APIENTRY NtGdiDdCreateDirectDrawObject(HDC hdc)
Definition: ddraw.c:129
DWORD APIENTRY NtGdiDdColorControl(HANDLE hSurface, PDD_COLORCONTROLDATA puColorControlData)
Definition: ddraw.c:231
DRVFN gaEngFuncs[]
Definition: dxeng.c:18
PGD_DXDDCLEANUPDXGRAPHICS gpfnCleanupDxGraphics
Definition: ddraw.c:17
BOOL APIENTRY NtGdiDdSetGammaRamp(HANDLE hDirectDraw, HDC hdc, LPVOID lpGammaRamp)
Definition: ddraw.c:543
BOOL APIENTRY NtGdiDdDeleteSurfaceObject(HANDLE hSurface)
Definition: ddraw.c:301
ULONG gdwDirectDrawContext
Definition: ddraw.c:26
DWORD APIENTRY NtGdiDdSetExclusiveMode(HANDLE hDirectDraw, PDD_SETEXCLUSIVEMODEDATA puSetExclusiveModeData)
Definition: ddraw.c:422
DWORD APIENTRY NtGdiDxgGenericThunk(ULONG_PTR ulIndex, ULONG_PTR ulHandle, SIZE_T *pdwSizeOfPtr1, PVOID pvPtr1, SIZE_T *pdwSizeOfPtr2, PVOID pvPtr2)
Definition: ddraw.c:188
BOOL APIENTRY NtGdiDdDeleteDirectDrawObject(HANDLE hDirectDrawLocal)
Definition: ddraw.c:276
BOOL APIENTRY NtGdiDdResetVisrgn(HANDLE hSurface, HWND hwnd)
Definition: ddraw.c:522
ENGAPI PVOID APIENTRY EngFindImageProcAddress(_In_ HANDLE hModule, _In_ LPSTR lpProcName)
Definition: ldevobj.c:927
#define DDI_DRIVER_VERSION_NT5_01
Definition: winddi.h:538
_Out_ DD_HALINFO * pHalInfo
Definition: winddi.h:4226
ENGAPI VOID APIENTRY EngUnloadImage(_In_ HANDLE hModule)
Definition: ldevobj.c:913
_In_ LONG _In_ HWND hwnd
Definition: winddi.h:4023
ENGAPI HANDLE APIENTRY EngLoadImage(_In_ LPWSTR pwszDriver)
Definition: ldevobj.c:904