Как видите, все просто.
И так, удалять устройства мы умеем. Давайте теперь научимся добавлять их. Для этого Bluetooth API предоставляет две функции:
BluetoothAuthenticateDevice - отправляет запрос на авторизацию удаленному устройству Bluetooth. Есть два режима авторизации: "Wizrd mode" и "Blind Mode".
"Wizard Mode" запускается, когда параметр pszPasskey = nil. В этом случае открывается окно "Мастера подключения". У пользователя будет запрошен пароль, который будет отправлен в запросе на авторизацию удаленному устройству. Пользователь будет оповещен системой об успешном или не успешном выполнении авторизации и получит возможность попытаться авторизировать устройства еще раз.
"Blind Mode" вызывается, когда pszPasskey <> nil. В этом случае пользователь не увидит никакого мастера. Вам необходимо программно запросить код авторизации (pszPasskey) и уведомить пользователя о результате.
Объявление функции:
Code: |
function BluetoothAuthenticateDevice( hwndParent : HWND; hRadio : THandle; pbtdi : BLUETOOTH_DEVICE_INFO; pszPasskey : PWideChar; ulPasskeyLength : ULONG): DWORD; stdcall; |
Параметры:
hwndParent |
Handle родительского окна. Если 0, то родительским окном станет окно Desktop. |
hRadio |
Handle локального радиомодуля. Если 0, то авторизация будет проведена на всех радиомодулях. Если хотя бы один пройдет авторизацию, функция выполнится успешно. |
pbdti |
Информация об устройстве, на котором необходимо авторизироваться. |
pszPasskey |
PIN для авторизации. Если nil, то вызывается мастер авторизации (описано выше). Важно: pszPasskey не NULL-терминированная строка! |
ulPasskeyLength |
Длина строки в байтах. Должна быть меньше либо равна BLUETOOTH_MAX_PASSKEY_SIZE * SizeOf(WCHAR). |
Возвращаемые значения:
ERROR_SUCCESS |
Функция выполнена успешно |
ERROR_CANCELLED |
Пользователь отменил процесс авторизации |
ERROR_INVALID_PARAMETER |
Структура pbtdi не верна |
ERROR_NO_MORE_ITEMS |
Устройство в pbtdi уже авторизированно |
Другие ошибки Win32 |
|
Для "Blind Mode" соответствие кодов ошибок Bluetooth кодам ошибок Win32 приведено в таблице:
Bluetooth |
Win32 |
BTH_ERROR_SUCCESS |
ERROR_SUCCESS |
BTH_ERROR_NO_CONNECTION |
ERROR_DEVICE_NOT_CONNECTED |
BTH_ERROR_PAGE_TIMEOUT |
WAIT_TIMEOUT |
BTH_ERROR_HARDWARE_FAILURE |
ERROR_GEN_FAILURE |
BTH_ERROR_AUTHENTICATION_FAILURE |
ERROR_NOT_AUTHENTICATED |
BTH_ERROR_MEMORY_FULL |
ERROR_NOT_ENOUGH_MEMORY |
BTH_ERROR_CONNECTION_TIMEOUT |
WAIT_TIMEOUT |
BTH_ERROR_LMP_RESPONSE_TIMEOUT |
WAIT_TIMEOUT |
BTH_ERROR_MAX_NUMBER_OF_CONNECTIONS |
ERROR_REQ_NOT_ACCEP |
BTH_ERROR_PAIRING_NOT_ALLOWED |
ERROR_ACCESS_DENIED |
BTH_ERROR_UNSPECIFIED_ERROR |
ERROR_NOT_READY |
BTH_ERROR_LOCAL_HOST_TERMINATED_CONNECTION |
ERROR_VC_DISCONNECTED |
Аналогичная функция:
BluetoothAuthenticateMultipleDevices - позволяет авторизироваться сразу на нескольких устройствах при помощи одной копии "Мастера авторизации".
Объявление функции:
Code: |
function BluetoothAuthenticateMultipleDevices( hwndParent : HWND; hRadio : THandle; cDevices : DWORD; rgpbtdi : __PBLUETOOTH_DEVICE_INFO): DWORD; stdcall; |
Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.
ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!