3577|0

1

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

大家帮看看为什么DeviceIoControl访问OID_802_11_BSSID_LIST老是失败 [复制链接]

如题,下面一段程序中,DeviceIoControl访问OID_802_11_BSSID_LIST老是失败(见下面红色),也就是说bResult一直等于0;为什么?请教牛人!!!
可能的问题出现在哪?为什么第二个DeviceIoControl失败?

#include "stdafx.h"
#include <windows.h>  
#include <winioctl.h>  
#include <string.h>  
#include <stdio.h>  
#include <IPHlpApi.h>  
#include <IPTypes.h>  
#include <ntddndis.h>


#define NUMBEROF_BSSIDS 10  

int main()
{
HANDLE hDev;
bool bResult;
DWORD junk;
unsigned char macadress[32];
  NDIS_802_11_BSSID_LIST* m_pBSSIDList;
   
m_pBSSIDList = ( NDIS_802_11_BSSID_LIST *) VirtualAlloc( NULL,
  sizeof( NDIS_802_11_BSSID_LIST)* NUMBEROF_BSSIDS,
  MEM_RESERVE | MEM_COMMIT,
  PAGE_READWRITE) ;


hDev=CreateFile(L"//./{FC1F5ED6-543B-404D-9051-FF85FC7D8161}",
GENERIC_READ|GENERIC_WRITE,
0,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
0);
if (hDev == INVALID_HANDLE_VALUE)
{
return (FALSE);
}
else
{  
memset( m_pBSSIDList, 0, sizeof( NDIS_802_11_BSSID_LIST)* NUMBEROF_BSSIDS);

ULONG oidcode = OID_802_11_BSSID_LIST_SCAN ; //0x0D01011A=218169626

DeviceIoControl(hDev,
IOCTL_NDIS_QUERY_GLOBAL_STATS,
(LPVOID)&oidcode,
sizeof(oidcode),
(ULONG *)NULL,
0,
&junk,
0);

  Sleep(2000);

memset( m_pBSSIDList, 0, sizeof( NDIS_802_11_BSSID_LIST)* NUMBEROF_BSSIDS);
  
oidcode = OID_802_11_BSSID_LIST; //0x0D010217=218169879
bResult= DeviceIoControl(hDev,              。。。。。。。。。。。。。就是这个DeviceIoControl失败!
IOCTL_NDIS_QUERY_GLOBAL_STATS,
&oidcode,
sizeof( oidcode),
( ULONG *) m_pBSSIDList,
sizeof( NDIS_802_11_BSSID_LIST)* NUMBEROF_BSSIDS,
&junk,
NULL);

if (bResult)
{
for (int i=0;i<m_pBSSIDList->NumberOfItems;i++)
{
int temp=i;
PNDIS_WLAN_BSSID cpSsid=m_pBSSIDList->Bssid;
while(temp!=0)
{
cpSsid=(PNDIS_WLAN_BSSID)((char *)cpSsid +cpSsid->Length);
temp--;
}
printf("%f",cpSsid->Ssid.Ssid);
printf("%d",cpSsid->Rssi);
printf((char*)macadress,"%02X-%02X-%02X-%02X-%02X-%02X",
(int*)m_pBSSIDList->Bssid.MacAddress[0],
(int*)m_pBSSIDList->Bssid.MacAddress[1],
(int*)m_pBSSIDList->Bssid.MacAddress[2],
(int*)m_pBSSIDList->Bssid.MacAddress[3],
(int*)m_pBSSIDList->Bssid.MacAddress[4],
(int*)m_pBSSIDList->Bssid.MacAddress[5]);
}
}
printf("failed");
  CloseHandle(hDev);
  getchar();
}
}
点赞 关注

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表