Ich schreibe eine Software, die automatisch ein Bluetooth-Gerät mit dem Windows Bluetooth API verbindet. Wenn es eine Verbindung, Windows automatisch startet die Bluetooth-HID-Gerätetreiber zu installieren, wie erwartet:Windows-API: Erkennen, wenn eine Treiberinstallation beendet ist
Diese ca. 10-15 Sekunden dauert, woraufhin zeigt Windows die familar „gebrauchsfertig“ Nachricht:
das Problem ist, dass BluetoothSetServiceState()
kehrt, sobald der Fahrer beginnt zu installieren, nicht, wenn das Gerät für den Einsatz tatsächlich bereit ist. Dies verursacht einige Probleme für meinen Code, da er eine separate Bibliothek für die Gerätekommunikation aufruft, sobald sie "verbunden" ist. Die ersten paar Aufrufe schlagen fehl, weil die Treiber die Installation noch nicht abgeschlossen haben und diese Verbindungsversuche die Treiberinstallation stören. Wenn ich versuche, die Kommunikationsbibliothek zu verwenden, bevor die Treiberinstallation beendet ist, möchte Windows neu starten, bevor das Gerät kann verwendet werden.
Ich suche nach einer Möglichkeit, dieses "ready-to-use" -Ereignis anzuhängen, wenn die Treiberinstallation tatsächlich beendet ist, so dass ich meine Kommunikationsbibliotheksaufrufe nicht vorzeitig mache. Gibt es einen Windows-API-Aufruf, den ich verwenden kann, um entweder einen Funktionsrückruf zu registrieren oder den Status der Treiberinstallation direkt abzurufen?
Ich schreibe dies in Vanille C/C++, keine. NET. Danke für Ihre Hilfe!
Haben Sie WM_DEVICECHANGE und/oder RegisterDeviceNotification versucht? – Ismael