Kann mir jemand ein Beispiel für die Verwendung geben SetupDiGetDeviceProperty
?
Beispiel für die Verwendung von SetupDiGetDeviceProperty
Benutzer198725878
Oleg
Der folgende Code
#include <windows.h>
#include <devguid.h> // for GUID_DEVCLASS_CDROM etc
#include <setupapi.h>
#include <cfgmgr32.h> // for MAX_DEVICE_ID_LEN, CM_Get_Parent and CM_Get_Device_ID
#define INITGUID
#include <tchar.h>
#include <stdio.h>
//#include "c:WinDDK7600.16385.1incapidevpkey.h"
// include DEVPKEY_Device_BusReportedDeviceDesc from WinDDK7600.16385.1incapidevpropdef.h
#ifdef DEFINE_DEVPROPKEY
#undef DEFINE_DEVPROPKEY
#endif
#ifdef INITGUID
#define DEFINE_DEVPROPKEY(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8, pid) EXTERN_C const DEVPROPKEY DECLSPEC_SELECTANY name = { { l, w1, w2, { b1, b2, b3, b4, b5, b6, b7, b8 } }, pid }
#else
#define DEFINE_DEVPROPKEY(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8, pid) EXTERN_C const DEVPROPKEY name
#endif // INITGUID
// include DEVPKEY_Device_BusReportedDeviceDesc from WinDDK7600.16385.1incapidevpkey.h
DEFINE_DEVPROPKEY(DEVPKEY_Device_BusReportedDeviceDesc, 0x540b947e, 0x8b40, 0x45bc, 0xa8, 0xa2, 0x6a, 0x0b, 0x89, 0x4c, 0xbd, 0xa2, 4); // DEVPROP_TYPE_STRING
DEFINE_DEVPROPKEY(DEVPKEY_Device_ContainerId, 0x8c7ed206, 0x3f8a, 0x4827, 0xb3, 0xab, 0xae, 0x9e, 0x1f, 0xae, 0xfc, 0x6c, 2); // DEVPROP_TYPE_GUID
DEFINE_DEVPROPKEY(DEVPKEY_Device_FriendlyName, 0xa45c254e, 0xdf1c, 0x4efd, 0x80, 0x20, 0x67, 0xd1, 0x46, 0xa8, 0x50, 0xe0, 14); // DEVPROP_TYPE_STRING
DEFINE_DEVPROPKEY(DEVPKEY_DeviceDisplay_Category, 0x78c34fc8, 0x104a, 0x4aca, 0x9e, 0xa4, 0x52, 0x4d, 0x52, 0x99, 0x6e, 0x57, 0x5a); // DEVPROP_TYPE_STRING_LIST
DEFINE_DEVPROPKEY(DEVPKEY_Device_LocationInfo, 0xa45c254e, 0xdf1c, 0x4efd, 0x80, 0x20, 0x67, 0xd1, 0x46, 0xa8, 0x50, 0xe0, 15); // DEVPROP_TYPE_STRING
DEFINE_DEVPROPKEY(DEVPKEY_Device_Manufacturer, 0xa45c254e, 0xdf1c, 0x4efd, 0x80, 0x20, 0x67, 0xd1, 0x46, 0xa8, 0x50, 0xe0, 13); // DEVPROP_TYPE_STRING
DEFINE_DEVPROPKEY(DEVPKEY_Device_SecuritySDS, 0xa45c254e, 0xdf1c, 0x4efd, 0x80, 0x20, 0x67, 0xd1, 0x46, 0xa8, 0x50, 0xe0, 26); // DEVPROP_TYPE_SECURITY_DESCRIPTOR_STRING
#define ARRAY_SIZE(arr) (sizeof(arr)/sizeof(arr[0]))
#pragma comment (lib, "setupapi.lib")
typedef BOOL (WINAPI *FN_SetupDiGetDevicePropertyW)(
__in HDEVINFO DeviceInfoSet,
__in PSP_DEVINFO_DATA DeviceInfoData,
__in const DEVPROPKEY *PropertyKey,
__out DEVPROPTYPE *PropertyType,
__out_opt PBYTE PropertyBuffer,
__in DWORD PropertyBufferSize,
__out_opt PDWORD RequiredSize,
__in DWORD Flags
);
// List all USB devices with some additional information
void ListDevices (CONST GUID *pClassGuid, LPCTSTR pszEnumerator)
{
unsigned i, j;
DWORD dwSize, dwPropertyRegDataType;
DEVPROPTYPE ulPropertyType;
CONFIGRET status;
HDEVINFO hDevInfo;
SP_DEVINFO_DATA DeviceInfoData;
const static LPCTSTR arPrefix[3] = {TEXT("VID_"), TEXT("PID_"), TEXT("MI_")};
TCHAR szDeviceInstanceID [MAX_DEVICE_ID_LEN];
TCHAR szDesc[1024], szHardwareIDs[4096];
WCHAR szBuffer[4096];
LPTSTR pszToken, pszNextToken;
TCHAR szVid[MAX_DEVICE_ID_LEN], szPid[MAX_DEVICE_ID_LEN], szMi[MAX_DEVICE_ID_LEN];
FN_SetupDiGetDevicePropertyW fn_SetupDiGetDevicePropertyW = (FN_SetupDiGetDevicePropertyW)
GetProcAddress (GetModuleHandle (TEXT("Setupapi.dll")), "SetupDiGetDevicePropertyW");
// List all connected USB devices
hDevInfo = SetupDiGetClassDevs (pClassGuid, pszEnumerator, NULL,
pClassGuid != NULL ? DIGCF_PRESENT: DIGCF_ALLCLASSES | DIGCF_PRESENT);
if (hDevInfo == INVALID_HANDLE_VALUE)
return;
// Find the ones that are driverless
for (i = 0; ; i++) {
DeviceInfoData.cbSize = sizeof (DeviceInfoData);
if (!SetupDiEnumDeviceInfo(hDevInfo, i, &DeviceInfoData))
break;
status = CM_Get_Device_ID(DeviceInfoData.DevInst, szDeviceInstanceID , MAX_PATH, 0);
if (status != CR_SUCCESS)
continue;
// Display device instance ID
_tprintf (TEXT("%sn"), szDeviceInstanceID );
if (SetupDiGetDeviceRegistryProperty (hDevInfo, &DeviceInfoData, SPDRP_DEVICEDESC,
&dwPropertyRegDataType, (BYTE*)szDesc,
sizeof(szDesc), // The size, in bytes
&dwSize))
_tprintf (TEXT(" Device Description: "%s"n"), szDesc);
if (SetupDiGetDeviceRegistryProperty (hDevInfo, &DeviceInfoData, SPDRP_HARDWAREID,
&dwPropertyRegDataType, (BYTE*)szHardwareIDs,
sizeof(szHardwareIDs), // The size, in bytes
&dwSize)) {
LPCTSTR pszId;
_tprintf (TEXT(" Hardware IDs:n"));
for (pszId=szHardwareIDs;
*pszId != TEXT('') && pszId + dwSize/sizeof(TCHAR) <= szHardwareIDs + ARRAYSIZE(szHardwareIDs);
pszId += lstrlen(pszId)+1) {
_tprintf (TEXT(" "%s"n"), pszId);
}
}
// Retreive the device description as reported by the device itself
// On Vista and earlier, we can use only SPDRP_DEVICEDESC
// On Windows 7, the information we want ("Bus reported device description") is
// accessed through DEVPKEY_Device_BusReportedDeviceDesc
if (fn_SetupDiGetDevicePropertyW && fn_SetupDiGetDevicePropertyW (hDevInfo, &DeviceInfoData, &DEVPKEY_Device_BusReportedDeviceDesc,
&ulPropertyType, (BYTE*)szBuffer, sizeof(szBuffer), &dwSize, 0)) {
if (fn_SetupDiGetDevicePropertyW (hDevInfo, &DeviceInfoData, &DEVPKEY_Device_BusReportedDeviceDesc,
&ulPropertyType, (BYTE*)szBuffer, sizeof(szBuffer), &dwSize, 0))
_tprintf (TEXT(" Bus Reported Device Description: "%ls"n"), szBuffer);
if (fn_SetupDiGetDevicePropertyW (hDevInfo, &DeviceInfoData, &DEVPKEY_Device_Manufacturer,
&ulPropertyType, (BYTE*)szBuffer, sizeof(szBuffer), &dwSize, 0)) {
_tprintf (TEXT(" Device Manufacturer: "%ls"n"), szBuffer);
}
if (fn_SetupDiGetDevicePropertyW (hDevInfo, &DeviceInfoData, &DEVPKEY_Device_FriendlyName,
&ulPropertyType, (BYTE*)szBuffer, sizeof(szBuffer), &dwSize, 0)) {
_tprintf (TEXT(" Device Friendly Name: "%ls"n"), szBuffer);
}
if (fn_SetupDiGetDevicePropertyW (hDevInfo, &DeviceInfoData, &DEVPKEY_Device_LocationInfo,
&ulPropertyType, (BYTE*)szBuffer, sizeof(szBuffer), &dwSize, 0)) {
_tprintf (TEXT(" Device Location Info: "%ls"n"), szBuffer);
}
if (fn_SetupDiGetDevicePropertyW (hDevInfo, &DeviceInfoData, &DEVPKEY_Device_SecuritySDS,
&ulPropertyType, (BYTE*)szBuffer, sizeof(szBuffer), &dwSize, 0)) {
// See Security Descriptor Definition Language on MSDN
// (http://msdn.microsoft.com/en-us/library/windows/desktop/aa379567(v=vs.85).aspx)
_tprintf (TEXT(" Device Security Descriptor String: "%ls"n"), szBuffer);
}
if (fn_SetupDiGetDevicePropertyW (hDevInfo, &DeviceInfoData, &DEVPKEY_Device_ContainerId,
&ulPropertyType, (BYTE*)szDesc, sizeof(szDesc), &dwSize, 0)) {
StringFromGUID2((REFGUID)szDesc, szBuffer, ARRAY_SIZE(szBuffer));
_tprintf (TEXT(" ContainerId: "%ls"n"), szBuffer);
}
if (fn_SetupDiGetDevicePropertyW (hDevInfo, &DeviceInfoData, &DEVPKEY_DeviceDisplay_Category,
&ulPropertyType, (BYTE*)szBuffer, sizeof(szBuffer), &dwSize, 0))
_tprintf (TEXT(" Device Display Category: "%ls"n"), szBuffer);
}
pszToken = _tcstok_s (szDeviceInstanceID , TEXT("\#&"), &pszNextToken);
while(pszToken != NULL) {
szVid[0] = TEXT('');
szPid[0] = TEXT('');
szMi[0] = TEXT('');
for (j = 0; j < 3; j++) {
if (_tcsncmp(pszToken, arPrefix[j], lstrlen(arPrefix[j])) == 0) {
switch(j) {
case 0:
_tcscpy_s(szVid, ARRAY_SIZE(szVid), pszToken);
break;
case 1:
_tcscpy_s(szPid, ARRAY_SIZE(szPid), pszToken);
break;
case 2:
_tcscpy_s(szMi, ARRAY_SIZE(szMi), pszToken);
break;
default:
break;
}
}
}
if (szVid[0] != TEXT(''))
_tprintf (TEXT(" vid: "%s"n"), szVid);
if (szPid[0] != TEXT(''))
_tprintf (TEXT(" pid: "%s"n"), szPid);
if (szMi[0] != TEXT(''))
_tprintf (TEXT(" mi: "%s"n"), szMi);
pszToken = _tcstok_s (NULL, TEXT("\#&"), &pszNextToken);
}
}
return;
}
int _tmain()
{
// List all connected USB devices
_tprintf (TEXT("---------------n"));
_tprintf (TEXT("- USB devices -n"));
_tprintf (TEXT("---------------n"));
ListDevices(NULL, TEXT("USB"));
_tprintf (TEXT("n"));
_tprintf (TEXT("-------------------n"));
_tprintf (TEXT("- USBSTOR devices -n"));
_tprintf (TEXT("-------------------n"));
ListDevices(NULL, TEXT("USBSTOR"));
_tprintf (TEXT("n"));
_tprintf (TEXT("--------------n"));
_tprintf (TEXT("- SD devices -n"));
_tprintf (TEXT("--------------n"));
ListDevices(NULL, TEXT("SD"));
//_tprintf (TEXT("n"));
//ListDevices(&GUID_DEVCLASS_USB, NULL);
//_tprintf (TEXT("n"));
_tprintf (TEXT("n"));
_tprintf (TEXT("-----------n"));
_tprintf (TEXT("- Volumes -n"));
_tprintf (TEXT("-----------n"));
//ListDevices(NULL, TEXT("STORAGE\VOLUME"));
//_tprintf (TEXT("n"));
ListDevices(&GUID_DEVCLASS_VOLUME, NULL);
_tprintf (TEXT("n"));
_tprintf (TEXT("----------------------------n"));
_tprintf (TEXT("- devices with disk drives -n"));
_tprintf (TEXT("----------------------------n"));
ListDevices(&GUID_DEVCLASS_DISKDRIVE, NULL);
return 0;
}
erzeugt die folgende Ausgabe auf meinem Windows 7-Computer
---------------
- USB devices -
---------------
USBROOT_HUB204&1C1548F&0
Device Description: "USB Root Hub"
Hardware IDs:
"USBROOT_HUB20&VID8086&PID3B3C&REV0006"
"USBROOT_HUB20&VID8086&PID3B3C"
"USBROOT_HUB20"
USBROOT_HUB204&2851D18A&0
Device Description: "USB Root Hub"
Hardware IDs:
"USBROOT_HUB20&VID8086&PID3B34&REV0006"
"USBROOT_HUB20&VID8086&PID3B34"
"USBROOT_HUB20"
USBVID_046D&PID_C52B6&32FEB3AB&0&2
Device Description: "USB Composite Device"
Hardware IDs:
"USBVID_046D&PID_C52B&REV_1201"
"USBVID_046D&PID_C52B"
Bus Reported Device Description: "USB Receiver"
Device Manufacturer: "(Standard USB Host Controller)"
Device Location Info: "Port_#0002.Hub_#0003"
ContainerId: "{AB5F3BBF-21FC-11E2-9436-70F3954A2325}"
vid: "VID_046D"
pid: "PID_C52B"
USBVID_046D&PID_C52B&MI_007&33519F3A&0&0000
Device Description: "USB Input Device (Logitech Download Assistant)"
Hardware IDs:
"USBVID_046D&PID_C52B&REV_1201&MI_00"
"USBVID_046D&PID_C52B&MI_00"
Bus Reported Device Description: "USB Receiver"
Device Manufacturer: "Logitech (x64)"
Device Location Info: "0000.001a.0000.001.002.000.000.000.000"
ContainerId: "{AB5F3BBF-21FC-11E2-9436-70F3954A2325}"
vid: "VID_046D"
pid: "PID_C52B"
mi: "MI_00"
USBVID_046D&PID_C52B&MI_017&33519F3A&0&0001
Device Description: "USB Input Device"
Hardware IDs:
"USBVID_046D&PID_C52B&REV_1201&MI_01"
"USBVID_046D&PID_C52B&MI_01"
Bus Reported Device Description: "USB Receiver"
Device Manufacturer: "(Standard system devices)"
Device Location Info: "0000.001a.0000.001.002.000.000.000.000"
ContainerId: "{AB5F3BBF-21FC-11E2-9436-70F3954A2325}"
vid: "VID_046D"
pid: "PID_C52B"
mi: "MI_01"
USBVID_046D&PID_C52B&MI_027&33519F3A&0&0002
Device Description: "Logitech Unifying USB receiver"
Hardware IDs:
"USBVID_046D&PID_C52B&REV_1201&MI_02"
"USBVID_046D&PID_C52B&MI_02"
Bus Reported Device Description: "USB Receiver"
Device Manufacturer: "Logitech"
Device Location Info: "0000.001a.0000.001.002.000.000.000.000"
ContainerId: "{AB5F3BBF-21FC-11E2-9436-70F3954A2325}"
vid: "VID_046D"
pid: "PID_C52B"
mi: "MI_02"
USBVID_05C6&PID_92056&7A6FBD7&0&4
Device Description: "Qualcomm Gobi 2000 USB Composite Device 9205"
Hardware IDs:
"USBVID_05C6&PID_9205&REV_0002"
"USBVID_05C6&PID_9205"
Bus Reported Device Description: "Qualcomm Gobi 2000"
Device Manufacturer: "Qualcomm Incorporated"
Device Location Info: "Port_#0004.Hub_#0004"
ContainerId: "{00000000-0000-0000-FFFF-FFFFFFFFFFFF}"
vid: "VID_05C6"
pid: "PID_9205"
USBVID_05C6&PID_9205&MI_007&210D4D2D&1&0000
Device Description: "Qualcomm Gobi 2000 HS-USB Mobile Broadband Device 9205"
Hardware IDs:
"USBVID_05C6&PID_9205&REV_0002&MI_00"
"USBVID_05C6&PID_9205&MI_00"
Bus Reported Device Description: "Qualcomm Gobi 2000"
Device Manufacturer: "Qualcomm Incorporated"
Device Location Info: "0000.001d.0000.001.004.000.000.000.000"
ContainerId: "{00000000-0000-0000-FFFF-FFFFFFFFFFFF}"
vid: "VID_05C6"
pid: "PID_9205"
mi: "MI_00"
USBVID_05C6&PID_9205&MI_017&210D4D2D&1&0001
Device Description: "Qualcomm Gobi 2000 HS-USB Diagnostics 9205"
Hardware IDs:
"USBVID_05C6&PID_9205&REV_0002&MI_01"
"USBVID_05C6&PID_9205&MI_01"
Bus Reported Device Description: "Qualcomm Gobi 2000"
Device Manufacturer: "Qualcomm Incorporated"
Device Friendly Name: "Qualcomm Gobi 2000 HS-USB Diagnostics 9205 (COM6)"
Device Location Info: "0000.001d.0000.001.004.000.000.000.000"
ContainerId: "{00000000-0000-0000-FFFF-FFFFFFFFFFFF}"
vid: "VID_05C6"
pid: "PID_9205"
mi: "MI_01"
USBVID_05C6&PID_9205&MI_027&210D4D2D&1&0002
Device Description: "Qualcomm Gobi 2000 HS-USB Modem 9205"
Hardware IDs:
"USBVID_05C6&PID_9205&REV_0002&MI_02"
"USBVID_05C6&PID_9205&MI_02"
Bus Reported Device Description: "Qualcomm Gobi 2000"
Device Manufacturer: "Qualcomm Incorporated"
Device Friendly Name: "Qualcomm Gobi 2000 HS-USB Modem 9205"
Device Location Info: "0000.001d.0000.001.004.000.000.000.000"
ContainerId: "{00000000-0000-0000-FFFF-FFFFFFFFFFFF}"
vid: "VID_05C6"
pid: "PID_9205"
mi: "MI_02"
USBVID_05C6&PID_9205&MI_037&210D4D2D&1&0003
Device Description: "Qualcomm Gobi 2000 HS-USB NMEA 9205"
Hardware IDs:
"USBVID_05C6&PID_9205&REV_0002&MI_03"
"USBVID_05C6&PID_9205&MI_03"
Bus Reported Device Description: "Qualcomm Gobi 2000"
Device Manufacturer: "Qualcomm Incorporated"
Device Friendly Name: "Qualcomm Gobi 2000 HS-USB NMEA 9205 (COM7)"
Device Location Info: "0000.001d.0000.001.004.000.000.000.000"
ContainerId: "{00000000-0000-0000-FFFF-FFFFFFFFFFFF}"
vid: "VID_05C6"
pid: "PID_9205"
mi: "MI_03"
USBVID_0781&PID_71080000000000000031753
Device Description: "USB Mass Storage Device"
Hardware IDs:
"USBVid_0781&Pid_7108&Rev_2000"
"USBVid_0781&Pid_7108"
vid: "VID_0781"
pid: "PID_7108"
USBVID_0930&PID_65450D0C9CCDF49EBC06000806C
Device Description: "USB Mass Storage Device"
Hardware IDs:
"USBVid_0930&Pid_6545&Rev_0100"
"USBVid_0930&Pid_6545"
vid: "VID_0930"
pid: "PID_6545"
USBVID_0A5C&PID_217F70F3954A2325
Device Description: "ThinkPad Bluetooth 3.0"
Hardware IDs:
"USBVID_0A5C&PID_217F&REV_0360"
"USBVID_0A5C&PID_217F"
Bus Reported Device Description: "Broadcom Bluetooth Device"
Device Manufacturer: "Broadcom"
Device Location Info: "Port_#0004.Hub_#0003"
ContainerId: "{00000000-0000-0000-FFFF-FFFFFFFFFFFF}"
vid: "VID_0A5C"
pid: "PID_217F"
USBVID_147E&PID_20166&32FEB3AB&0&3
Device Description: "TouchChip Fingerprint Coprocessor (WBF advanced mode)"
Hardware IDs:
"USBVID_147E&PID_2016&REV_0002"
"USBVID_147E&PID_2016"
Bus Reported Device Description: "Biometric Coprocessor"
Device Manufacturer: "AuthenTec"
Device Location Info: "Port_#0003.Hub_#0003"
Device Security Descriptor String: "D:P(A;;GA;;;BA)(A;;GA;;;SY)"
ContainerId: "{00000000-0000-0000-FFFF-FFFFFFFFFFFF}"
vid: "VID_147E"
pid: "PID_2016"
USBVID_17EF&PID_480F6&32FEB3AB&0&6
Device Description: "USB Composite Device"
Hardware IDs:
"USBVID_17EF&PID_480F&REV_2345"
"USBVID_17EF&PID_480F"
Bus Reported Device Description: "Integrated Camera"
Device Manufacturer: "(Standard USB Host Controller)"
Device Location Info: "Port_#0006.Hub_#0003"
ContainerId: "{00000000-0000-0000-FFFF-FFFFFFFFFFFF}"
vid: "VID_17EF"
pid: "PID_480F"
USBVID_17EF&PID_480F&MI_007&137E78B0&0&0000
Device Description: "Integrated Camera"
Hardware IDs:
"USBVID_17EF&PID_480F&REV_2345&MI_00"
"USBVID_17EF&PID_480F&MI_00"
Bus Reported Device Description: "Integrated Camera"
Device Manufacturer: "Ricoh"
Device Friendly Name: "Integrated Camera"
Device Location Info: "0000.001a.0000.001.006.000.000.000.000"
ContainerId: "{00000000-0000-0000-FFFF-FFFFFFFFFFFF}"
Device Display Category: "Imaging.Webcam"
vid: "VID_17EF"
pid: "PID_480F"
mi: "MI_00"
USBVID_8087&PID_00205&15BBD570&0&1
Device Description: "Generic USB Hub"
Hardware IDs:
"USBVID_8087&PID_0020&REV_0000"
"USBVID_8087&PID_0020"
vid: "VID_8087"
pid: "PID_0020"
USBVID_8087&PID_00205&29432BF7&0&1
Device Description: "Generic USB Hub"
Hardware IDs:
"USBVID_8087&PID_0020&REV_0000"
"USBVID_8087&PID_0020"
vid: "VID_8087"
pid: "PID_0020"
-------------------
- USBSTOR devices -
-------------------
USBSTORDISK&VEN_KINGSTON&PROD_DATATRAVELER_108&REV_PMAP0D0C9CCDF49EBC06000806C&0
Device Description: "Disk drive"
Hardware IDs:
"USBSTORDiskKingstonDataTraveler_108PMAP"
"USBSTORDiskKingstonDataTraveler_108"
"USBSTORDiskKingston"
"USBSTORKingstonDataTraveler_108P"
"KingstonDataTraveler_108P"
"USBSTORGenDisk"
"GenDisk"
Bus Reported Device Description: "Kingston DataTraveler 108 USB Device"
Device Manufacturer: "(Standard disk drives)"
Device Friendly Name: "Kingston DataTraveler 108 USB Device"
ContainerId: "{D9CC9C62-4C1D-5CC2-953C-9B0E27AB05E0}"
USBSTORDISK&VEN_SANDISK&PROD_CRUZER_TITANIUM&REV_20000000000000000031753&0
Device Description: "Disk drive"
Hardware IDs:
"USBSTORDiskSanDisk_Cruzer_Titanium_2000"
"USBSTORDiskSanDisk_Cruzer_Titanium_"
"USBSTORDiskSanDisk_"
"USBSTORSanDisk_Cruzer_Titanium_2"
"SanDisk_Cruzer_Titanium_2"
"USBSTORGenDisk"
"GenDisk"
Bus Reported Device Description: "SanDisk Cruzer Titanium USB Device"
Device Manufacturer: "(Standard disk drives)"
Device Friendly Name: "SanDisk Cruzer Titanium USB Device"
ContainerId: "{DB834D8A-6F58-11E2-AA64-70F3954A2325}"
--------------
- SD devices -
--------------
SDVID_74&OID_4A45&PID_USD&REV_1.05&3369D5EF&0&0
Device Description: "SD Storage Card"
Hardware IDs:
"SDVID_74&OID_4a45&PID_USD&REV_1.0"
"SDVID_74&OID_4a45&PID_USD"
Bus Reported Device Description: "SD Memory Card"
Device Manufacturer: "Generic"
Device Friendly Name: "SD Memory Card"
ContainerId: "{C17922A4-7814-11E2-BF78-70F3954A2325}"
vid: "VID_74"
pid: "PID_USD"
-----------
- Volumes -
-----------
STORAGEVOLUME_??_USBSTOR#DISK&VEN_SANDISK&PROD_CRUZER_TITANIUM&REV_2000#00000000000000031753&0#{53F56307-B6BF-11D0-94F2-00A0C91EFB8B}
Device Description: "Generic volume"
Hardware IDs:
"STORAGEVolume"
STORAGEVOLUME{0A6B09D2-D440-11E1-9886-806E6F6E6963}#0000000000100000
Device Description: "Generic volume"
Hardware IDs:
"STORAGEVolume"
STORAGEVOLUME{0A6B09D2-D440-11E1-9886-806E6F6E6963}#0000000006500000
Device Description: "Generic volume"
Hardware IDs:
"STORAGEVolume"
STORAGEVOLUME_??_USBSTOR#DISK&VEN_KINGSTON&PROD_DATATRAVELER_108&REV_PMAP#00D0C9CCDF49EBC06000806C&0#{53F56307-B6BF-11D0-94F2-00A0C91EFB8B}
Device Description: "Generic volume"
Hardware IDs:
"STORAGEVolume"
STORAGEVOLUME_??_SD#VID_74&OID_4A45&PID_USD&REV_1.0#5&3369D5EF&0&0#{53F56307-B6BF-11D0-94F2-00A0C91EFB8B}
Device Description: "Generic volume"
Hardware IDs:
"STORAGEVolume"
vid: "VID_74"
pid: "PID_USD"
----------------------------
- devices with disk drives -
----------------------------
IDEDISKSAMSUNG_SSD_830_SERIES__________________CXM02B1Q4&398487B7&0&0.0.0
Device Description: "Disk drive"
Hardware IDs:
"IDEDiskSAMSUNG_SSD_830_Series__________________CXM02B1Q"
"IDESAMSUNG_SSD_830_Series__________________CXM02B1Q"
"IDEDiskSAMSUNG_SSD_830_Series__________________"
"SAMSUNG_SSD_830_Series__________________CXM02B1Q"
"GenDisk"
Bus Reported Device Description: "SAMSUNG SSD 830 Series"
Device Manufacturer: "(Standard disk drives)"
Device Friendly Name: "SAMSUNG SSD 830 Series"
Device Location Info: "0"
ContainerId: "{00000000-0000-0000-FFFF-FFFFFFFFFFFF}"
USBSTORDISK&VEN_KINGSTON&PROD_DATATRAVELER_108&REV_PMAP0D0C9CCDF49EBC06000806C&0
Device Description: "Disk drive"
Hardware IDs:
"USBSTORDiskKingstonDataTraveler_108PMAP"
"USBSTORDiskKingstonDataTraveler_108"
"USBSTORDiskKingston"
"USBSTORKingstonDataTraveler_108P"
"KingstonDataTraveler_108P"
"USBSTORGenDisk"
"GenDisk"
Bus Reported Device Description: "Kingston DataTraveler 108 USB Device"
Device Manufacturer: "(Standard disk drives)"
Device Friendly Name: "Kingston DataTraveler 108 USB Device"
ContainerId: "{D9CC9C62-4C1D-5CC2-953C-9B0E27AB05E0}"
SDVID_74&OID_4A45&PID_USD&REV_1.05&3369D5EF&0&0
Device Description: "SD Storage Card"
Hardware IDs:
"SDVID_74&OID_4a45&PID_USD&REV_1.0"
"SDVID_74&OID_4a45&PID_USD"
Bus Reported Device Description: "SD Memory Card"
Device Manufacturer: "Generic"
Device Friendly Name: "SD Memory Card"
ContainerId: "{C17922A4-7814-11E2-BF78-70F3954A2325}"
vid: "VID_74"
pid: "PID_USD"
USBSTORDISK&VEN_SANDISK&PROD_CRUZER_TITANIUM&REV_20000000000000000031753&0
Device Description: "Disk drive"
Hardware IDs:
"USBSTORDiskSanDisk_Cruzer_Titanium_2000"
"USBSTORDiskSanDisk_Cruzer_Titanium_"
"USBSTORDiskSanDisk_"
"USBSTORSanDisk_Cruzer_Titanium_2"
"SanDisk_Cruzer_Titanium_2"
"USBSTORGenDisk"
"GenDisk"
Bus Reported Device Description: "SanDisk Cruzer Titanium USB Device"
Device Manufacturer: "(Standard disk drives)"
Device Friendly Name: "SanDisk Cruzer Titanium USB Device"
ContainerId: "{DB834D8A-6F58-11E2-AA64-70F3954A2325}"
Die Zeilen mit „Bus Reported Device Description“ zeigen Ergebnisse von an SetupDiGetDeviceProperty
Anruf. Sie können einige zusätzliche Informationen über Geräte erhalten, wenn Sie anderen Antworten folgen würden: dieser und einer anderen.
-
"SetupDiGetDevicePropertyA"
ist nicht vorhanden msdn-docwenn Sie also die Ausgabe von “Bus Reported Device Description” sehen möchten, wenn Sie NON-UNICODE ausführen, müssen Sie diese Zeile einfügen:printf ( (" Bus Reported Device Description: "%ls"n"), (WCHAR *)szDesc);
und ändernSetupDiGetDevicePropertyA
zuSetupDiGetDevicePropertyW
nach oben.– phyatt
15. Februar 13 um 22:05 Uhr
-
@phyatt: Danke für deinen Kommentar. Ich habe seit vielen Jahren nicht mehr in Nicht-Unicode kompiliert. 🙂 In jedem Fall hast du Recht und ich habe den Code aktualisiert, den ich vor 2,5 Jahren gepostet habe. Am Ende der Antwort habe ich Verweise auf zwei andere meiner alten Antworten eingefügt, die zusätzliche Informationen zu Festplattengeräten liefern können.
– Oleg
17. Februar 13 um 12:41 Uhr
-
Toll! Ich habe einen Compilerfehler erhalten (VS2015)
main.obj:-1: error: LNK2019: unresolved external symbol __imp__StringFromGUID2@12 referenced in function "void __cdecl ListDevices(struct _GUID const *,wchar_t const *)" (?ListDevices@@YAXPBU_GUID@@PB_W@Z)
Ich habe das durch Hinzufügen behobenOle32.lib
zum Projekt @ Eigenschaften >> Linkier >> Eingabe >> Zusätzliche Abhängigkeiten.– zar
18. November 15 um 16:48 Uhr
-
@zadane: Danke für die Info! Es könnte für andere Besucher hilfreich sein. Ich freue mich immer noch, dass die vor mehr als 5 Jahren gepostete Antwort immer noch hilfreich ist.
– Oleg
18. November 15 um 16:52 Uhr
-
@EdwardFalk: Sie können verwenden
dumpbin.exe /exports %SystemRoot%system32SetupAPI.dll
Tool, um beispielsweise die vollständige Liste der aus SetupAPI.dll exportierten Funktionen anzuzeigen. Nur das wirst du sehenSetupDiGetDevicePropertyW
wird exportiert, aber neinSetupDiGetDevicePropertyA
.– Oleg
22. Februar 17 um 16:01 Uhr
.