|
|
|
|
|
|
|
Windows驱动开发
帖子发起人: joe2007max83 发起时间: 2011-07-01 16:21 下午 回复: 3
|
帖子排序:
|
|
|
|
2011-07-01, 16:21 下午
|
joe2007max83
注册: 2011-07-01
发 贴: 5
|
大家帮看看为什么DeviceIoControl访问OID_802_11_BSSID_LIST老是失败
|
|
|
|
如题,下面一段程序中,DeviceIoControl访问OID_802_11_BSSID_LIST老是失败(见下面红色),也就是说bResult一直等于0;为什么?请教牛人!!!
可能的问题出现在哪?为什么第二个DeviceIoControl失败?
#include "stdafx.h"
#include
#include
#include
#include
#include
#include
#include
#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;iNumberOfItems;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();
}
}
|
|
|
IP 地址: 已记录
|
报告
|
|
|
|
2011-07-01, 20:16 下午
|
格蠹老雷
注册: 2005-12-19
发 贴: 1,303
|
Re: 大家帮看看为什么DeviceIoControl访问OID_802_11_BSSID_LIST老是失败
|
|
|
|
If the query fails, DeviceIoControlreturns zero. To get extended error information, call GetLastError.
[from MSDN]
|
|
|
IP 地址: 已记录
|
报告
|
|
|
|
2011-07-01, 22:56 下午
|
joe2007max83
注册: 2011-07-01
发 贴: 5
|
Re: 大家帮看看为什么DeviceIoControl访问OID_802_11_BSSID_LIST老是失败
|
|
|
|
谢谢你的回答。
GetLastError返回值为31,
〖31〗-连到系统上的设备没有发挥作用。
是什么意思?如何解决?
我的网卡应该是好的。我还用它上网呢。
|
|
|
IP 地址: 已记录
|
报告
|
|
|
|
高端调试 » 驱动程序开发 » Windows驱动开发 » Re: 大家帮看看为什么DeviceIoControl访问OID_802_11_BSSID_LIST老是失败
|
|
|
|
|
|