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;
}
这是错在哪?

解决方案 »

  1.   

    我贴错了,明天贴上PC能用的grgbSdpRecord ,不过还是10022错误,不知还是不是这个错了?
      

  2.   

    搞定没有?Service.lpBlob   = NULL, 可以发布,服务也能找到,但删除服务就报10022错。
    还有可以搜索到服务,但先选文件,再去搜索蓝牙就找不到。不知道什么原因。
      

  3.   

    PC能用的grgbSdpRecord 是什么?
      

  4.   

    SdpRecord是怎么生成的?具体每个值的含义是什么?哪里有资料?