Ich versuche, den "freundlichen Namen" eines eingesteckten USB-Geräts zu bekommen. Ich verwende die Methode SetupDiGetDeviceRegistryProperty mit der Eigenschaft SPDRP_FRIENDLYNAME, aber die Methode gibt false zurück und setzt den Fehlercode auf ERROR_INVALID_DATA, obwohl alles mit anderen Eigenschaften wie SPDRP_DEVICEDESC oder SPDRP_MFG einwandfrei funktioniert.Wie erhalte ich den Anzeigenamen eines USB-Geräts in Windows?
Ich überprüfte die Registrierung und den Geräte-Manager und der angezeigte Name existiert.
Hat jemand eine Idee?
UPDATE: Was ich bisher versucht:
GUID hidGuid;
HidD_GetHidGuid(&hidGuid);
HDEVINFO hDevInfo = SetupDiGetClassDevs(&hidGuid, 0, 0, DIGCF_PRESENT | DIGCF_INTERFACEDEVICE);
if (INVALID_HANDLE_VALUE == hDevInfo)
{
AfxMessageBox(CString("SetupDiGetClassDevs(): ")
+ _com_error(GetLastError()).ErrorMessage(), MB_ICONEXCLAMATION);
return;
}
SP_DEVINFO_DATA* pspDevInfoData =
(SP_DEVINFO_DATA*)HeapAlloc(GetProcessHeap(), 0, sizeof(SP_DEVINFO_DATA));
pspDevInfoData->cbSize = sizeof(SP_DEVINFO_DATA);
for (int i = 0; SetupDiEnumDeviceInfo(hDevInfo, i, pspDevInfoData); i++)
{
DWORD DataT;
DWORD nSize = 0;
TCHAR buf[MAX_PATH];
if (!SetupDiGetDeviceInstanceId(hDevInfo, pspDevInfoData, buf, sizeof(buf), &nSize))
{
AfxMessageBox(CString("SetupDiGetDeviceInstanceId(): ")
+ _com_error(GetLastError()).ErrorMessage(), MB_ICONEXCLAMATION);
break;
}
if (SetupDiGetDeviceRegistryProperty(hDevInfo, pspDevInfoData,
SPDRP_FRIENDLYNAME, &DataT, (PBYTE)buf, sizeof(buf), &nSize))
{
//display buf
}
else
{
if (GetLastError() == ERROR_INVALID_DATA)
{
//display ERROR_INVALID_DATA
}
if (SetupDiGetDeviceRegistryProperty(hDevInfo, pspDevInfoData, SPDRP_MFG, &DataT, (PBYTE)buf, sizeof(buf), &nSize))
{
//display buf
}
if (SetupDiGetDeviceRegistryProperty(hDevInfo, pspDevInfoData,
SPDRP_DEVICEDESC, &DataT, (PBYTE)buf, sizeof(buf), &nSize))
{
// display buf
}
}
}
Etwas Ähnliches. Wie gesagt, ich bekomme die Gerätebeschreibung und den Gerätehersteller, aber nicht den freundlichen Namen.
_ „Hat jemand eine Idee?“ _ - Es gibt ein Problem mit Ihrem Code. –
Bitte geben Sie einen Code an, um zu zeigen, was Sie bisher versucht haben. – avojak