static HRESULT WINAPI IDirect3D8Impl_GetAdapterIdentifier (LPDIRECT3D8 iface, UINT Adapter, DWORD Flags, D3DADAPTER_IDENTIFIER8* pIdentifier) { IDirect3D8Impl *This = (IDirect3D8Impl *)iface; WINED3DADAPTER_IDENTIFIER adapter_id; HRESULT hr; TRACE("(%p)->(%d,%08x, %p\n", This, Adapter, Flags, pIdentifier); EnterCriticalSection(&d3d8_cs); /* dx8 and dx9 have different structures to be filled in, with incompatible layouts so pass in pointers to the places to be filled via an internal structure */ adapter_id.Driver = pIdentifier->Driver; adapter_id.Description = pIdentifier->Description; adapter_id.DeviceName = NULL; /* d3d9 only */ adapter_id.DriverVersion = &pIdentifier->DriverVersion; adapter_id.VendorId = &pIdentifier->VendorId; adapter_id.DeviceId = &pIdentifier->DeviceId; adapter_id.SubSysId = &pIdentifier->SubSysId; adapter_id.Revision = &pIdentifier->Revision; adapter_id.DeviceIdentifier = &pIdentifier->DeviceIdentifier; adapter_id.WHQLLevel = &pIdentifier->WHQLLevel; hr = IWineD3D_GetAdapterIdentifier(This->WineD3D, Adapter, Flags, &adapter_id); LeaveCriticalSection(&d3d8_cs); return hr; }
static HRESULT WINAPI IDirect3D9Impl_GetAdapterIdentifier(LPDIRECT3D9EX iface, UINT Adapter, DWORD Flags, D3DADAPTER_IDENTIFIER9* pIdentifier) { IDirect3D9Impl *This = (IDirect3D9Impl *)iface; WINED3DADAPTER_IDENTIFIER adapter_id; HRESULT hr; TRACE("iface %p, adapter %u, flags %#x, identifier %p.\n", iface, Adapter, Flags, pIdentifier); adapter_id.driver = pIdentifier->Driver; adapter_id.driver_size = sizeof(pIdentifier->Driver); adapter_id.description = pIdentifier->Description; adapter_id.description_size = sizeof(pIdentifier->Description); adapter_id.device_name = pIdentifier->DeviceName; adapter_id.device_name_size = sizeof(pIdentifier->DeviceName); wined3d_mutex_lock(); hr = IWineD3D_GetAdapterIdentifier(This->WineD3D, Adapter, Flags, &adapter_id); wined3d_mutex_unlock(); pIdentifier->DriverVersion = adapter_id.driver_version; pIdentifier->VendorId = adapter_id.vendor_id; pIdentifier->DeviceId = adapter_id.device_id; pIdentifier->SubSysId = adapter_id.subsystem_id; pIdentifier->Revision = adapter_id.revision; memcpy(&pIdentifier->DeviceIdentifier, &adapter_id.device_identifier, sizeof(pIdentifier->DeviceIdentifier)); pIdentifier->WHQLLevel = adapter_id.whql_level; ASSERT_D3D(hr == S_OK); return hr; }
static HRESULT WINAPI IDirect3D9ExImpl_GetAdapterLUID(IDirect3D9Ex *iface, UINT adapter, LUID *luid) { IDirect3D9Impl *This = (IDirect3D9Impl *)iface; WINED3DADAPTER_IDENTIFIER adapter_id; HRESULT hr; TRACE("iface %p, adapter %u, luid %p.\n", iface, adapter, luid); adapter_id.driver_size = 0; adapter_id.description_size = 0; adapter_id.device_name_size = 0; wined3d_mutex_lock(); hr = IWineD3D_GetAdapterIdentifier(This->WineD3D, adapter, 0, &adapter_id); wined3d_mutex_unlock(); memcpy(luid, &adapter_id.adapter_luid, sizeof(*luid)); return hr; }