SOCKADDR_BTH sa;
memset (&sa, 0, sizeof(sa));
int nSize; nSize = sizeof(sa);
if (getsockname(m_hSocket, (SOCKADDR *)&sa, &nSize) == SOCKET_ERROR)
return WSAGetLastError();
HANDLE recordHandle = 0; struct bigBlob
{
BTHNS_SETBLOB b;
}*pBigBlob; pBigBlob = (bigBlob *)malloc(sizeof(struct bigBlob)+cSdpRecord); ULONG ulSdpVersion = BTH_SDP_VERSION; pBigBlob->b.pRecordHandle = &recordHandle;
pBigBlob->b.pSdpVersion = &ulSdpVersion;
pBigBlob->b.ulRecordLength = cSdpRecord;
memcpy (pBigBlob->b.pRecord, rgbSdpRecord, cSdpRecord);
pBigBlob->b.pRecord[iChannelOffset] = (unsigned char)sa.port; BLOB blob;
blob.cbSize = sizeof(BTHNS_SETBLOB) + cSdpRecord - 1;
blob.pBlobData = (PBYTE) pBigBlob; WSAQUERYSET Service;
memset (&Service, 0, sizeof(Service));
Service.dwSize = sizeof(Service);
Service.lpBlob = &blob;
Service.dwNameSpace = NS_BTH; if (WSASetService(&Service, RNRSERVICE_REGISTER, 0) == SOCKET_ERROR)
{
int nError = WSAGetLastError();//10022
free(pBigBlob);
return nError;
}
else
{
free(pBigBlob);
return 0;
}
这是错在哪?
还有可以搜索到服务,但先选文件,再去搜索蓝牙就找不到。不知道什么原因。