USB-WriteFile
-
Hi,
weiß jmd von euch, warum mein Write-Request zu einem USB-HID überhaupt keinen Etrag bringt?
Als Returnwert wird 0 zurückgegeben, kein Fehler oder ähnliches. Mit einem USB-Sniffer sehe ich zwar dass Kommunikation während der Initialisierung vorhanden ist und das Device auch richtig im Device-Manager erkannt und initialisiert wurde, aber beim WriteFile() Request passiert gar nichts

ok = WriteFile(devhandle, &OutReport[0], 3, &cnt, NULL);Das Handle bekomme ich ohne Probleme (VID etc. stimmen überein). Als Outputbuffer-Größe wird 2Bytes angegeben und unsigned char OutReport[3]; sollte dann ja eigentlich richtig sein, oder?
/* Create File for Device Write */ devhandle = CreateFile(DevDetailData[number]->DevicePath, GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, (LPSECURITY_ATTRIBUTES)NULL, OPEN_EXISTING, 0, NULL ); if (devhandle == INVALID_HANDLE_VALUE) return (FALSE);Vielleicht hat jmd von euch noch ein paar Infos für mich oder einen Tipp!
Gruß
Steffen
-
ok hab grad gefunden, dass es anscheinend unter Windows nicht möglich ist auf ein System-Keyboard mit WriteFile() ReadFile() zuzugreifen, auch wenn man ein Handle bekommt mit meinem obigen Aufruf.
D.h. ich muss einen weiteren Report Descriptor anlegen, "custom-made" über den ich dann Daten senden und empfangen kann? Und nur Windows selbst kann bei einem Keyboard z.B. Daten an dieses schicken, so dass die LEDs leuchten???
Steffen
-
Hallo.
Die LED für NUM kannst Du wie folgt einschalten:
INPUT daten[2]; daten[0].type = INPUT_KEYBOARD; daten[0].ki.dwFlags = 0; daten[0].ki.wVk = 144; daten[0].ki.wScan = 144; daten[0].ki.dwExtraInfo = GetMessageExtraInfo(); daten[0].ki.time = GetMessageTime(); daten[1].type = INPUT_KEYBOARD; daten[1].ki.dwFlags = KEYEVENTF_KEYUP; daten[1].ki.wVk = 144; daten[1].ki.wScan = 144; daten[1].ki.dwExtraInfo = GetMessageExtraInfo(); daten[1].ki.time = GetMessageTime(); SendInput(2,daten,sizeof(INPUT));144 ist Num-Taste
20 ist CAB-Look
145 RollenGruß
Oli_1977