mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-07-23 22:29:39 -06:00
Host: Implement a Windows-only implementation of GetDeviceNameFromVIDPID
This commit is contained in:
@ -10,6 +10,7 @@
|
||||
|
||||
#ifdef _WIN32
|
||||
#include <windows.h>
|
||||
#include <SetupAPI.h>
|
||||
|
||||
#define strerror_r(err, buf, len) strerror_s(buf, len, err)
|
||||
|
||||
@ -91,5 +92,28 @@ std::optional<std::wstring> GetModuleName(void* hInstance)
|
||||
name.resize(size);
|
||||
return name;
|
||||
}
|
||||
|
||||
std::wstring GetDeviceProperty(const HDEVINFO& device_info, const PSP_DEVINFO_DATA device_data,
|
||||
const DEVPROPKEY* requested_property)
|
||||
{
|
||||
DWORD required_size = 0;
|
||||
DEVPROPTYPE device_property_type;
|
||||
BOOL result;
|
||||
|
||||
result = SetupDiGetDeviceProperty(device_info, device_data, requested_property,
|
||||
&device_property_type, nullptr, 0, &required_size, 0);
|
||||
if (!result && GetLastError() != ERROR_INSUFFICIENT_BUFFER)
|
||||
return std::wstring();
|
||||
|
||||
std::vector<TCHAR> unicode_buffer(required_size / sizeof(TCHAR));
|
||||
|
||||
result = SetupDiGetDeviceProperty(
|
||||
device_info, device_data, requested_property, &device_property_type,
|
||||
reinterpret_cast<PBYTE>(unicode_buffer.data()), required_size, nullptr, 0);
|
||||
if (!result)
|
||||
return std::wstring();
|
||||
|
||||
return std::wstring(unicode_buffer.data());
|
||||
}
|
||||
#endif
|
||||
} // namespace Common
|
||||
|
Reference in New Issue
Block a user