Невозможно успешно установить связь с USB HID-устройством, используя writefile ()

Я довольно новичок в C #, а также в программировании Windows, и я пытаюсь установить связь между устройством USB HID и приложением, написанным на c #, на ПК с Windows XP. Я успешно получил путь к устройству и использовал его, чтобы установить действительный дескриптор на устройстве:

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);

Это оказалось допустимым дескриптором, который дает положительное целое число при тестировании. После создания дескриптора я вызываю «HidD_GetPreparsedData». и «HidP_GetCaps»; которые дают ранее импортированную структуру (HIDP_CAPS), в которой хранятся конкретные данные, связанные с подключенным устройством. Далее я пытаюсь вызвать writefile ():

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

привод: ручка устройства

outputReportBuffer: массив байтов для записи [65]

caps.OutputReportByteLength: количество байтов для записи, caps - это структура HIDP_CAPS.

numberOfBytesWritten: жестко закодировано в 0

IntPtr.Zero: все, что я прочитал, передает этот последний параметр, как я сделал. В формальных параметрах «writefile» последний параметр указан как «IntPtr ipOverlapped», но я не смог выяснить, что это такое, за исключением того, что он должен быть передан в виде некоторой формы 0

Как WriteFile импортируется:

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

Когда writefile выполняется, он просто ничего не делает. Я не получаю ошибки, но при тестировании обнаруживается, что связь никогда не была установлена и не была успешной. Если бы кто-нибудь мог поделиться какими-либо знаниями или предоставить какие-либо ресурсы, чтобы помочь, я был бы очень признателен. Спасибо за чтение.

С уважением.

Ответы на вопрос(1)

Ваш ответ на вопрос