CreateFile()APIを使用してUSBデバイスに対して読み取り/書き込みを行うライブラリがあります。デバイスは、MicrosoftのHIDクラスドライバーと互換性があるように、HIDデバイスプロファイルを実装します。
システムにインストールされている他のアプリケーションが、共有モードのない読み取り/書き込みモードでデバイスを開いています。これにより、私のライブラリ(およびそれを消費するもの)がデバイスで機能しなくなります。これは、HID互換デバイスであることに問題があると思います。他のドライバーソフトウェア(マウス、コントローラー、PHIDGETSなど)は非協調的である可能性があります。
とにかく、デバイスファイルのパスは次の形式です。
1:「\\?\ hidden#hpqremhiddevice&col01#5&21ff20e7&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}」。 2:「\\?\ hidden#vid_045e&pid_0023#7&34aa9ece&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}」。 3:「\?\ hidden#vid_056a&pid_00b0&col01#6&5b05f29&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}」。
そして、私は次のようなコードを使用してそれを開こうとしています:
// First, open it with minimum permissions, this device may not be ours.
// we'll re-open it later in read/write
hid_device_ref = CreateFile(
device_path, GENERIC_READ,
0, NULL, OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL, NULL);
SysInternalsのFileMonやProcessMonitorのようなツールを検討しました。しかし、上記のようなデバイスファイルハンドルの使用状況を報告することはできないようです。