Techwiki:Win32k/EDD DIRECTDRAW GLOBAL
From ReactOS
typedef struct _EDD_DIRECTDRAW_GLOBAL
{
/* 0x000 */ PVOID dhpdev; /* The assign pdev */
/* 0x004 */ DWORD dwReserved1;
/* 0x008 */ DWORD dwReserved2;
/* 0x00C */ ULONG unk_000c[3];
/* 0x018 */ LONG cDriverReferences;
/* 0x01C */ ULONG unk_01c[3];
/* 0x028 */ LONGLONG llAssertModeTimeout;
/* 0x030 */ DWORD dwNumHeaps;
/* 0x034 */ VIDEOMEMORY *pvmList;
/* 0x038 */ DWORD dwNumFourCC;
/* 0x03C */ PDWORD pdwFourCC;
/* 0x040 */ DD_HALINFO ddHalInfo;
/* 0x1E0 */ ULONG unk_1e0[44];
/* 0x290 */ DD_CALLBACKS ddCallbacks;
/* 0x2C4 */ DD_SURFACECALLBACKS ddSurfaceCallbacks;
/* 0x304 */ DD_PALETTECALLBACKS ddPaletteCallbacks;
/* 0x314 */ ULONG unk_314[48];
/* 0x3D4 */ D3DNTHAL_CALLBACKS d3dNtHalCallbacks;
/* 0x460 */ ULONG unk_460[7];
/* 0x47C */ D3DNTHAL_CALLBACKS2 d3dNtHalCallbacks2;
/* 0x498 */ ULONG unk_498[18];
/* 0x4E0 */ DD_MISCELLANEOUSCALLBACKS ddMiscellanousCallbacks;
/* 0x4EC */ ULONG unk_4ec[18];
/* 0x534 */ D3DNTHAL_CALLBACKS3 d3dNtHalCallbacks3;
/* 0x54C */ ULONG unk_54c[23];
/* 0x5A8 */ EDD_DIRECTDRAW_LOCAL* peDirectDrawLocalList;
/* 0x5ac */ EDD_SURFACE* peSurface_LockList;
/* 0x5B0 */ FLONG fl;
/* 0x5B4 */ ULONG cSurfaceLocks;
/* 0x5B8 */ PKEVENT pAssertModeEvent;
/* 0x5Bc */ EDD_SURFACE *peSurfaceCurrent;
/* 0x5C0 */ EDD_SURFACE *peSurfacePrimary;
/* 0x5C4 */ BOOL bSuspended;
/* 0x5C8 */ ULONG unk_5c8[12];
/* 0x5F8 */ RECTL rcbounds;
/* 0x608 */ HDEV hDev;
/* 0x60c */ PVOID hPDev;
} EDD_DIRECTDRAW_GLOBAL, *PEDD_DIRECTDRAW_GLOBAL;
partly updated for windows xp and windows 2003, the above struct is from yaun book
NOTE : if any of these flags are set in dwCallbackFlags (struct EDD_DIRECTDRAW_GLOBAL), it means that the respective callback member for it has been filled in by a graphic driver
- define EDDDGBL_MISCCALLBACKS 0x01 // ddMiscellanousCallbacks
- define EDDDGBL_VIDEOPORTCALLBACKS 0x02 // ddVideoPortCallback
- define EDDDGBL_MISC2CALLBACKS 0x80 // ddMiscellanous2Callbacks
typedef struct _EDD_DIRECTDRAW_GLOBAL
{
/* 0x000 */ PVOID dhpdev; // 0x000 <-- verified to match Windows XP, dhpdev, the drv hPDev -->
/* 0x004 */ DWORD dwReserved1;
/* 0x008 */ DWORD dwReserved2;
/* 0x00C */ ULONG unk_000c[3];
/* 0x018 */ LONG cDriverReferences;
/* 0x01C */ ULONG unk_01c;
/* 0x020 */ DWORD dwCallbackFlags; // 0x020 <-- verified to match Windows XP, dwCallbackFlags
/* 0x024 */ ULONG unk_024;
/* 0x028 */ PVOID llAssertModeTimeout; // 0x028 <-- verified to match Windows XP, llAssertModeTimeout, it is a function call llAssertModeTimeout
/* 0x030 */ DWORD dwNumHeaps; // 0x030 <-- verified to match Windows XP, dwNumHeaps
/* 0x034 */ VIDEOMEMORY *pvmList; // 0x034 <-- verified to match Windows XP, pvmList
/* 0x038 */ DWORD dwNumFourCC;
/* 0x03C */ PDWORD pdwFourCC;
/* 0x040 */ DD_HALINFO ddHalInfo; // 0x040 <-- verified to match Windows XP, ddHalInfo
/* 0x1E0 */ ULONG unk_1e0[46];
/* 0x298 */ DD_CALLBACKS ddCallbacks; // 0x298 <-- verified to match Windows XP, ddCallbacks
/* 0x2C4 */ DD_SURFACECALLBACKS ddSurfaceCallbacks; // 0x2C4 <-- verified to match Windows XP, ddSurfaceCallbacks
/* 0x300 */ DD_PALETTECALLBACKS ddPaletteCallbacks; // 0x300 <-- verified to match Windows XP, ddPaletteCallbacks
/* 0x314 */ D3DNTHAL_GLOBALDRIVERDATA d3dNtGlobalDriverData // 0x314 <-- verified to match Windows XP, d3dNtGlobalDriverData
/* 0x3D4 */ D3DNTHAL_CALLBACKS d3dNtHalCallbacks;
/* 0x460 */ ULONG unk_460[9];
/* 0x47C */ D3DNTHAL_CALLBACKS2 d3dNtHalCallbacks2;
/* 0x498 */ DD_VIDEOPORTCALLBACKS ddVideoPortCallback; // 0x498 <-- verified to match Windows XP, ddVideoPortCallback
/* 0x4E0 */ DD_MISCELLANEOUSCALLBACKS ddMiscellanousCallbacks; // 0x4E0 <-- verified to match Windows XP, ddMiscellanousCallbacks
/* 0x4EC */ DD_MISCELLANEOUS2CALLBACKS ddMiscellanous2Callbacks; // 0x4EC <-- verified to match Windows XP, ddMiscellanous2Callbacks
/* 0x504 */ ULONG unk_504[10];
/* 0x534 */ D3DNTHAL_CALLBACKS3 d3dNtHalCallbacks3;
/* 0x5A4 */ ULONG unk_544;
/* 0x5A8 */ ULONG unk_548;
/* 0x54C */ ULONG unk_54c[23];
/* 0x5A8 */ EDD_DIRECTDRAW_LOCAL* peDirectDrawLocalList; // 0x5A8 <-- verified to match Windows XP, it is a current local struct, not a list, peDirectDrawLocalList Current
/* 0x5ac */ EDD_SURFACE* peSurface_LockList;
/* 0x5B0 */ FLONG fl;
/* 0x5B4 */ ULONG cSurfaceLocks;
/* 0x5B8 */ PKEVENT pAssertModeEvent;
/* 0x5Bc */ EDD_SURFACE *peSurfaceCurrent;
/* 0x5C0 */ EDD_SURFACE *peSurfacePrimary;
/* 0x5C4 */ BOOL bSuspended; // 0x5C4 <-- verified to match Windows XP, tells dxg to use driver's own api or return error code instead
/* 0x5C8 */ ULONG unk_5c8[12];
/* 0x5F8 */ RECTL rcbounds;
/* 0x608 */ ULONG unk_608;
/* 0x60c */ HDEV hDev; // 0x60c <-- verified to match Windows XP, The real Pdev, hDev
} EDD_DIRECTDRAW_GLOBAL, *PEDD_DIRECTDRAW_GLOBAL;

