Only dwWHQLLevel are left todo in GetDeviceIdentifier
authorMagnus Olsen <magnus@greatlord.com>
Sun, 10 Jun 2007 03:33:17 +0000 (03:33 +0000)
committerMagnus Olsen <magnus@greatlord.com>
Sun, 10 Jun 2007 03:33:17 +0000 (03:33 +0000)
svn path=/trunk/; revision=27099

reactos/dll/directx/ddraw/Ddraw/ddraw_main.c

index 805953e..b893d28 100644 (file)
@@ -463,7 +463,7 @@ Main_DirectDraw_GetDeviceIdentifier7(LPDIRECTDRAW7 iface,
     DWORD strSize = MAX_DDDEVICEID_STRING;
     char *pdest;
     char* pcCnvEnd;
-    long data;
+    long *lpdata;
 
     LPDDRAWI_DIRECTDRAW_INT This = (LPDDRAWI_DIRECTDRAW_INT) iface;
 
@@ -542,18 +542,23 @@ Main_DirectDraw_GetDeviceIdentifier7(LPDIRECTDRAW7 iface,
                     pdest = strstr(DisplayDeviceA.DeviceID,"VEN_");
                     pDDDI->dwVendorId =strtol ( &pdest[4], &pcCnvEnd, 16);
 
-                    /* FIXME pDDDI->guidDeviceIdentifier, pDDDI->dwWHQLLevel */
-
+                    /* Count out the guidDeviceIdentifier */
                     memcpy(&pDDDI->guidDeviceIdentifier, &CLSID_DirectDraw,sizeof(GUID));
                    
                     pDDDI->guidDeviceIdentifier.Data1 = pDDDI->guidDeviceIdentifier.Data1 ^ pDDDI->dwVendorId;
 
-                    data = (pDDDI->guidDeviceIdentifier.Data3 <<16) | pDDDI->guidDeviceIdentifier.Data2;
-                    data = data ^ pDDDI->dwDeviceId;
-                    pDDDI->guidDeviceIdentifier.Data2 = data & 0xFFFF;
-                    pDDDI->guidDeviceIdentifier.Data3 = (data>>16) & 0xFFFF;
+                    lpdata = (long *)&pDDDI->guidDeviceIdentifier.Data2;
+                    *lpdata = *lpdata ^ pDDDI->dwDeviceId;
+
+                    lpdata = (long *)&pDDDI->guidDeviceIdentifier.Data4;
+                    *lpdata = *lpdata ^ pDDDI->dwSubSysId;
+                    *lpdata = *lpdata ^ pDDDI->liDriverVersion.LowPart;
 
+                    lpdata = (long *)&pDDDI->guidDeviceIdentifier.Data4[4];
+                    *lpdata = *lpdata ^ pDDDI->dwRevision;
+                    *lpdata = *lpdata ^ pDDDI->liDriverVersion.HighPart;
 
+                    /* FIXME pDDDI->dwWHQLLevel */
                     pDDDI->dwWHQLLevel = 0;
                     retVal = DD_OK;
                 }