250{
251 IDXGIDevice* dxgiDevice = nullptr;
252 IDXGIAdapter* adapter = nullptr;
253 std::string driverVersion = "Inconnu";
254
255 if (SUCCEEDED(device->QueryInterface(__uuidof(IDXGIDevice), (void**)&dxgiDevice)))
256 {
257 if (SUCCEEDED(dxgiDevice->GetAdapter(&adapter)))
258 {
259 DXGI_ADAPTER_DESC desc;
260 if (SUCCEEDED(adapter->GetDesc(&desc)))
261 {
262
263 int size_needed = WideCharToMultiByte(CP_UTF8, 0, desc.Description, -1, nullptr, 0, nullptr, nullptr);
264 std::string deviceName;
265 if (size_needed > 0) {
266 std::vector<char> buffer(size_needed);
267 WideCharToMultiByte(CP_UTF8, 0, desc.Description, -1, buffer.data(), size_needed, nullptr, nullptr);
268 deviceName = buffer.data();
269 }
270
271 char driverVersionStr[256];
272 sprintf_s(driverVersionStr, "%s (ID: %04X:%04X)", deviceName.c_str(), desc.VendorId, desc.DeviceId);
273
274 driverVersion = driverVersionStr;
275 }
276 adapter->Release();
277 }
278 dxgiDevice->Release();
279 }
280
281 return driverVersion;
282}