私は C# と Windows プログラミングにかなり慣れていないので、USB HID デバイス間の通信を確立しようとしています。「SetupDiGetDevicexxxxxx」を使用してデバイス パスを正常に取得し、「CreateFile()」を使用してハンドルを取得しました。以下は私のコードです。
public const uint FILE_SHARE_READ = 0x00000001;
public const uint FILE_SHARE_WRITE = 0x00000002;
public const int OPEN_EXISTING = 3;
public const uint GENERIC_READ = 0x80000000;
public const uint GENERIC_WRITE = 0x40000000;
CreateFile(string Devicepath)
{
HidHandle = CreateFile(Devicepath, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, 0, OPEN_EXISTING, 0, 0);
}
デバイス ハンドル情報を取得した後、次のように書き込みファイル関数を呼び出しています。
Result = WriteFile(HidHandle, outputReportBuffer[], outputReportBuffer.Length, NumberOfBytesWritten, 0);
Outputbuffer は長さ 8 のバイト配列です。 何らかの理由で、USB HID デバイスに書き込むことができませんでした。「結果」は常にゼロです。どんな助けでも大歓迎です。また、それが有効かどうかを確認する方法を教えてくださいHidHandle
。プログラムを実行すると、「1124」と表示されます。
このタイプの質問に関する以前の投稿に従いました。 writefile() を使用して USB HID デバイスと正常に通信できませんが、助けはありません。
以下は、create file と writefile の 2 つの方法です。
[DllImport("kernel32.dll", SetLastError = true)]
private static extern int CreateFile(string lpFileName, uint dwDesiredAccess, uint dwShareMode, uint lpSecurityAttributes, uint dwCreationDisposition, uint dwFlagsAndAttributes, uint hTemplateFile );
[DllImport("kernel32.dll")]
static public extern bool WriteFile(int hFile, byte lpBuffer, int nNumberOfBytesToWrite, int lpNumberOfBytesWritten, int lpOverlapped)