Historia wymaga pasterzy, nie rzeźników.


2.6.4. Funkcja BluetoothSendAuthenticationResponseEx()
Funkcja BluetoothSendAuthenticationResponseEx() rozszerza funkcjo-
nalność poprzedniej i jest rekomendowana do wykorzystania w programach
działających w systemach Windows Vista z SP2 oraz Windows 7.
HRESULT WINAPI BluetoothSendAuthenticationResponseEx(
__in_opt HANDLE hRadioIn,
__in PBLUETOOTH_AUTHENTICATE_RESPONSE
pauthResponse
);
Identyfikator hRadioIn wskazuje na lokalny moduł radiowy Bluetooth. Wskaź-
nik pauthResponse wskazuje na strukturÄ™ BLUETOOTH_AUTHENTICATE_
RESPONSE, której specyfikacja została przedstawiona w tabeli 2.7.
Detekcja urządzeń. Część I
63
typedef struct _BLUETOOTH_AUTHENTICATE_RESPONSE {
BLUETOOTH_ADDRESS bthAddressRemote;
BLUETOOTH_AUTHENTICATION_METHOD authMethod;
union {
BLUETOOTH_PIN_INFO pinInfo;
BLUETOOTH_OOB_DATA_INFO oobInfo;
BLUETOOTH_NUMERIC_COMPARISON_INFO numericCompInfo;
BLUETOOTH_PASSKEY_INFO passkeyInfo;
} ;
UCHAR negativeResponse;
} BLUETOOTH_AUTHENTICATE_RESPONSE,
*PBLUETOOTH_AUTHENTICATE_RESPONSE;
Tabela 2.7. Specyfikacja struktury BLUETOOTH__AUTHENTICATE_RESPONSE
Element struktury
Znaczenie
bthAddressRemote
Wskaźnik do struktury
typedef struct _BLUETOOTH_ADDRESS {
union {
BTH_ADDR ullLong;
BYTE rgBytes[6];
} ;
} BLUETOOTH_ADDRESS;
Pola struktury przechowujÄ… adres urzÄ…dzenia Bluetooth.
authMethod
Element typu wyliczeniowego
BLUETOOTH_AUTHENTICATION_METHOD (patrz
tabela 2.6).
pinInfo
Wskaźnik do struktury
Typedef struct _BLUETOOTH_PIN_INFO {
UCHAR pin[BTH_MAX_PIN_SIZE];
UCHAR pinLength;
} BLUETOOTH_PIN_INFO,
*PBLUETOOTH_PIN_INFO;
Pola struktury przechowują wartość oraz długość kodu
PIN.
oobInfo
Wskaźnik do struktury
typedef struct
_BLUETOOTH_OOB_DATA_INFO {
UCHAR C[16];
UCHAR R[16];
64
Bluetooth. Praktyczne programowanie
} BLUETOOTH_OOB_DATA_INFO,
*PBLUETOOTH_OOB_DATA_INFO;
Pola struktury przechowujÄ… odpowiednio: 128-bitowy
klucz kryptograficzny wykorzystywany w trakcie
dwukierunkowego zestawiania urządzeń (C[16]), oraz
liczbÄ™ pseudolosowÄ… wykorzystywanÄ… w trakcie
jednokierunkowego dobierania w pary urządzeń (R[16]).
numericCompInfo
Wskaźnik do struktury
typedef struct
_BLUETOOTH_NUMERIC_COMPARISON_INFO {
ULONG NumericValue;
} BLUETOOTH_NUMERIC_COMPARISON_INFO,
*PBLUETOOTH_NUMERIC_COMPARISON_INFO;
Pole struktury przechowuje wartość liczbową
wykorzystywaną w trakcie zestawiania urządzeń w pary.
passkeyInfo
Wskaźnik do struktury
typedef struct _BLUETOOTH_PASSKEY_INFO
{
ULONG passkey;
} BLUETOOTH_PASSKEY_INFO,
*PBLUETOOTH_PASSKEY_INFO;
Pole struktury przechowuje klucz wykorzystywany w
trakcie dobierania w pary urządzeń.
negativeResponse
Wartość TRUE, jeżeli uwierzytelnianie urządzeń nie
powiodło się (np., ze względu na niezgodność
wprowadzonych kodów zestawiania w pary).
Wartości
zwracane
przez
funkcjÄ™
BluetoothSendAuthentication-
ResponseEx() sÄ… analogiczne jak w przypadku funkcji BluetoothSend-
AuthenticationResponse().
2.6.5. Funkcja BluetoothUnregisterAuthentication()
Funkcja BluetoothUnregisterAuthentication() zwalnia identyfikator
hRegHandle przydzielony uprzednio za pomocÄ… BluetoothRegisterFor-
Authentication().
BOOL BluetoothUnregisterAuthentication()
HBLUETOOTH_AUTHENTICATION_REGISTRATION hRegHandle
);
Prawidłowo wykonana funkcja zwraca wartość TRUE.
Detekcja urządzeń. Część I
65
2.6.6. Przykłady
W trakcie procesu dobierania urządzeń w pary użytkownik może zostać
poproszony o wprowadzenie lub/i potwierdzenie odpowiedniego kodu. Kod ten
bywa często wyświetlany na urządzeniu lub/i na komputerze, w zależności od
typu urządzenia. Stanowi on gwarancję, że są zestawiane w pary odpowiednie
urzÄ…dzenia Bluetooth. Na listingu 2.4 zaprezentowano szkielet kodu
obrazujÄ…cego praktyczne aspekty wykorzystywania w aplikacji zarzÄ…dzajÄ…cej
urzÄ…dzeniami
Bluetooth
niektórych
funkcji
rodziny
BluetoothXxx-
AutenticationXxx() umożliwiających zestawianie w pary urządzeń na