Finden Sie heraus, welcher Prozess eine exklusive Sperre für ein USB-Gerätehandle hat

Ich habe eine Bibliothek, die ein USB-Gerät mit der CreateFile () -API liest / schreibt. Das Gerät implementiert das HID-Geräteprofil so, dass es mit dem HID-Klassentreiber von Microsoft kompatibel ist.

Eine andere auf dem System installierte Anwendung öffnet das Gerät im Lese- / Schreibmodus ohne Freigabemodus. Dadurch wird verhindert, dass meine Bibliothek (und alles, was sie verbraucht) mit dem Gerät arbeitet. Ich nehme an, dass dies mit einem HID-kompatiblen Gerät zu tun hat - andere Treibersoftware (Mäuse, Controller, PHIDGETS usw.) kann nicht kooperativ sein.

Wie auch immer, der Gerätedateipfad hat die Form:

1: "\\?\hid#hpqremhiddevice&col01#5&21ff20e7&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}".

2: "\\?\hid#vid_045e&pid_0023#7&34aa9ece&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}".

3: "\?\hid#vid_056a&pid_00b0&col01#6&5b05f29&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}".

Und ich versuche es mit Code zu öffnen, wie:

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

Ich habe ein Tool wie FileMon oder Process Monitor von SysInternals in Betracht gezogen. Es scheint jedoch nicht möglich zu sein, die Verwendung von Gerätedateizugriffsnummern wie den oben aufgeführten zu melden.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage