Wince5.0下获取RSSI的问题

hongjun_sky 2013-07-15 08:25:12
各位大哥,小弟一直纠结于获取无线网卡所接受到的无线信号强度:写的程序如下:
//获得网卡设备的句柄
HANDLE hNdis = ::CreateFile( NDISUIO_DEVICE_NAME, GENERIC_ALL, 0, NULL, OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL|FILE_FLAG_OVERLAPPED,(HANDLE)INVALID_HANDLE_VALUE );
if(hNdis==INVALID_HANDLE_VALUE)
{MessageBox(_T("Fail to get the HANDLE."));
return false;
}



NDISUIO_QUERY_OID ndisQueryOid = { 0 };
DWORD dwBytesReturned = 0;
int nDb = 0;
//char buffer[16]={0};
wchar_t *buffer=0;
ndisQueryOid.Oid = OID_802_11_RSSI;
ndisQueryOid.ptcDeviceName = 0;
if ( ::DeviceIoControl( hNdis,IOCTL_NDISUIO_QUERY_OID_VALUE,
(LPVOID)&ndisQueryOid,sizeof(ndisQueryOid),(LPVOID)&ndisQueryOid,
sizeof(ndisQueryOid),&dwBytesReturned,NULL ) !=0 )
{
::CopyMemory( &nDb, &ndisQueryOid.Data[ 0 ], sizeof(ULONG) );
_itow(nDb,buffer,10);
MessageBox(buffer);
}
else
MessageBox(_T("fail"));
可一直得不到结果,还请大家给点指点。
...全文
138 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
91program 2013-07-16
  • 打赏
  • 举报
回复
如果 LZ 调用的方法没有错,则需要驱动查一下功能是否实现。
hongjun_sky 2013-07-16
  • 打赏
  • 举报
回复
这个问题我解决了,具体步骤如下: 第一,我没有得到该协议下的设备的名字。代码中我将设备的名字赋值为了0,这是错误的。所以应该先指定设备的名字,再进行查询。获得设备的名字的方法如下: UCHAR cbQueryBuffer[ 1024 ]; PNDISUIO_QUERY_BINDING pQueryBinding; DWORD dwBytesReturned = 0; pQueryBinding = (PNDISUIO_QUERY_BINDING)&cbQueryBuffer[ 0 ]; pQueryBinding->BindingIndex = 0; TCHAR* pDeviceName=0; if ( ::DeviceIoControl( hNdis, IOCTL_NDISUIO_QUERY_BINDING, (LPVOID)&cbQueryBuffer[ 0 ], sizeof(NDISUIO_QUERY_BINDING), (LPVOID)&cbQueryBuffer[ 0 ], sizeof(cbQueryBuffer), &dwBytesReturned, NULL ) == TRUE ) { pDeviceName = (TCHAR*)( cbQueryBuffer + pQueryBinding->DeviceNameOffset );//在连接有线网的情况下 //这一步获的是有线网卡的名称。当连接无线网卡的时候,获得是无线网卡的名称 MessageBox(pDeviceName); } 这是小弟自己的见解,还请大家指教。

19,502

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧