Jak cię złapią, to znaczy, że oszukiwałeś. Jak nie, to znaczy, że posłużyłeś się odpowiednią taktyką.
Atrybut usÅ‚ugi skÅ‚ada siÄ™ z dwóch części: identyfikatora oraz wartoÅ›ci. Parametr wejÅ›ciowy cbSpdStreamLength jest rozmiarem wskazywanego rekordu usÅ‚ug. Wskaźnik pData wskazuje na strukturÄ™: typedef struct _SPD_ELEMENT_DATA { SDP_TYPE type; SDP_SPECIFICTYPE specificType; union { SDP_LARGE_INTEGER_16 int128; LONGLONG int64; LONG int32; SHORT int16; CHAR int8; SDP_ULARGE_INTEGER_16 uint128; ULONGLONG uint64; ULONG uint32; USHORT uint16; UCHAR uint8; UCHAR booleanVal; GUID uuid128; ULONG uuid32; USHORT uuid16; struct { LPBYTE value; ULONG length; } string; 56 Bluetooth. Praktyczne programowanie struct { LPBYTE value; ULONG length; } url; struct { LPBYTE value; ULONG length; } sequence; struct { LPBYTE value; ULONG length; } alternative; } data; } SDP_ELEMENT_DATA, *PSDP_ELEMENT_DATA; PrawidÅ‚owo wykonana funkcja zwraca wartość ERROR_SUCCESS, w przeci- wnym razie - ERROR_INVALID_PARAMETER. 2.5.2. Funkcja BluetoothSdpEnumAttributes() Funkcja BluetoothSdpEnumAttributes() analizuje strumieÅ„ rekordów SDP i wywoÅ‚uje funkcjÄ™ powrotnÄ… callback() dla każdego atrybutu rekordu usÅ‚ug. Każdy atrybut wystÄ™pujÄ…cy w rekordzie usÅ‚ug opisuje pojedynczÄ… usÅ‚ugÄ™ udostÄ™pnianÄ… przez urzÄ…dzenie Bluetooth. BOOL BluetoothSdpEnumAttributes( LPBYTE pSDPStream, ULONG cbStreamSize, PFN_BLUETOOTH_ENUM_ATTRIBUTES_CALLBACK pfnCallback, LPVOID pvParam ); Wskaźnik pSDPStream wskazuje na pojedynczy rekord SDP. Parametr cbStreamSize jest rozmiarem strumienia rekordów. Wskaźnik pfnCallback wskazuje na funkcjÄ™ callback(), której przykÅ‚adowa konstrukcja zostaÅ‚a zamieszczona poniżej: BOOL __stdcall callback(ULONG uAttribId, LPBYTE pValueStream, ULONG cbStreamSize, LPVOID pvParam) { SDP_ELEMENT_DATA sdpElementData; wprintf(L"callback() uAttribId: %ul\n", uAttribId); wprintf(L"callback() pValueStream: %d\n ", Detekcja urzÄ…dzeÅ„. Część I 57 pValueStream); wprintf(L"callback() cbStreamSize: %ul\n ", cbStreamSize); if(BluetoothSdpGetElementData(pValueStream, cbStreamSize, &sdpElementData) != ERROR_SUCCESS) { //... return FALSE; } else { //... return TRUE; } } //---------------------------------------------------- pvParam jest parametrem opcjonalnym. PrawidÅ‚owo wykonana funkcja zwraca wartość TRUE. Zwrócona przez funkcjÄ™ wartość FALSE oznacza, iż nie można zanalizować strumienia rekordów SDP. Kod ewentualnego bÅ‚Ä™du w trakcie wykonywania funkcji powinien być okreÅ›lony za pomocÄ… GetLastError() i może być jednym z: ERROR_INVALID_PARAMETER – wskaźniki pSDPStream lub/i pfnCallback wskazujÄ… na wartość pustÄ… NULL, ERROR_INVALID_DATA – zawartość strumienia rekordów SDP jest niewÅ‚aÅ›ciwa. 2.5.3. Funkcja BluetoothSdpGetAttributeValue() Funkcja BluetoothSdpGetAttributeValue() pobiera wartość atrybutu wÅ‚aÅ›ciwÄ… jego identyfikatorowi. Identyfikator atrybutu jest 16-bitowÄ… danÄ… typu unsigned int (UINT16). DWORD BluetoothSdpGetAttributeValue( __in LPBYTE pRecordStream, __in ULONG cbRecordLength, __in USHORT usAttributeId, __out PSDP_ELEMENT_DATA pAttributeData ); Wskaźnik pRecordStream wskazuje na rekord usÅ‚ug SDP. Parametr cbRe- cordLength okreÅ›la jego rozmiar w bajtach. Parametr usAttributeId jest identyfikatorem atrybutu w rekordzie usÅ‚ug. WartoÅ›ci wszystkich identyfikato- rów atrybutów wystÄ™pujÄ…cych w rekordach usÅ‚ug zapisane sÄ… w formacie SDP_ATTRIB_Xxx w module bthdef.h. Wskaźnik pAttributeData wskazuje 58 Bluetooth. Praktyczne programowanie
|
WÄ…tki
|