ERLEDIGT
NEIN
NEIN
ANTWORTEN
0
0
ZUGRIFFE
339
339
EMPFEHLEN
-
Hallo zusammen!
Ich versuche momentan geleitet von diesem Code (der in einem Test ohne den nachfolgenden Fehler funktionierte, der in meiner "Reproduktion" auftritt) zu schauen, welche USB-Geräte sich an meiner Maschine befinden: http://www.intel.com/intelpress/usb/examples/DUSBVC.PDF
Und zwar habe ich nun folgenden Ausschnitt:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
void CDeviceEnum::EnumerateRootDevices(HANDLE hRoot, NODE_INFORMATION& info) { USB_DESCRIPTOR_REQUEST req; DWORD dwBytes = 0; for(int index = 1; index < info.HubDesc.bNumPorts + 1; ++index) { memset(&req, NULL, sizeof(req)); USB_NODE_CONNECTION_INFORMATION ci; ci.ConnectionIndex = index; DeviceIoControl(hRoot, IOCTL_USB_GET_NODE_CONNECTION_INFORMATION, &ci, sizeof(ci), &ci, sizeof(ci), &dwBytes, 0); if(ci.ConnectionStatus != DeviceConnected) continue; if(ci.DeviceIsHub) continue; req.ConnectionIndex = index; req.SetupPacket.bmRequest = 0x80; req.SetupPacket.bRequest = USB_REQUEST_GET_DESCRIPTOR; req.SetupPacket.wValue = USB_STRING_DESCRIPTOR_TYPE << 8; req.SetupPacket.wLength = 4; if(!DeviceIoControl(hRoot, IOCTL_USB_GET_DESCRIPTOR_FROM_NODE_CONNECTION, &req, sizeof(req), &req, sizeof(req), &dwBytes, NULL)) { std::cout << "-> GetLangId: " << GetLastError() << std::endl; continue; } USHORT langId = req.Data[2] + ((USHORT)req.Data[3] << 8); memset(&req, NULL, sizeof(req)); req.ConnectionIndex = index; req.SetupPacket.bmRequest = 0x80; req.SetupPacket.bRequest = USB_REQUEST_GET_DESCRIPTOR; req.SetupPacket.wValue = ci.DeviceDescriptor.iProduct | (USB_STRING_DESCRIPTOR_TYPE << 8); req.SetupPacket.wValue = USB_STRING_DESCRIPTOR_TYPE; req.SetupPacket.wIndex = langId; req.SetupPacket.wLength = 255; if(!DeviceIoControl(hRoot, IOCTL_USB_GET_DESCRIPTOR_FROM_NODE_CONNECTION, &req, sizeof(req), &req, sizeof(req), &dwBytes, NULL)) { std::cout << "-> GetString: " << GetLastError() << std::endl; continue; } } }
Hierbei funktioniert soweit alles perfekt bis auf die Tatsache, dass ab dem ersten geprüften DeviceIoControl mit dem Request der ErrorCode 2 auftritt. USB_CONNECTION_INFORMATION ci beinhält jedoch genau die richtigen Werte, das habe ich dann auch mit der Ausgabe des funktionierenden Intel-Codes abegeglichen. Allerdings erzeugt mein Code da den FILE_NOT_FOUND-Fehler, während derjenige von Intel dieses Problem nicht zu kennen scheint.
Übersehe ich auf Grund der fortgeschrittenen Uhrzeit etwas?
Besten Dank und Gruss
Cromon
Ähnliche Themen
-
DeviceIoControl() - Problem bei übersetzen VB.NET Datei
Von zer0 im Forum .NET CaféAntworten: 2Letzter Beitrag: 21.09.10, 14:54 -
Externe swf im Hauptfilm plötzlich fehlerhaft!?
Von alba1314 im Forum Flash PlattformAntworten: 0Letzter Beitrag: 24.02.09, 16:17 -
Fensterhintergrundfabe ist plötzlich rot...
Von tilsenline im Forum PhotoshopAntworten: 6Letzter Beitrag: 20.12.05, 08:51 -
sound bricht plötzlich ab
Von Alexander Bauer im Forum HardwareAntworten: 0Letzter Beitrag: 19.04.04, 17:14 -
DeviceIoControl
Von Chefprog im Forum Sonstige SprachenAntworten: 1Letzter Beitrag: 19.10.01, 15:10





Zitieren
Login






