6 #define PDD_BASEOBJECT POBJ
7 #define DD_BASEOBJECT BASEOBJECT
10 /* _EDD_DIRECTDRAW_LOCAL is 0x54 bytes long on Windows XP */
11 typedef struct _EDD_DIRECTDRAW_LOCAL
16 /* 0x00 */ DD_BASEOBJECT pobj
; // verified to match Windows XP
17 /* 0x10 */ struct _EDD_DIRECTDRAW_GLOBAL
* peDirectDrawGlobal
; // verified to match Windows XP
18 /* 0x14 */ struct _EDD_SURFACE
* peSurface_DdList
;
19 /* 0x18 */ ULONG unk_018
;
20 /* 0x1C */ ULONG unk_01c
;
21 /* 0x20 */ ULONG unk_020
;
22 /* 0x24 */ struct _EDD_DIRECTDRAW_GLOBAL
* peDirectDrawGlobal2
; // verified to match Windows XP
23 /* 0x28 */ FLATPTR fpProcess
;
25 /* 0x30 */ struct _EDD_DIRECTDRAW_LOCAL
*peDirectDrawLocal_prev
; // verified to match Windows XP,
26 // points to the old DDLocal when new handle is created.
27 /* 0x34 */ ULONG unk_034
;
28 /* 0x38 */ ULONG unk_038
;
29 /* 0x3C */ HANDLE UniqueProcess
;
30 /* 0x40 */ PEPROCESS Process
;
31 /* 0x44 */ VOID
*unk_044
;
32 /* 0x48 */ ULONG unk_048
;
33 /* 0x4C */ ULONG unk_04C
;
34 /* 0x50 */ ULONG unk_050
;
35 } EDD_DIRECTDRAW_LOCAL
, *PEDD_DIRECTDRAW_LOCAL
;
41 typedef struct _EDD_SURFACE
49 // Direct Draw Surface Data
51 DD_SURFACE_LOCAL ddsSurfaceLocal
;
52 DD_SURFACE_MORE ddsSurfaceMore
;
53 DD_SURFACE_GLOBAL ddsSurfaceGlobal
;
54 DD_SURFACE_INT ddsSurfaceInt
;
59 struct _EDD_SURFACE
*peSurface_DdNext
;
60 struct _EDD_SURFACE
*peSurface_LockNext
;
68 // Private Direct Draw Data
70 struct _EDD_DIRECTDRAW_GLOBAL
* peDirectDrawGlobal
;
71 struct _EDD_DIRECTDRAW_LOCAL
* peDirectDrawLocal
;
82 ULONG iVisRgnUniqueness
;
98 } EDD_SURFACE
, *PEDD_SURFACE
;
102 * if any of these flags are set in dwCallbackFlags (struct EDD_DIRECTDRAW_GLOBAL),
103 * it means that the respective callback member for it has been filled in by a graphic driver
105 #define EDDDGBL_MISCCALLBACKS 0x001 // ddMiscellanousCallbacks
106 #define EDDDGBL_VIDEOPORTCALLBACKS 0x002 // ddVideoPortCallback
107 #define EDDDGBL_COLORCONTROLCALLBACKS 0x004 // ddColorControlCallbacks
108 #define EDDDGBL_MOTIONCOMPCALLBACKS 0x040 // ddMotionCompCallbacks
109 #define EDDDGBL_MISC2CALLBACKS 0x080 // ddMiscellanous2Callbacks
110 #define EDDDGBL_DDMORECAPS 0x100 // ddMorecaps
111 #define EDDDGBL_D3DCALLBACKS3 0x200 // d3dNtHalCallbacks3
112 #define EDDDGBL_NTCALLBACKS 0x400 // ddNtCallbacks
113 #define EDDDGBL_PRIVATEDRIVERCAPS 0x800 // ddNtPrivateDriverCaps
116 typedef struct _EDD_DIRECTDRAW_GLOBAL
118 /* 0x000 */ PVOID dhpdev
; // 0x000 <-- verified to match Windows XP, dhpdev, the drv hPDev -->
119 /* 0x004 */ DWORD dwReserved1
;
120 /* 0x008 */ DWORD dwReserved2
;
121 /* 0x00C */ ULONG unk_000c
[3];
122 /* 0x018 */ LONG cDriverReferences
;
123 /* 0x01C */ ULONG unk_01c
;
124 /* 0x020 */ DWORD dwCallbackFlags
; /* 0x020 <-- verified to match Windows XP, dwCallbackFlags
126 0x0002 = ddVideoPortCallback and GUID_VideoPortCaps
127 0x0004 = GUID_ColorControlCallbacks
128 0x0040 = GUID_MotionCompCallbacks
129 0x0080 = GUID_Miscellaneous2Callbacks
130 0x0100 = GUID_DDMoreCaps
131 0x0200 = GUID_D3DCallbacks3
132 0x0400 = GUID_NTCallbacks
135 /* 0x024 */ ULONG unk_024
;
137 /* 0x028 */ LARGE_INTEGER llAssertModeTimeout
; /* 0x028 <-- verified to match Windows XP, llAssertModeTimeout, it
139 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GraphicsDrivers\DCI
140 Specifies how long a DirectDraw application can keep a graphics-device frame-buffer locked
141 in second, if this value are set to 0 it disable directdraw acclatrions.
142 it is normal set to 7 (7 sec in windwos xp/2003)
145 /* 0x030 */ DWORD dwNumHeaps
; // 0x030 <-- verified to match Windows XP, dwNumHeaps
146 /* 0x034 */ VIDEOMEMORY
*pvmList
; // 0x034 <-- verified to match Windows XP, pvmList
147 /* 0x038 */ DWORD dwNumFourCC
; // 0x038 <-- verified to match Windows XP, dwNumFourCC
148 /* 0x03C */ PDWORD pdwFourCC
; // 0x03C <-- verified to match Windows XP, pdwFourCC
149 /* 0x040 */ DD_HALINFO ddHalInfo
; // 0x040 <-- verified to match Windows XP, ddHalInfo
150 /* 0x1E0 */ ULONG unk_1e0
[17]; // DxApi interface (size 0x44)
151 /* 0x224 */ ULONG unk_224
; //
152 /* 0x228 */ ULONG unk_228
[14]; // AGP interface (size 0x38)
153 /* 0x260 */ DDKERNELCAPS ddKernelCaps
; // 0x260 <-- verified to match Windows Server 2003
154 /* 0x26C */ DD_MORECAPS ddMoreCaps
; // 0x26C <-- verified to match Windows Server 2003
155 /* 0x290 */ DD_NTPRIVATEDRIVERCAPS ddNtPrivateDriverCaps
; // 0x290 <-- verified to match Windows Server 2003
156 /* 0x298 */ DD_CALLBACKS ddCallbacks
; // 0x298 <-- verified to match Windows XP, ddCallbacks
157 /* 0x2C4 */ DD_SURFACECALLBACKS ddSurfaceCallbacks
; // 0x2C4 <-- verified to match Windows XP, ddSurfaceCallbacks
158 /* 0x304 */ DD_PALETTECALLBACKS ddPaletteCallbacks
; // 0x304 <-- verified to match Windows XP, ddPaletteCallbacks
159 /* 0x314 */ D3DNTHAL_GLOBALDRIVERDATA d3dNtGlobalDriverData
;
160 /* 0x3D4 */ D3DNTHAL_CALLBACKS d3dNtHalCallbacks
;
161 /* 0x460 */ DD_D3DBUFCALLBACKS d3dBufCallbacks
;
162 /* 0x47C */ D3DNTHAL_CALLBACKS2 d3dNtHalCallbacks2
;
163 /* 0x498 */ DD_VIDEOPORTCALLBACKS ddVideoPortCallback
; // 0x498 <-- verified to match Windows XP, ddVideoPortCallback
164 /* 0x4E0 */ DD_MISCELLANEOUSCALLBACKS ddMiscellanousCallbacks
; // 0x4E0 <-- verified to match Windows XP, ddMiscellanousCallbacks
165 /* 0x4EC */ DD_MISCELLANEOUS2CALLBACKS ddMiscellanous2Callbacks
; // 0x4EC <-- verified to match Windows XP, ddMiscellanous2Callbacks
166 /* 0x504 */ DD_NTCALLBACKS ddNtCallbacks
; // 0x504 <-- verified to match Windows Server 2003
167 /* 0x518 */ DD_COLORCONTROLCALLBACKS ddColorControlCallbacks
; // 0x518 <-- verified to match Windows Server 2003
168 /* 0x524 */ DD_KERNELCALLBACKS ddKernelCallbacks
; // 0x524 <-- verified to match Windows Server 2003
169 /* 0x534 */ D3DNTHAL_CALLBACKS3 d3dNtHalCallbacks3
; // 0x524 <-- verified to match Windows Server 2003
170 /* 0x54C */ DD_MOTIONCOMPCALLBACKS ddMotionCompCallbacks
; // 0x54C <-- verified to match Windows Server 2003
171 /* 0x57C */ DDMORESURFACECAPS ddMoreSurfaceCaps
; // 0x57C <-- verified to match Windows Server 2003
172 /* 0x5A8 */ EDD_DIRECTDRAW_LOCAL
* peDirectDrawLocalList
; // 0x5A8 <-- verified to match Windows XP, it is a current local struct, not a list, peDirectDrawLocalList Current
173 /* 0x5AC */ EDD_SURFACE
* peSurface_LockList
;
174 /* 0x5B0 */ FLONG fl
;
175 /* 0x5B4 */ ULONG cSurfaceLocks
;
176 /* 0x5B8 */ PKEVENT pAssertModeEvent
;
177 /* 0x5BC */ EDD_SURFACE
*peSurfaceCurrent
;
178 /* 0x5C0 */ EDD_SURFACE
*peSurfacePrimary
;
179 /* 0x5C4 */ BOOL bSuspended
; // 0x5C4 <-- verified to match Windows XP, tells dxg to use driver's own api or return error code instead
180 /* 0x5C8 */ ULONG unk_5c8
[12];
181 /* 0x5F8 */ RECTL rcbounds
;
182 /* 0x608 */ ULONG unk_608
;
183 /* 0x60C */ HDEV hDev
; // 0x60c <-- verified to match Windows XP, The real Pdev, hDev
185 /* Windows XP and higher */
186 /* 0x610 */ ULONG unk_610
[63];
187 /* 0x70C */ ULONG unk_70C
;
188 } EDD_DIRECTDRAW_GLOBAL
, *PEDD_DIRECTDRAW_GLOBAL
;