SetupDiGetClassDevs findet keine Devices



  • Hallo,

    ich möchte alle USB-Devices meines Systems anzeigen. Dazu verwende ich die API-Funktionen SetupDiGetClassDevices und SetupDiEnumDeviceInterface mit den dazugehörigen Datenstrukturen. Nach aufruf des HANDLES bekomme ich von der Funktion SetupDiEnumDeviceInterfaces den Fehler 259 - "No more items available" zurück. Ich komme nicht weiter und würde mich über einen Tipp sehr freuen!

    Besten Dank!

    HANDLE DeviceInfoSet;
    DeviceInfoSet = SetupDiGetClassDevs(NULL,NULL,NULL,DIGCF_ALLCLASSES);
    if(DeviceInfoSet == INVALD_HANDLE_VALUE)
    cout<<GetLastError();
    
    BOOL Result;
    SP_DEVICE_INTERFACE_DATA MyDeviceInterfaceData;
    MyDeviceInterfaceData.cbSize = sizeof(MyDeviceInterfaceData);
    DWORD MemberIndex = 0;
    
    Result = SetupDiEnumDeviceInterfaces(DeviceInfoSet,0,NULL,MemberIndex,&MyDeviceInterfaceData);
    
    if(Result==FALSE)
    cout<<GetLastError();
    
    ...
    


  • SetupDiEnumDeviceInterface findet keine Interfaces, weil keine im InfoSet sind. Das ist auch völlig in Ordnung, da Du SetupDiGetClassDevs angwiesen hast, diese zu nicht holen. Jedenfalls kann ich das Flag DIGCF_DEVICEINTERFACE im Aufruf nicht sehen, anstelle dessen aber DIGCF_ALLCLASSES. 😉



  • stimmt. ich dachte in ALLCLASSES sind die INTERFACEDEVICES schon enthalten. die deklaration stammt von einem beispiel aus der msdn um alle devices am pc auszulesen. aber irgendwie hab ich das noch nicht richtig verstanden.

    ich möchte mir alle USB devices anzeigen lassen und dann eins anhand der guid auswählen und einen zugriff ausüben. woher bekomme ich denn eine InterfaceClassGuid, die ich als parameter in der funktion "SetupDiEnumDeviceInterfaces" angeben kann?

    dankeschön!


Log in to reply