wlanconnect()错误,请解决 [英] ERROR in wlanconnect() please solve it

查看:319
本文介绍了wlanconnect()错误,请解决的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经提出条件,例如当它发现临时状态时应该与之连接
我的朋友创建了未经身份验证的即席驱动器,当我运行此代码时,它给了我诸如无效参数之类的错误,因此请帮帮我..
首先,我正在扫描所有可用的网络,这些网络会在我正在此处访问的pAvailableNetworkList对象中产生结果..

i have put condition like when it found adhoc it should connect with that
my friend has created adhoc with no authentication and when i am running this code it is giving me error like invalid parameter so please help me out..
first of all i am scanning all available network which give result in pAvailableNetworkList object which is i am accessing over here..

if(pAvailableNetworkList->Network[i].dot11BssType==2)
{
 cout<<"\nProcess to Connect to adhoc";
 WLAN_CONNECTION_PARAMETERS ConnPara;
 ConnPara.wlanConnectionMode = wlan_connection_mode_discovery_unsecure;
 ConnPara.strProfile = NULL;
 
 DOT11_SSID temp2;
temp2.uSSIDLength = pAvailableNetworkList->Network             [i].dot11Ssid.uSSIDLength;
temp2.ucSSID[temp2.uSSIDLength] = pAvailableNetworkList->Network [i].dot11Ssid.ucSSID[temp2.uSSIDLength];
			
 ConnPara.pDot11Ssid = &temp2;
 ConnPara.pDesiredBssidList =NULL;
 ConnPara.dot11BssType = dot11_BSS_type_any;
 ConnPara.dwFlags = WLAN_CONNECTION_ADHOC_JOIN_ONLY;
 DWORD temp =WlanConnect(
                  hClientHandle,
		  &interfaceGuid,
		  &ConnPara,
		  NULL
			);
if(temp == ERROR_SUCCESS)
  cout<<"\nSuccess";
if(temp == ERROR_INVALID_PARAMETER)
  cout<<"\nERROR INVALID PARAMETER";  ///I am getting this error
}

推荐答案

在调试时尝试ASSERT(hClientHanle); ...:)
Try ASSERT(hClientHanle); at debugging... :)


OSVERSIONINFO osvi;
memset(&osvi,0,sizeof(OSVERSIONINFO));
osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);

LPWSTR pProfileXml = NULL;
DWORD dwFlags = 0;
DOT11_BSSID_LIST DesiredBssidList;
WLAN_CONNECTION_PARAMETERS * wlanParam =(WLAN_CONNECTION_PARAMETERS *)WlanAllocateMemory(sizeof(WLAN_CONNECTION_PARAMETERS));


GetVersionEx(&osvi);
如果(osvi.dwMajorVersion> = 6){
WLAN_BSS_LIST * bsslst;
WlanGetNetworkBssList(hClientHandle,&pIfInfo-> InterfaceGuid,&pBssList->网络[j] .dot11Ssid,pBssList->网络[j] .dot11BssType,true,NULL,&bsslst);
DesiredBssidList .Header.Type = NDIS_OBJECT_TYPE_DEFAULT;
DesiredBssidList .Header.Revision = DOT11_BSSID_LIST_REVISION_1;
DesiredBssidList .Header.Size = sizeof(DOT11_BSSID_LIST);
DesiredBssidList .uNumOfEntries = 1; //如果将其更改为0,则它​​可以正常连接,但是我无法控制连接到哪个AP
DesiredBssidList .uTotalNumOfEntries = 1;
DesiredBssidList .BSSIDs [0] [0] = bsslst-> wlanBssEntries-> dot11Bssid [0];
DesiredBssidList .BSSIDs [0] [1] = bsslst-> wlanBssEntries-> dot11Bssid [1];
DesiredBssidList .BSSIDs [0] [2] = bsslst-> wlanBssEntries-> dot11Bssid [2];
DesiredBssidList .BSSIDs [0] [3] = bsslst-> wlanBssEntries-> dot11Bssid [3];
DesiredBssidList .BSSIDs [0] [4] = bsslst-> wlanBssEntries-> dot11Bssid [4];
DesiredBssidList .BSSIDs [0] [5] = bsslst-> wlanBssEntries-> dot11Bssid [5]; wlanParam-> pDesiredBssidList =&DesiredBssidList;
}
其他{
wlanParam-> pDesiredBssidList = NULL;
}
wlanParam-> wlanConnectionMode = wlan_connection_mode_profile;
wlanParam-> dot11BssType = pBssList->网络[j] .dot11BssType;
wlanParam-> dwFlags = 0;
printf("pBssList-> Network [j] .dot11Ssid \ n"之前);
wlanParam-> pDot11Ssid =&pBssList->网络[j] .dot11Ssid;
printf(在ConvertToTchar \ n之前");
wlanParam-> strProfile =(LPWSTR)SSidName;
wprintf(L%s \ n",wlanParam-> strProfile);

dwResult = WlanConnect(hClientHandle,&pIfInfo-> InterfaceGuid,wlanParam,NULL);
如果(dwResult!= ERROR_SUCCESS)
{
wprintf(L"WlanConnect失败,错误:%u \ n",
dwResult);
dwRetVal = 1;
//您可以使用FormatMessage找出函数失败的原因
}其他{
wprintf(L连接成功\ n");
}
试试这个代码.
OSVERSIONINFO osvi;
memset(&osvi, 0, sizeof(OSVERSIONINFO));
osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);

LPWSTR pProfileXml = NULL;
DWORD dwFlags = 0;
DOT11_BSSID_LIST DesiredBssidList ;
WLAN_CONNECTION_PARAMETERS *wlanParam=(WLAN_CONNECTION_PARAMETERS*)WlanAllocateMemory(sizeof(WLAN_CONNECTION_PARAMETERS));


GetVersionEx(&osvi);
if (osvi.dwMajorVersion >= 6){
WLAN_BSS_LIST *bsslst;
WlanGetNetworkBssList(hClientHandle,&pIfInfo->InterfaceGuid,&pBssList->Network [j].dot11Ssid ,pBssList->Network [j].dot11BssType ,true,NULL,&bsslst);
DesiredBssidList .Header.Type = NDIS_OBJECT_TYPE_DEFAULT;
DesiredBssidList .Header.Revision = DOT11_BSSID_LIST_REVISION_1;
DesiredBssidList .Header.Size = sizeof(DOT11_BSSID_LIST);
DesiredBssidList .uNumOfEntries = 1; // If I change this to 0, it connects without a problem, but I can''t control to which AP
DesiredBssidList .uTotalNumOfEntries = 1;
DesiredBssidList .BSSIDs[0][0]=bsslst->wlanBssEntries ->dot11Bssid[0] ;
DesiredBssidList .BSSIDs[0][1]=bsslst->wlanBssEntries ->dot11Bssid[1] ;
DesiredBssidList .BSSIDs[0][2]=bsslst->wlanBssEntries ->dot11Bssid[2] ;
DesiredBssidList .BSSIDs[0][3]=bsslst->wlanBssEntries ->dot11Bssid[3] ;
DesiredBssidList .BSSIDs[0][4]=bsslst->wlanBssEntries ->dot11Bssid[4] ;
DesiredBssidList .BSSIDs[0][5]=bsslst->wlanBssEntries ->dot11Bssid[5] ; wlanParam->pDesiredBssidList = &DesiredBssidList ;
}
else{
wlanParam->pDesiredBssidList = NULL ;
}
wlanParam ->wlanConnectionMode = wlan_connection_mode_profile;
wlanParam ->dot11BssType = pBssList->Network [j].dot11BssType ;
wlanParam ->dwFlags = 0 ;
printf("before pBssList->Network [j].dot11Ssid \n");
wlanParam ->pDot11Ssid = &pBssList->Network [j].dot11Ssid ;
printf("before ConvertToTchar\n");
wlanParam ->strProfile=(LPWSTR)SSidName;
wprintf(L"%s\n",wlanParam ->strProfile);

dwResult = WlanConnect(hClientHandle,&pIfInfo->InterfaceGuid ,wlanParam ,NULL);
if (dwResult != ERROR_SUCCESS)
{
wprintf(L"WlanConnect failed with error: %u\n",
dwResult);
dwRetVal = 1;
// You can use FormatMessage to find out why the function failed
}else{
wprintf(L"Connected successfully\n");
}
Try this code.


这篇关于wlanconnect()错误,请解决的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆