Я пытаюсь использовать Windows Sockets, чтобы обнаружить устройство BT в радиусе действия. Я пользуюсь этим MSDN статья для этого.
Код работает, и я получаю информацию об устройствах по вызову WSALookupServiceNext (…).
Информация об устройстве предоставляется WSAQUERYSETW структура.
Как узнать, находится ли устройство в радиусе действия на основе данных из структуры WSAQUERYSETW?
Я могу проверить, если WSAQUERYSETW :: dwOutputFlags имеет один из следующих флагов:
BTHNS_RESULT_DEVICE_CONNECTED
BTHNS_RESULT_DEVICE_AUTHENTICATED
BTHNS_RESULT_DEVICE_REMEMBERED
И если устройство ПОДКЛЮЧЕНО, таким образом, оно определенно в радиусе действия, но как насчет других состояний?
Что именно ЗАПОМНЕНО состояние?
Эти флаги не являются взаимоисключающими — устройства могут быть все три или ни одного.
ЗАПОМНЕНО означает, что он указан в списке «устройства Bluetooth» на панели управления. Это может или не может быть в диапазоне. Единственная гарантия, которую мы имеем с устройствами Remembered, заключается в том, что в прошлом они находились на некотором расстоянии.
AUTHENTICATED означает, что оно было сопряжено с устройством, т. Е. Если необходим контакт, он уже был предоставлен. Устройство может быть запомнено, но не аутентифицировано; однако любое устройство, которое было аутентифицировано (т. е. Windows сопряжено с ним), будет запомнено
Если устройство ранее было сопряжено, а затем удалено вручную, это не аутентифицирует его, и оно не будет ни запомнено, ни аутентифицировано.
Других решений пока нет …