C++ 发现蓝牙设备(Windows)

C++ 发现蓝牙设备(Windows),c++,windows,bluetooth,atmel,C++,Windows,Bluetooth,Atmel,我试图在windows上切换蓝牙设备,但遇到了一些问题。 首先是守则: WSAQUERYSET wsaq; HANDLE hLookup; LPWSAQUERYSET pwsaResults; DWORD dwSize; BOOL bHaveName; BT_ADDR btAddr; DWORD dwNameSpace; pwsaResults = (LPWSAQUERYSET)butuh.buf; dwSize = sizeof(butuh.buf); ZeroMemory(&ws

我试图在windows上切换蓝牙设备,但遇到了一些问题。 首先是守则:

WSAQUERYSET wsaq;
HANDLE hLookup;
LPWSAQUERYSET pwsaResults;
DWORD dwSize;
BOOL bHaveName;
BT_ADDR btAddr;
DWORD dwNameSpace;

pwsaResults = (LPWSAQUERYSET)butuh.buf;
dwSize = sizeof(butuh.buf);

ZeroMemory(&wsaq, sizeof(wsaq));
wsaq.dwSize = sizeof(wsaq);
wsaq.dwNameSpace = NS_BTH;
wsaq.lpcsaBuffer = NULL;

if (WSALookupServiceBegin(&wsaq, LUP_CONTAINERS | LUP_FLUSHCACHE, &hLookup) == SOCKET_ERROR)
{
    printf("WSALookupServiceBegin() failed %d (Maybe no BT Device?) \r\n", WSAGetLastError());
    return FALSE;
}

ZeroMemory(pwsaResults, sizeof(WSAQUERYSET));
pwsaResults->dwSize = sizeof(WSAQUERYSET);
pwsaResults->dwNameSpace = NS_BTH;
pwsaResults->lpBlob = NULL;

while (WSALookupServiceNext(hLookup, LUP_RETURN_NAME | LUP_RETURN_ADDR, &dwSize, pwsaResults) == 0)
{
    // to get the remote address, the btAddr field should be properly cast
    btAddr = ((SOCKADDR_BTH *)pwsaResults->lpcsaBuffer->RemoteAddr.lpSockaddr)->btAddr;

    // Verify the returned name
    bHaveName = (pwsaResults->lpszServiceInstanceName) && *(pwsaResults->lpszServiceInstanceName);

    // Some more info
    dwNameSpace = pwsaResults->dwNameSpace;

    wprintf(L"Device Name: %s \n", pwsaResults->lpszServiceInstanceName);
    wprintf(L"Device Address: 0X%012X \n", btAddr);
    wprintf(L"NAP Address: 0X%04X \n", GET_NAP(btAddr));
    wprintf(L"SAP Address: 0X%08X \n", GET_SAP(btAddr));
    wprintf(L"Name Space: 0X%0X \n \n \n", dwNameSpace);

    memcpy(&list+devices, &btAddr, sizeof(btAddr));
    devices++;
}

if (WSALookupServiceEnd(hLookup) != 0)
    printf("FindingBtDevices(): WSALookupServiceEnd(hLookup) failed with error code %ld\n", WSAGetLastError());
我可以毫无问题地发现我的手机或其他计算机,但我尝试使用Atmel的蓝牙devkit,但我找不到它。

如果我使用Windows GUI搜索蓝牙设备,那么查找devkit就没有问题。
你知道问题出在哪里,怎么解决吗

也无法通过蓝牙找到windows 7的设备。唯一的方法是使用Windows 8.1/10并使用集成应用程序。此应用程序使用“通用Windows平台”。搜索设备的方法与winsock方法不同。也无法通过蓝牙在windows 7上找到设备。唯一的方法是使用Windows 8.1/10并使用集成应用程序。此应用程序使用“通用Windows平台”。搜索设备的方法与winsock方法不同。