Я пишу некоторое программное обеспечение, которое автоматически соединяет устройство Bluetooth с помощью Windows Bluetooth API. Когда он подключается, Windows автоматически запускает установку драйвера Bluetooth HID устройства, как и ожидалось:Windows API: обнаружение при завершении установки драйвера
Это занимает около 10-15 секунд, после чего для Windows отображает на «готовое знакомые для использования» сообщение:
проблема заключается в том, что BluetoothSetServiceState()
возвращается, как только водитель установки начинает, не тогда, когда устройство фактически готово к использованию. Это вызывает некоторые проблемы для моего кода, потому что он вызывает отдельную библиотеку для связи с устройством, как только она «подключена». Первые несколько вызовов терпят неудачу, потому что драйверы не завершили установку, и попытки этих попыток мешают установке драйвера, потому что, если я попытаюсь использовать библиотеку связи до завершения установки драйвера, Windows хочет перезапустить, прежде чем устройство сможет использоваться.
Что я ищу, это способ подключить этот «готовый к использованию» случай, когда установка драйвера действительно завершена, поэтому я не делаю свои вызовы в библиотеке сообщений преждевременно. Есть ли какой-либо вызов Windows API, который я могу использовать для регистрации функции обратного вызова или прямого опроса состояния установки драйвера?
Я пишу это в ванильном C/C++, не .NET. Спасибо за вашу помощь!
Вы пробовали WM_DEVICECHANGE и/или RegisterDeviceNotification? – Ismael