diff --git a/platform/windows/os_windows.cpp b/platform/windows/os_windows.cpp index e5737df2ae5..b54a821cd80 100644 --- a/platform/windows/os_windows.cpp +++ b/platform/windows/os_windows.cpp @@ -723,7 +723,7 @@ Vector OS_Windows::get_video_adapter_driver_info() const { BSTR object_name = SysAllocString(L"DriverName"); hr = pnpSDriverObject[0]->Get(object_name, 0, &dn, nullptr, nullptr); SysFreeString(object_name); - if (hr == S_OK) { + if (hr == S_OK && dn.vt == VT_BSTR) { String d_name = String(V_BSTR(&dn)); if (d_name.is_empty()) { object_name = SysAllocString(L"DriverProviderName"); @@ -739,8 +739,10 @@ Vector OS_Windows::get_video_adapter_driver_info() const { object_name = SysAllocString(L"DriverProviderName"); hr = pnpSDriverObject[0]->Get(object_name, 0, &dn, nullptr, nullptr); SysFreeString(object_name); - if (hr == S_OK) { + if (hr == S_OK && dn.vt == VT_BSTR) { driver_name = String(V_BSTR(&dn)); + } else { + driver_name = "Unknown"; } } @@ -749,8 +751,10 @@ Vector OS_Windows::get_video_adapter_driver_info() const { object_name = SysAllocString(L"DriverVersion"); hr = pnpSDriverObject[0]->Get(object_name, 0, &dv, nullptr, nullptr); SysFreeString(object_name); - if (hr == S_OK) { + if (hr == S_OK && dv.vt == VT_BSTR) { driver_version = String(V_BSTR(&dv)); + } else { + driver_version = "Unknown"; } for (ULONG i = 0; i < resultCount; i++) { SAFE_RELEASE(pnpSDriverObject[i])