C++ WSALookupServiceBegin()上的错误代码10022(无效段)

C++ WSALookupServiceBegin()上的错误代码10022(无效段),c++,windows,bluetooth,winsock,C++,Windows,Bluetooth,Winsock,我目前正在尝试使用Windows Winsock API进行蓝牙设备发现。对于C和C++编码,我是相当新的,所以我道歉如果我有任何愚蠢的错误在这里。 #包括 #包括 #包括 #包括 #pragma注释(lib,“ws2_32.lib”) int main(){ 国际结果; //初始化winsock WSADATA WSADATA; iResult=WSAStartup(MAKEWORD(2,2)和wsaData); 如果(iResult!=0){ printf(“WSAStartup失败:%d\

我目前正在尝试使用Windows Winsock API进行蓝牙设备发现。对于C和C++编码,我是相当新的,所以我道歉如果我有任何愚蠢的错误在这里。
#包括
#包括
#包括
#包括
#pragma注释(lib,“ws2_32.lib”)
int main(){
国际结果;
//初始化winsock
WSADATA WSADATA;
iResult=WSAStartup(MAKEWORD(2,2)和wsaData);
如果(iResult!=0){
printf(“WSAStartup失败:%d\n”,iResult);
返回1;
}
//创建查询参数
WSAQUERYSETW查询集;
memset(&querySet,0,sizeof(querySet));
querySet.dwSize=sizeof(querySet);
querySet.dwNameSpace=NS_BTH;
//创建标志和句柄
DWORD flags=LUP_DEEP | LUP_RETURN_ALL;
把手;
//开始服务查找
iResult=WSALookupServiceBeginW(&querySet、标志和句柄);
如果(iResult!=0){
printf(“无法开始服务查找:%d\n”,WSAGetLastError());
返回1;
}
}
我一直在寻找使用WinSock进行蓝牙设备发现的例子,但是我完全找不到任何例子。我确信我只是在搜索中使用了错误的关键字。但是,运行此代码时,在实际调用
WSALookupServiceBeginW()
之前,一切正常。调用此方法时,我得到一个错误代码10022,根据Microsoft文档,这意味着我传递了一个无效参数。然而,我不确定哪一个论点是无效的。这是我的查询参数吗?我的旗帜?我的querySet

如果有人知道我在这段特定代码中做错了什么,或者知道我可以在哪里找到关于如何使用WinSock API的信息,我也会非常感激


< >编辑1:我不是新的编码,只是C和C++编码(和Windows API一般)。我不会说我是专家,但我会说我对Java编程语言相当精通。

我遇到的问题是,我在
wsalookupservice begin()函数中使用了错误的标志。标志应该包含
LUP\u容器
LUP\u FLUSH\u缓存
的值,但它们没有。感谢对解决方案的评论中的人,以及关于如何更好地使用Winsock的更多信息:)

dwFlags=LUP_CONTAINERS | LUP_FLUSHCACHE | LUP_RETURN_ADDR;()服务: