2011-10-17 4 views
0

私が扱う必要があるBluetoothデバイスのグループを見ています。彼らはMACアドレスの既知の銀行を持っているので、私は列挙されたリストからそれらを選ぶことができます。システムに現在のリストを提供するのに問題が発生しています。WinXP/MFC:Bluetooth列挙:デバイスリストをリセットしますか?

BLUETOOTH_RADIO_INFO radioInfo; 
radioInfo.dwSize = sizeof(radioInfo); 
HRESULT hr = ::BluetoothGetRadioInfo(hRadio, &radioInfo); 

BLUETOOTH_DEVICE_SEARCH_PARAMS deviceSearchParams; 
memset(&deviceSearchParams, 0, sizeof(deviceSearchParams)); 
deviceSearchParams.dwSize = sizeof(deviceSearchParams); 
deviceSearchParams.fReturnAuthenticated = false; 
deviceSearchParams.fReturnRemembered = false; 
deviceSearchParams.fReturnUnknown = true; 
deviceSearchParams.fReturnConnected = false; 
deviceSearchParams.hRadio = hRadio; 

HANDLE hDeviceFind = ::BluetoothFindFirstDevice(&deviceSearchParams, &deviceInfo); 

私はデバイスリストをループし、認識された単位を選択します。

検出可能なデバイスをリフレッシュするためにコントロールパネルのアプレットを再実行する必要があると思われます。そうしないと、ローカルでペアになっていないデバイスの実際のリストではなく、「記憶された」リストオンになります)。

提案? XP/VC2008/MFCを使用して

答えて

0

FWIW:

WORD wVersionRequested = 0x202; 
WSADATA m_data; 

if (::WSAStartup(wVersionRequested, &m_data) == S_OK) 
{ 
    WSAQUERYSET querySet; 

    memset(&querySet, 0, sizeof(querySet)); 

    querySet.dwSize = sizeof(querySet); 

    querySet.dwNameSpace = NS_BTH; 

    HANDLE hLookup; 
    DWORD flags = LUP_RETURN_NAME | LUP_CONTAINERS | LUP_RETURN_ADDR | LUP_FLUSHCACHE |  LUP_RETURN_TYPE | LUP_RETURN_BLOB | LUP_RES_SERVICE; 

    int nResult = WSALookupServiceBegin(&querySet, flags, &hLookup); 
    WSALookupServiceEnd(hLookup); 
    WSACleanup(); 

    if(nResult != S_OK) return FALSE; 
    else return TRUE; 
} 

return FALSE; 
:あなたは、リストをリセットしたい場合は、このコードを使用します
関連する問題