Author: greatlrd Date: Sat Jun 9 21:24:32 2007 New Revision: 27088
URL: http://svn.reactos.org/svn/reactos?rev=27088&view=rev Log: start implement of GetDeviceIdentifier we are filling one member right.
Modified: trunk/reactos/dll/directx/ddraw/Ddraw/ddraw_main.c
Modified: trunk/reactos/dll/directx/ddraw/Ddraw/ddraw_main.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/directx/ddraw/Ddraw/ddr... ============================================================================== --- trunk/reactos/dll/directx/ddraw/Ddraw/ddraw_main.c (original) +++ trunk/reactos/dll/directx/ddraw/Ddraw/ddraw_main.c Sat Jun 9 21:24:32 2007 @@ -11,6 +11,8 @@
#include "rosdraw.h"
+#include <string.h> + /* PSEH for SEH Support */ #include <pseh/pseh.h>
@@ -451,16 +453,69 @@ 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) ) ) + HRESULT retVal = DDERR_INVALIDPARAMS; + + BOOL found = FALSE; + DWORD iDevNum = 0; + DISPLAY_DEVICEA DisplayDeviceA; + + LPDDRAWI_DIRECTDRAW_INT This = (LPDDRAWI_DIRECTDRAW_INT) iface; + + DX_WINDBG_trace(); + + _SEH_TRY + { + if ( (IsBadWritePtr( pDDDI, sizeof(DDDEVICEIDENTIFIER2) ) ) || + (dwFlags & ~DDGDI_GETHOSTIDENTIFIER)) { retVal = DDERR_INVALIDPARAMS; - } + _SEH_LEAVE; + } + + /* now we can start getting the driver data */ + + while (1) + { + ZeroMemory(&DisplayDeviceA,sizeof(DISPLAY_DEVICEA)); + + DisplayDeviceA.cb = sizeof(DISPLAY_DEVICEA); + + if ( EnumDisplayDevicesA( NULL, iDevNum, &DisplayDeviceA, 0) == 0) + { + retVal = DDERR_INVALIDPARAMS; + break; + } + + if (!_stricmp(DisplayDeviceA.DeviceName, This->lpLcl->lpGbl->cDriverName)) + { + // if we got another device like hardware mpeg decoder or video card or another drv + found = TRUE; + } + else if (DisplayDeviceA.StateFlags & DISPLAY_DEVICE_PRIMARY_DEVICE) + { + /* double check if it primary driver we just found */ + if (!_stricmp( This->lpLcl->lpGbl->cDriverName, "DISPLAY")) + { + /* yeah we found it */ + found = TRUE; + } + } + + if (found == TRUE) + { + /* we found our driver now we start setup it */ + strcpy( pDDDI->szDescription, DisplayDeviceA.DeviceString); + + /* This api still under devloping now we can get desc of the + primary drv + */ + retVal = DD_OK; + break; + } + + iDevNum++; + } + } _SEH_HANDLE {