2016-01-11 5 views
0

У меня проблема с моим кодом разъема bluetooth. Я получаю WSAgetErrorCode 10108, и я думаю, что это связано с тем, что я не могу найти свое устройство Bluetooth или потому, что мое устройство не поддерживается в Windows 7. Я не понимаю, как заставить мой ключ (König CSBLUEKEY100) работать правильно.C++ Bluetooth WSAGetLastError 10108

#define _WINSOCK_DEPRECATED_NO_WARNINGS 

#pragma comment(lib, "Ws2_32.lib") 
#pragma comment(lib, "irprops.lib") 

#include <stdio.h> 
#include <string> 
#include <WinSock2.h> 
#include <cstring> 
#include <fstream> 
#include <ws2bth.h> 
#include <BluetoothAPIs.h> 
#include <bthdef.h> 


#define SCK_VERSION2 0x0202 
#define WIN32_LEAN_AND_MEAN 
#define MAX_NAME 248 
typedef ULONGLONG BT_ADDR; 


using namespace std; 


int main() 
{ 

WSADATA wsadata_bt; 
WSAQUERYSET sokBT; 
WSAQUERYSET *hittadeBTresultat; 
WORD wsadata_version; 
DWORD bufferLangdBT; 
DWORD namnrymd; 
HANDLE hittaBT; 
BYTE bufferBT[4096]; 
BT_ADDR adressBT; 
LPTSTR BT; 


int wsa_ansluten; 
int bt_ansluten; 
int enheter_hittade; 


//Deklarera värden för wsa och aktivera wsa och BT 
wsadata_version = MAKEWORD(2, 2); 
wsa_ansluten = WSAStartup(MAKEWORD(2, 2), &wsadata_bt); 
memset(&sokBT, 0, sizeof(WSAQUERYSET)); 
bt_ansluten = WSALookupServiceBegin(&sokBT, LUP_CONTAINERS, &hittaBT); 
memset(bufferBT, 0, sizeof(bufferBT)); 
bufferLangdBT = sizeof(bufferBT); 
hittadeBTresultat = (WSAQUERYSET*) &bufferBT; 


//Skapa BT-värden 
sokBT.dwSize = sizeof(WSAQUERYSET); 
sokBT.dwNameSpace = NS_BTH; 
sokBT.lpBlob = NULL; 

if (wsa_ansluten != 0) 
{ 
    printf("\tERROR: Kunde inte initialisera winsock.dll\n"); 
    printf("\tFelkod: %id", WSAGetLastError()); 
    WSACleanup(); 
    system("Pause"); 
    return 0; 
    } 
    else 
    { 
    printf("Initialiserar Winsock...\t\tOK!\n"); 
    } 

if (bt_ansluten != 0) 
{ 
    printf("\tERROR: Kunde inte initialisera bluetooth.dll\n"); 
    printf("\tFelkod: %id", WSAGetLastError()); 
    WSACleanup(); 
    system("Pause"); 
    return 0; 
} 
else 
{ 
    printf("Initialiserar Bluetooth...\t\tOK!\n"); 
    system("cls"); 
} 

//Sök efter bluetoothenheter 

while (wsa_ansluten && bt_ansluten == 0) 
{ 
     enheter_hittade = WSALookupServiceNext(hittaBT, LUP_RETURN_NAME | LUP_CONTAINERS | LUP_RETURN_ADDR | 
    LUP_FLUSHCACHE | LUP_RETURN_TYPE | LUP_RETURN_BLOB | LUP_RES_SERVICE, &bufferLangdBT, hittadeBTresultat); 
    if (enheter_hittade == 0) 
    { 
     adressBT = ((SOCKADDR_BTH *)hittadeBTresultat->lpcsaBuffer->RemoteAddr.lpSockaddr)->btAddr; 
     BT = hittadeBTresultat->lpszServiceInstanceName; 
     namnrymd = hittadeBTresultat->dwNameSpace; 
     wprintf(L"\tENHET\tNAP ADRESS\tSAP ADRESS\tNAMNRYMD\n"); 
     wprintf(L"\t%s\t0X%04X\t\t0X%08X\t0X%0X\n", BT, GET_NAP(adressBT), GET_SAP(adressBT), namnrymd); 
    } 


} 



WSACleanup(); 
system("PAUSE"); 
return 0; 
}; 

ответ

0
  1. Проверьте установки у вас есть Microsoft Bluetooth Enumerator (On Драйверы управления апплет панели).
  2. Попробуйте добавить LUP_RETURN_ADDR с LUP_CONTAINERS (LUP_CONTAINERS | LUP_RETURN_ADDR).
Смежные вопросы