Windows sockets WSAAddressToString og Bluetooth
Jeg er ved at skrive et program der skal arbejde med Bluetooth vha. den indbyggede support i Windows Sockets, som MS indførte i Windows XP SP1.Jeg har lavet support for at finde de Bluetooth devices der er i nærheden og ønsker nu at enumerere de services der findes på en specifik device. Jævnfør
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/bluetooth/bluetooth/bluetooth_and_wsalookupservicebegin_for_device_inquiry.asp
kan det gøres med WSALookupServiceBegin. Jeg er dog her nødt til at oversætte adressen på min device til en streng, hvilket skal gøres med WSAAddressToString. Det prøver jeg at gøre sådan her, hvor address er en BTH_ADDR indeholdende adressen, som jeg tidligere har fundet:
char szAddress[WSA_ADDRESS_STRING_SIZE] = {0};
DWORD dwSize = WSA_ADDRESS_STRING_SIZE;
sockaddr sa;
WSAPROTOCOL_INFO pi = {0};
pi.iAddressFamily = AF_BTH;
memset(&sa,0,sizeof(sockaddr));
sa.sa_family = AF_BTH;
memcpy(&(sa.sa_data),&address,6);
if ( WSAAddressToString(&sa,6,&pi,szAddress,&dwSize) != 0 )
return WSAGetLastError();
Det giver dog fejlkoden WSAEINVAL som betyder at et af argumenterne er invalid. Jeg er ikke helt sikker på om
WSAPROTOCOL_INFO pi = {0};
pi.iAddressFamily = AF_BTH;
er rigtigt, jeg ved jo ikke hvilken protokol jeg skal kommunikere over før jeg ved hvilke services der er på min bluetooth device. Derfor har jeg også prøvet at kalde WSAAddressToString med NULL som tredje parameter, hvilket dog også giver fejl.
Hvordan får jeg det til at virke ? Og kan jeg evt. få adressestrengen på en anden måde end at kalde WSAAdressToString ?
Jeg sidder fast og al hjælp påskønnes. Et link til et kodeeksempel eller lignende vil også være en hjælp.