Beispiel für die Verwendung von SetupDiGetDeviceProperty

Lesezeit: 15 Minuten

Beispiel fur die Verwendung von SetupDiGetDeviceProperty
Benutzer198725878

Kann mir jemand ein Beispiel für die Verwendung geben SetupDiGetDeviceProperty ?

1643910009 513 Beispiel fur die Verwendung von SetupDiGetDeviceProperty
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 ändern SetupDiGetDevicePropertyA zu SetupDiGetDevicePropertyW 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 behoben Ole32.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 sehen SetupDiGetDevicePropertyW wird exportiert, aber nein SetupDiGetDevicePropertyA.

    – Oleg

    22. Februar 17 um 16:01 Uhr

.

758190cookie-checkBeispiel für die Verwendung von SetupDiGetDeviceProperty

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy