From 535019cbf660be31a734ca41d60ed94d355aa2a5 Mon Sep 17 00:00:00 2001 From: Magnus Olsen Date: Sat, 9 Jun 2007 10:05:41 +0000 Subject: [PATCH] commit GetDeviceIdentifier and GetDeviceIdentifier7 both are under devloping, I hope I finish this implement today svn path=/trunk/; revision=27084 --- reactos/dll/directx/ddraw/Ddraw/ddraw.h | 5 +- reactos/dll/directx/ddraw/Ddraw/ddraw_main.c | 60 ++++++++++++++++++- reactos/dll/directx/ddraw/Ddraw/ddraw_stubs.c | 6 -- 3 files changed, 62 insertions(+), 9 deletions(-) diff --git a/reactos/dll/directx/ddraw/Ddraw/ddraw.h b/reactos/dll/directx/ddraw/Ddraw/ddraw.h index 895ffa8d3ea..fa304902aab 100644 --- a/reactos/dll/directx/ddraw/Ddraw/ddraw.h +++ b/reactos/dll/directx/ddraw/Ddraw/ddraw.h @@ -6,7 +6,8 @@ HRESULT WINAPI Main_DirectDraw_Compact(LPDIRECTDRAW7 ); HRESULT WINAPI Main_DirectDraw_CreateClipper(LPDIRECTDRAW7, DWORD, LPDIRECTDRAWCLIPPER *, IUnknown *); HRESULT WINAPI Main_DirectDraw_CreatePalette(LPDIRECTDRAW7, DWORD, LPPALETTEENTRY, LPDIRECTDRAWPALETTE*, LPUNKNOWN); HRESULT WINAPI Main_DirectDraw_DuplicateSurface(LPDIRECTDRAW7, LPDIRECTDRAWSURFACE7, LPDIRECTDRAWSURFACE7*); -HRESULT WINAPI Main_DirectDraw_GetDeviceIdentifier(LPDIRECTDRAW7, LPDDDEVICEIDENTIFIER2, DWORD); +HRESULT WINAPI Main_DirectDraw_GetDeviceIdentifier(LPDIRECTDRAW4, LPDDDEVICEIDENTIFIER, DWORD); +HRESULT WINAPI Main_DirectDraw_GetDeviceIdentifier7(LPDIRECTDRAW7, LPDDDEVICEIDENTIFIER2, DWORD); HRESULT WINAPI Main_DirectDraw_EnumSurfaces(LPDIRECTDRAW7, DWORD, LPDDSURFACEDESC2, LPVOID, LPDDENUMSURFACESCALLBACK7); @@ -39,7 +40,7 @@ HRESULT WINAPI Main_DirectDraw_CreatePalette(LPDIRECTDRAW7, DWORD, LPPALETTEENTR HRESULT WINAPI Main_DirectDraw_CreateSurface(LPDIRECTDRAW, LPDDSURFACEDESC, LPDIRECTDRAWSURFACE *, IUnknown *); HRESULT WINAPI Main_DirectDraw_CreateSurface4(LPDIRECTDRAW7, LPDDSURFACEDESC2, LPDIRECTDRAWSURFACE7 *, IUnknown *); HRESULT WINAPI Main_DirectDraw_DuplicateSurface(LPDIRECTDRAW7, LPDIRECTDRAWSURFACE7, LPDIRECTDRAWSURFACE7*); -HRESULT WINAPI Main_DirectDraw_GetDeviceIdentifier(LPDIRECTDRAW7, LPDDDEVICEIDENTIFIER2, DWORD); + HRESULT WINAPI Main_DirectDraw_EnumSurfaces(LPDIRECTDRAW7, DWORD, LPDDSURFACEDESC2, LPVOID, LPDDENUMSURFACESCALLBACK7); diff --git a/reactos/dll/directx/ddraw/Ddraw/ddraw_main.c b/reactos/dll/directx/ddraw/Ddraw/ddraw_main.c index 8f2150e74de..2b417ccc06b 100644 --- a/reactos/dll/directx/ddraw/Ddraw/ddraw_main.c +++ b/reactos/dll/directx/ddraw/Ddraw/ddraw_main.c @@ -413,6 +413,64 @@ Main_DirectDraw_CreateSurface4(LPDIRECTDRAW7 iface, LPDDSURFACEDESC2 pDDSD, return ret; } +/* For DirectDraw 4 - 6 */ +HRESULT WINAPI +Main_DirectDraw_GetDeviceIdentifier(LPDIRECTDRAW4 iface, + LPDDDEVICEIDENTIFIER pDDDI, DWORD dwFlags) +{ + HRESULT retVal = DD_OK; + DDDEVICEIDENTIFIER2 pDDDI2; + + ZeroMemory(&pDDDI2,sizeof(DDDEVICEIDENTIFIER2)); + + _SEH_TRY + { + memcpy(&pDDDI2 , pDDDI, sizeof(DDDEVICEIDENTIFIER)); + + retVal = Main_DirectDraw_GetDeviceIdentifier7((LPDIRECTDRAW7)iface, &pDDDI2, dwFlags); + + if (IsBadWritePtr(pDDDI, sizeof(DDDEVICEIDENTIFIER))) + { + retVal = DDERR_INVALIDPARAMS; + } + else + { + memcpy(pDDDI , &pDDDI2, sizeof(DDDEVICEIDENTIFIER) ); + } + } + _SEH_HANDLE + { + retVal = DD_FALSE; + } + _SEH_END; + + return retVal; +} + +HRESULT WINAPI +Main_DirectDraw_GetDeviceIdentifier7(LPDIRECTDRAW7 iface, + LPDDDEVICEIDENTIFIER2 pDDDI, DWORD dwFlags) +{ + // HRESULT retVal = DD_OK; + HRESULT retVal = DD_FALSE; + DX_WINDBG_trace(); + + _SEH_TRY + { + if (IsBadWritePtr( pDDDI, sizeof(DDDEVICEIDENTIFIER2) ) ) + { + retVal = DDERR_INVALIDPARAMS; + } + } + _SEH_HANDLE + { + retVal = DD_FALSE; + } + _SEH_END; + + return retVal; +} + /* 5 of 31 DirectDraw7_Vtable api are working simluare to windows */ /* 8 of 31 DirectDraw7_Vtable api are under devloping / testing */ @@ -445,7 +503,7 @@ IDirectDraw7Vtbl DirectDraw7_Vtable = Main_DirectDraw_GetSurfaceFromDC, Main_DirectDraw_RestoreAllSurfaces, Main_DirectDraw_TestCooperativeLevel, - Main_DirectDraw_GetDeviceIdentifier, + Main_DirectDraw_GetDeviceIdentifier7, Main_DirectDraw_StartModeTest, Main_DirectDraw_EvaluateMode }; diff --git a/reactos/dll/directx/ddraw/Ddraw/ddraw_stubs.c b/reactos/dll/directx/ddraw/Ddraw/ddraw_stubs.c index d2bea45cbb5..27777671b87 100644 --- a/reactos/dll/directx/ddraw/Ddraw/ddraw_stubs.c +++ b/reactos/dll/directx/ddraw/Ddraw/ddraw_stubs.c @@ -117,12 +117,6 @@ HRESULT WINAPI Main_DirectDraw_TestCooperativeLevel(LPDIRECTDRAW7 iface) DX_STUB; } -HRESULT WINAPI Main_DirectDraw_GetDeviceIdentifier(LPDIRECTDRAW7 iface, - LPDDDEVICEIDENTIFIER2 pDDDI, DWORD dwFlags) -{ - DX_WINDBG_trace(); - DX_STUB; -} HRESULT WINAPI Main_DirectDraw_StartModeTest(LPDIRECTDRAW7 iface, LPSIZE pModes, DWORD dwNumModes, DWORD dwFlags)