DWORD strSize = MAX_DDDEVICEID_STRING;
char *pdest;
char* pcCnvEnd;
- long data;
+ long *lpdata;
LPDDRAWI_DIRECTDRAW_INT This = (LPDDRAWI_DIRECTDRAW_INT) 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;
}