5 #define PDD_BASEOBJECT POBJ
6 #define DD_BASEOBJECT BASEOBJECT
8 /* _EDD_DIRECTDRAW_LOCAL is 0x54 byte big on windows xp */
9 typedef struct _EDD_DIRECTDRAW_LOCAL
14 /* 0x00 */ DD_BASEOBJECT pobj
; // verify it match windows xp
15 /* 0x10 */ struct _EDD_DIRECTDRAW_GLOBAL
* peDirectDrawGlobal
; // verify it match windows xp
16 /* 0x14 */ struct _EDD_SURFACE
* peSurface_DdList
;
17 /* 0x18 */ ULONG unk_018
;
18 /* 0x1C */ ULONG unk_01c
;
19 /* 0x20 */ ULONG unk_020
;
20 /* 0x24 */ struct _EDD_DIRECTDRAW_GLOBAL
* peDirectDrawGlobal2
; // verify it match windows xp
21 /* 0x28 */ FLATPTR fpProcess
;
23 /* 0x30 */ struct _EDD_DIRECTDRAW_LOCAL
*peDirectDrawLocal_prev
; // verify it match windows xp, to old lcl store here when new handle are create.
24 /* 0x34 */ PEPROCESS Process
;
25 /* 0x38 */ ULONG unk_038
;
26 /* 0x3C */ HANDLE UniqueProcess
;
27 /* 0x40 */ VOID
*unk_040
;
28 /* 0x44 */ VOID
*unk_044
;
29 /* 0x48 */ ULONG unk_048
;
30 /* 0x4C */ ULONG unk_04C
;
31 /* 0x50 */ ULONG unk_050
;
32 } EDD_DIRECTDRAW_LOCAL
, *PEDD_DIRECTDRAW_LOCAL
;
38 typedef struct _EDD_SURFACE
46 // Direct Draw Surface Data
48 DD_SURFACE_LOCAL ddsSurfaceLocal
;
49 DD_SURFACE_MORE ddsSurfaceMore
;
50 DD_SURFACE_GLOBAL ddsSurfaceGlobal
;
51 DD_SURFACE_INT ddsSurfaceInt
;
56 struct _EDD_SURFACE
*peSurface_DdNext
;
57 struct _EDD_SURFACE
*peSurface_LockNext
;
65 // Private Direct Draw Data
67 struct _EDD_DIRECTDRAW_GLOBAL
* peDirectDrawGlobal
;
68 struct _EDD_DIRECTDRAW_LOCAL
* peDirectDrawLocal
;
79 ULONG iVisRgnUniqueness
;
95 } EDD_SURFACE
, *PEDD_SURFACE
;
99 * if these been set in struct EDD_DIRECTDRAW_GLOBAL member dwCallbackFlags,
100 * it mean that the callback member for it have been fill in from the graphic drv
102 #define EDDDGBL_MISCCALLBACKS 0x01 // ddMiscellanousCallbacks
103 #define EDDDGBL_VIDEOPORTCALLBACKS 0x02 // ddVideoPortCallback
104 #define EDDDGBL_MISC2CALLBACKS 0x80 // ddMiscellanous2Callbacks
106 typedef struct _EDD_DIRECTDRAW_GLOBAL
108 /* 0x000 */ PVOID dhpdev
;
109 /* 0x004 */ DWORD dwReserved1
;
110 /* 0x008 */ DWORD dwReserved2
;
111 /* 0x00C */ ULONG unk_000c
[3];
112 /* 0x018 */ LONG cDriverReferences
;
113 /* 0x01C */ ULONG unk_01c
;
114 /* 0x020 */ DWORD dwCallbackFlags
; /* <-- verify it match windows xp, dwCallbackFlags
116 0x0002 = ddVideoPortCallback and GUID_VideoPortCaps
117 0x0004 = GUID_ColorControlCallbacks
118 0x0040 = GUID_MotionCompCallbacks
119 0x0080 = GUID_Miscellaneous2Callbacks
120 0x0100 = GUID_DDMoreCaps
121 0x0200 = GUID_D3DCallbacks3
122 0x0400 = GUID_NTCallbacks
125 /* 0x024 */ ULONG unk_024
;
127 /* 0x028 */ LARGE_INTEGER llAssertModeTimeout
; // 0x028 <-- verify it match windows xp, llAssertModeTimeout
129 /* 0x028 */ DWORD llAssertModeTimeoutLowPart
;
130 /* 0x02C */ DWORD llAssertModeTimeoutHighPart
;
132 /* 0x030 */ DWORD dwNumHeaps
; // 0x030 <-- verify it match windows xp, dwNumHeaps
133 /* 0x034 */ VIDEOMEMORY
*pvmList
; // 0x034 <-- verify it match windows xp, pvmList
134 /* 0x038 */ DWORD dwNumFourCC
;
135 /* 0x03C */ PDWORD pdwFourCC
;
136 /* 0x040 */ DD_HALINFO ddHalInfo
;
137 /* 0x1E0 */ ULONG unk_1e0
[46];
138 /* 0x298 */ DD_CALLBACKS ddCallbacks
; // 0x298 <-- verify it match windows xp, ddCallbacks
139 /* 0x2C0 */ DD_SURFACECALLBACKS ddSurfaceCallbacks
; // 0x2C4 <-- verify it match windows xp, ddSurfaceCallbacks
140 /* 0x300 */ DD_PALETTECALLBACKS ddPaletteCallbacks
; // 0x300 <-- verify it match windows xp, ddPaletteCallbacks
141 /* 0x314 */ ULONG unk_314
[46];
142 /* 0x3D4 */ D3DNTHAL_CALLBACKS d3dNtHalCallbacks
;
143 /* 0x460 */ ULONG unk_460
[7];
144 /* 0x47C */ D3DNTHAL_CALLBACKS2 d3dNtHalCallbacks2
;
145 /* 0x498 */ DD_VIDEOPORTCALLBACKS ddVideoPortCallback
; // 0x498 <-- verify it match windows xp, ddVideoPortCallback
146 /* 0x4E0 */ DD_MISCELLANEOUSCALLBACKS ddMiscellanousCallbacks
; // 0x4E0 <-- verify it match windows xp, ddMiscellanousCallbacks
147 /* 0x4EC */ DD_MISCELLANEOUS2CALLBACKS ddMiscellanous2Callbacks
; // 0x4EC <-- verify it match windows xp, ddMiscellanous2Callbacks
148 /* 0x504 */ ULONG unk_504
[12];
149 /* 0x534 */ D3DNTHAL_CALLBACKS3 d3dNtHalCallbacks3
;
150 /* 0x5A4 */ ULONG unk_544
;
151 /* 0x5A8 */ ULONG unk_548
;
152 /* 0x54C */ ULONG unk_54c
[23];
153 /* 0x5A8 */ EDD_DIRECTDRAW_LOCAL
* peDirectDrawLocalList
; // 0x5A8 <-- verify it match windows xp, comment it is current local struct not a list, peDirectDrawLocalList Current
154 /* 0x5ac */ EDD_SURFACE
* peSurface_LockList
;
155 /* 0x5B0 */ FLONG fl
;
156 /* 0x5B4 */ ULONG cSurfaceLocks
;
157 /* 0x5B8 */ PKEVENT pAssertModeEvent
;
158 /* 0x5Bc */ EDD_SURFACE
*peSurfaceCurrent
;
159 /* 0x5C0 */ EDD_SURFACE
*peSurfacePrimary
;
160 /* 0x5C4 */ BOOL bSuspended
; // 0x5C4 <-- verify it match windows xp, tells to dxg to use the drv own api or return error code instead
161 /* 0x5C8 */ ULONG unk_5c8
[12];
162 /* 0x5F8 */ RECTL rcbounds
;
163 /* 0x608 */ ULONG unk_608
;
164 /* 0x60c */ HDEV hDev
; // 0x60c <-- verify it match windows xp, The real Pdev, hDev
166 /* Windows XP and higher */
167 /* 0x610 */ ULONG unk_610
[63];
168 /* 0x70C */ ULONG unk_70C
;
169 } EDD_DIRECTDRAW_GLOBAL
, *PEDD_DIRECTDRAW_GLOBAL
;