[ros-diffs] [greatlrd] 27095: almost finish GetDeviceIdentifier implementions, leftdo fill in guidDeviceIdentifier and dwWHQLLevel

greatlrd at svn.reactos.org greatlrd at svn.reactos.org
Sun Jun 10 00:49:39 CEST 2007


Author: greatlrd
Date: Sun Jun 10 02:49:38 2007
New Revision: 27095

URL: http://svn.reactos.org/svn/reactos?rev=27095&view=rev
Log:
almost finish GetDeviceIdentifier implementions, 
leftdo fill in guidDeviceIdentifier and dwWHQLLevel

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/ddraw_main.c?rev=27095&r1=27094&r2=27095&view=diff
==============================================================================
--- trunk/reactos/dll/directx/ddraw/Ddraw/ddraw_main.c (original)
+++ trunk/reactos/dll/directx/ddraw/Ddraw/ddraw_main.c Sun Jun 10 02:49:38 2007
@@ -461,6 +461,8 @@
     HKEY hKey;
     DWORD lpType = 0;
     DWORD strSize = MAX_DDDEVICEID_STRING;
+    char *pdest;
+    char* pcCnvEnd;
 
     LPDDRAWI_DIRECTDRAW_INT This = (LPDDRAWI_DIRECTDRAW_INT) iface;
 
@@ -507,37 +509,39 @@
             if (found == TRUE)
             {
                 /* 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)
+
+                        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);
+                            ZeroMemory(pDDDI->szDriver,MAX_DDDEVICEID_STRING);
                         }
                         RegCloseKey(hKey);
                     }
+
+                    strcpy( pDDDI->szDescription, DisplayDeviceA.DeviceString);
+                    pDDDI->liDriverVersion.HighPart = 0;
+                    pDDDI->liDriverVersion.LowPart = 0;
+
+                    pdest = strstr(DisplayDeviceA.DeviceID,"REV_");
+                    pDDDI->dwRevision =  strtol ( &pdest[4], &pcCnvEnd, 16);
+
+                    pdest = strstr(DisplayDeviceA.DeviceID,"SUBSYS_");
+                    pDDDI->dwSubSysId =  strtol ( &pdest[7], &pcCnvEnd, 16);
+
+                    pdest = strstr(DisplayDeviceA.DeviceID,"DEV_");
+                    pDDDI->dwDeviceId = strtol ( &pdest[4], &pcCnvEnd, 16);
+
+                    pdest = strstr(DisplayDeviceA.DeviceID,"VEN_");
+                    pDDDI->dwVendorId =strtol ( &pdest[4], &pcCnvEnd, 16);
+
+                    /* FIXME pDDDI->guidDeviceIdentifier, pDDDI->dwWHQLLevel */
+
+                    pDDDI->dwWHQLLevel = 0;
                     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 
-                 */
 
                 break;
             }




More information about the Ros-diffs mailing list