ms dxg.sys can now found and execute GetAvailDriverMemory it works from usermode with syscall,

svn path=/trunk/; revision=33163
This commit is contained in:
Magnus Olsen
2008-04-27 12:47:28 +00:00
parent c08cbfa7a2
commit a1197a2e61
2 changed files with 22 additions and 11 deletions
@@ -95,6 +95,11 @@ typedef struct _EDD_SURFACE
} EDD_SURFACE, *PEDD_SURFACE;
/* NOTE :
* if EDDDGBL_MISCCALLBACKS been set in struct EDD_DIRECTDRAW_GLOBAL member dwCallbackFlags,
* it mean that the callback member for it have been fill in from the graphic drv
*/
#define EDDDGBL_MISCCALLBACKS 0x01;
typedef struct _EDD_DIRECTDRAW_GLOBAL
{
/* 0x000 */ PVOID dhpdev;
@@ -105,7 +110,7 @@ typedef struct _EDD_DIRECTDRAW_GLOBAL
/* 0x01C */ ULONG unk_01c;
/* 0x020 */ DWORD dwCallbackFlags; /* <-- verify it match windows xp, dwCallbackFlags
Flags value
0x0001 = GUID_MiscellaneousCallbacks
0x0001 = ddMiscellanousCallbacks
0x0002 = ddVideoPortCallback and GUID_VideoPortCaps
0x0004 = GUID_ColorControlCallbacks
0x0040 = GUID_MotionCompCallbacks
@@ -117,26 +122,26 @@ typedef struct _EDD_DIRECTDRAW_GLOBAL
/* 0x024 */ ULONG unk_024;
#ifdef _WIN32
/* 0x028 */ LARGE_INTEGER llAssertModeTimeout; // 0x028 <-- verify it match windows xp, llAssertModeTimeout
/* 0x028 */ LARGE_INTEGER llAssertModeTimeout; // 0x028 <-- verify it match windows xp, llAssertModeTimeout
#else
/* 0x028 */ DWORD llAssertModeTimeoutLowPart;
/* 0x02C */ DWORD llAssertModeTimeoutHighPart;
#endif
/* 0x030 */ DWORD dwNumHeaps; // 0x030 <-- verify it match windows xp, dwNumHeaps
/* 0x034 */ VIDEOMEMORY *pvmList; // 0x034 <-- verify it match windows xp, pvmList
/* 0x030 */ DWORD dwNumHeaps; // 0x030 <-- verify it match windows xp, dwNumHeaps
/* 0x034 */ VIDEOMEMORY *pvmList; // 0x034 <-- verify it match windows xp, pvmList
/* 0x038 */ DWORD dwNumFourCC;
/* 0x03C */ PDWORD pdwFourCC;
/* 0x040 */ DD_HALINFO ddHalInfo;
/* 0x1E0 */ ULONG unk_1e0[46];
/* 0x298 */ DD_CALLBACKS ddCallbacks; // 0x298 <-- verify it match windows xp, ddCallbacks
/* 0x2C0 */ DD_SURFACECALLBACKS ddSurfaceCallbacks; // 0x2C0 <-- verify it match windows xp, ddSurfaceCallbacks
/* 0x304 */ DD_PALETTECALLBACKS ddPaletteCallbacks; // 0x304 <-- verify it match windows xp, ddPaletteCallbacks
/* 0x298 */ DD_CALLBACKS ddCallbacks; // 0x298 <-- verify it match windows xp, ddCallbacks
/* 0x2C0 */ DD_SURFACECALLBACKS ddSurfaceCallbacks; // 0x2C0 <-- verify it match windows xp, ddSurfaceCallbacks
/* 0x304 */ DD_PALETTECALLBACKS ddPaletteCallbacks; // 0x304 <-- verify it match windows xp, ddPaletteCallbacks
/* 0x314 */ ULONG unk_314[46];
/* 0x3D4 */ D3DNTHAL_CALLBACKS d3dNtHalCallbacks;
/* 0x460 */ ULONG unk_460[7];
/* 0x47C */ D3DNTHAL_CALLBACKS2 d3dNtHalCallbacks2;
/* 0x498 */ DD_VIDEOPORTCALLBACKS ddVideoPortCallback; // 0x498 <-- verify it match windows xp, ddVideoPortCallback
/* 0x4E0 */ DD_MISCELLANEOUSCALLBACKS ddMiscellanousCallbacks;
/* 0x498 */ DD_VIDEOPORTCALLBACKS ddVideoPortCallback; // 0x498 <-- verify it match windows xp, ddVideoPortCallback
/* 0x4E0 */ DD_MISCELLANEOUSCALLBACKS ddMiscellanousCallbacks; // 0x4E0 <-- verify it match windows xp, ddMiscellanousCallbacks
/* 0x4EC */ ULONG unk_4ec[18];
/* 0x534 */ D3DNTHAL_CALLBACKS3 d3dNtHalCallbacks3;
/* 0x5A4 */ ULONG unk_544;
@@ -183,6 +183,10 @@ intEnableReactXDriver(PEDD_DIRECTDRAW_GLOBAL pEddgbl, PDC pDC)
{
DPRINT1(" Fail : did not get DD_MISCELLANEOUSCALLBACKS \n");
}
else
{
pEddgbl->dwCallbackFlags |= EDDDGBL_MISCCALLBACKS;
}
}
else
{
@@ -950,8 +954,10 @@ void dump_edd_directdraw_global(EDD_DIRECTDRAW_GLOBAL *pEddgbl)
DPRINT1("0x%08lx PEDD_DIRECTDRAW_GLOBAL->ddVideoPortCallback.GetVideoSignalStatus : 0x%08lx\n",(((DWORD)&pEddgbl->ddVideoPortCallback.GetVideoSignalStatus) - (DWORD)pEddgbl),pEddgbl->ddVideoPortCallback.GetVideoSignalStatus);
DPRINT1("0x%08lx PEDD_DIRECTDRAW_GLOBAL->ddVideoPortCallback.ColorControl : 0x%08lx\n",(((DWORD)&pEddgbl->ddVideoPortCallback.ColorControl) - (DWORD)pEddgbl),pEddgbl->ddVideoPortCallback.ColorControl);
// DD_MISCELLANEOUSCALLBACKS ddMiscellanousCallbacks;
DPRINT1("0x%08lx PEDD_DIRECTDRAW_GLOBAL->ddMiscellanousCallbacks : 0x%08lx\n",(((DWORD)&pEddgbl->ddMiscellanousCallbacks) - (DWORD)pEddgbl),pEddgbl->ddMiscellanousCallbacks);
DPRINT1("0x%08lx PEDD_DIRECTDRAW_GLOBAL->ddMiscellanousCallbacks.dwSize : 0x%08lx\n",(((DWORD)&pEddgbl->ddMiscellanousCallbacks.dwSize) - (DWORD)pEddgbl),pEddgbl->ddMiscellanousCallbacks.dwSize);
DPRINT1("0x%08lx PEDD_DIRECTDRAW_GLOBAL->ddMiscellanousCallbacks.dwFlags : 0x%08lx\n",(((DWORD)&pEddgbl->ddMiscellanousCallbacks.dwFlags) - (DWORD)pEddgbl),pEddgbl->ddMiscellanousCallbacks.dwFlags);
DPRINT1("0x%08lx PEDD_DIRECTDRAW_GLOBAL->ddMiscellanousCallbacks.GetAvailDriverMemory : 0x%08lx\n",(((DWORD)&pEddgbl->ddMiscellanousCallbacks.GetAvailDriverMemory) - (DWORD)pEddgbl),pEddgbl->ddMiscellanousCallbacks.GetAvailDriverMemory);
DPRINT1("0x%08lx PEDD_DIRECTDRAW_GLOBAL->unk_4ec[0] : 0x%08lx\n",(((DWORD)&pEddgbl->unk_4ec[0]) - (DWORD)pEddgbl),pEddgbl->unk_4ec[0]);
DPRINT1("0x%08lx PEDD_DIRECTDRAW_GLOBAL->unk_4ec[1] : 0x%08lx\n",(((DWORD)&pEddgbl->unk_4ec[1]) - (DWORD)pEddgbl),pEddgbl->unk_4ec[1]);
DPRINT1("0x%08lx PEDD_DIRECTDRAW_GLOBAL->unk_4ec[2] : 0x%08lx\n",(((DWORD)&pEddgbl->unk_4ec[2]) - (DWORD)pEddgbl),pEddgbl->unk_4ec[2]);