From e19e754ce39a76a24fd76d04f81c5957db22fcc4 Mon Sep 17 00:00:00 2001 From: Magnus Olsen Date: Sat, 9 Jun 2007 20:22:09 +0000 Subject: [PATCH] start implement of GetDeviceIdentifier we are filling one more member right. this time we getting the driver name svn path=/trunk/; revision=27093 --- reactos/dll/directx/ddraw/Ddraw/ddraw_main.c | 31 +++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/reactos/dll/directx/ddraw/Ddraw/ddraw_main.c b/reactos/dll/directx/ddraw/Ddraw/ddraw_main.c index 6cdb5cfed44..59a273f9d5b 100644 --- a/reactos/dll/directx/ddraw/Ddraw/ddraw_main.c +++ b/reactos/dll/directx/ddraw/Ddraw/ddraw_main.c @@ -458,6 +458,9 @@ Main_DirectDraw_GetDeviceIdentifier7(LPDIRECTDRAW7 iface, BOOL found = FALSE; DWORD iDevNum = 0; DISPLAY_DEVICEA DisplayDeviceA; + HKEY hKey; + DWORD lpType = 0; + DWORD strSize = MAX_DDDEVICEID_STRING; LPDDRAWI_DIRECTDRAW_INT This = (LPDDRAWI_DIRECTDRAW_INT) iface; @@ -506,10 +509,36 @@ Main_DirectDraw_GetDeviceIdentifier7(LPDIRECTDRAW7 iface, /* we found our driver now we start setup it */ strcpy( pDDDI->szDescription, DisplayDeviceA.DeviceString); + if (!_strnicmp(DisplayDeviceA.DeviceKey,"\\REGISTRY\\Machine\\",18)) + { + if (RegOpenKeyExA(HKEY_LOCAL_MACHINE, &DisplayDeviceA.DeviceKey[18], 0, KEY_QUERY_VALUE, &hKey) == ERROR_SUCCESS ) + { + if (RegQueryValueExA(hKey, "InstalledDisplayDrivers",0, &lpType, (LPBYTE)pDDDI->szDriver, &strSize) == ERROR_SUCCESS) + { + char *pdest; + /* FIXME if the file is name + ati2dvag.dll.dll then we are doom + a better code should be use to strip away .dll + */ + pdest = strstr(pDDDI->szDriver,".dll"); + memset(pdest,0,3); + } + RegCloseKey(hKey); + } + retVal = DD_OK; + } + //else + //{ + // /* FIXME ?? */ + // DX_STUB_str("Error did not manger cut reg key\n" + // DX_STUB_str(DisplayDeviceA.DeviceKey); + //} + + /* This api still under devloping now we can get desc of the primary drv */ - retVal = DD_OK; + break; }