Nie można pomyślnie komunikować się z urządzeniem USB HID za pomocą writefile ()

Jestem dość nowy w C #, jak również programowaniu w systemie Windows i próbuję nawiązać komunikację między urządzeniem USB HID a aplikacją napisaną w c # na komputerze z systemem Windows XP. Udało mi się uzyskać ścieżkę urządzenia i użyłem tego do ustanowienia prawidłowego uchwytu na urządzeniu:

IntPtr drive = CreateFile(devicePath, GENERIC_READ | GENERIC_WRITE,
               FILE_SHARE_READ | FILE_SHARE_WRITE, IntPtr.Zero,
               OPEN_EXISTING, FILE_FLAG_DELETE_ON_CLOSE, IntPtr.Zero);

Okazało się, że jest to prawidłowy uchwyt, który podczas testowania daje dodatnią liczbę całkowitą. Po utworzeniu uchwytu wywołuję 'HidD_GetPreparsedData' i 'HidP_GetCaps', które dają wcześniej zaimportowaną strukturę (HIDP_CAPS), która przechowuje określone dane związane z podłączonym urządzeniem. Następnie próbuję wywołać writefile ():

bool success = WriteFile(drive, ref outputReportBuffer, 
               caps.OutputReportByteLength, ref numberOfBytesWritten, 
               IntPtr.Zero); 

napęd: uchwyt urządzenia

outputReportBuffer: Tablica bajtów do zapisu [65]

caps.OutputReportByteLength: Ilość bajtów do zapisania, caps to struktura HIDP_CAPS

numberOfBytesWritten: zakodowany na 0

IntPtr.Zero: Wszystko, co przeczytałem, przekazuje ten ostatni parametr, tak jak ja to zrobiłem. W formalnych parametrach 'writefile' ostatni parametr jest wymieniony jako 'IntPtr ipOverlapped', ale nie byłem w stanie dowiedzieć się, co to jest, z wyjątkiem tego, że powinno być przekazane jako forma 0

Jak importowany jest plik WriteFile:

[DllImport("kernel32.dll", SetLastError = true)]
public static extern bool WriteFile(IntPtr hFile, 
ref byte[] lpBuffer, 
uint nNumberOfBytesToWrite,
ref uint lpNumberOfBytesWritten, 
IntPtr ipOverlapped);

Po wykonaniu writefile po prostu nic nie robi. Nie popełniam błędu, ale po przetestowaniu ujawnia, że ​​komunikacja nigdy nie została nawiązana i nie udało się. Gdyby ktoś mógł podzielić się jakąkolwiek wiedzą lub udostępnić jakiekolwiek zasoby, aby mi pomóc, naprawdę bym to docenił. Dziękuję za przeczytanie.

Pozdrowienia.

questionAnswers(1)

yourAnswerToTheQuestion