Wince获取Wifi的设备名、连接状态和信号强度
2011-04-07 17:00
453 查看
Note:需CE4.0或更高版本(兼容NDIS5.1)支持
一、加入头文件
#include <winioctl.h> #include <ntddndis.h> #include <nuiouser.h>
二、Attach to NDISUIO
HANDLE hNdis = ::CreateFile( NDISUIO_DEVICE_NAME, GENERIC_ALL, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL|FILE_FLAG_OVERLAPPED, (HANDLE)INVALID_HANDLE_VALUE );
三、获取设备名称
UCHAR cbQueryBuffer[ 1024 ]; PNDISUIO_QUERY_BINDING pQueryBinding; DWORD dwBytesReturned = 0; pQueryBinding = (PNDISUIO_QUERY_BINDING)&cbQueryBuffer[ 0 ]; pQueryBinding->BindingIndex = 0; if ( ::DeviceIoControl( hNdis, IOCTL_NDISUIO_QUERY_BINDING, (LPVOID)&cbQueryBuffer[ 0 ], sizeof(NDISUIO_QUERY_BINDING), (LPVOID)&cbQueryBuffer[ 0 ], sizeof(cbQueryBuffer), &dwBytesReturned, NULL ) == TRUE ) { TCHAR* pDeviceName = (TCHAR*)( cbQueryBuffer + pQueryBinding->DeviceNameOffset ); }
四、检测连接状态
NIC_STATISTICS nicStatistics = { 0 }; DWORD dwBytesReturned = 0; BOOL bConnected = FALSE; nicStatistics.ptcDeviceName = pDeviceName; if ( ::DeviceIoControl( hNdis, IOCTL_NDISUIO_NIC_STATISTICS, NULL, 0, &nicStatistics, sizeof(NIC_STATISTICS), &dwBytesReturned, NULL ) == TRUE ) { bConnected = ( nicStatistics.MediaState == MEDIA_STATE_CONNECTED ); }
五、获取信号强度
// example. // < -90 : No Signal // < -81 : Very Low // < -71 : Low // < -67 : Good // < -57 : Very Good // ... : Excellent NDISUIO_QUERY_OID ndisQueryOid = { 0 }; DWORD dwBytesReturned = 0; int nDb = 0; ndisQueryOid.Oid = OID_802_11_RSSI; ndisQueryOid.ptcDeviceName = pDeviceName; if ( ::DeviceIoControl( hNdis, IOCTL_NDISUIO_QUERY_OID_VALUE, (LPVOID)&ndisQueryOid, sizeof(ndisQueryOid), (LPVOID)&ndisQueryOid, sizeof(ndisQueryOid), &dwBytesReturned, NULL ) == TRUE ) { ::CopyMemory( &nDb, &ndisQueryOid.Data[ 0 ], sizeof(ULONG) ); }
相关文章推荐
- Wince获取Wifi的设备名、连接状态和信号强度
- WinCE获取Wifi的设备名、连接状态和信号强度
- Wince获取Wifi的设备名、连接状态和信号强度
- Wince获取Wifi的设备名、连接状态和信号强度
- CE获取Wifi的设备名、连接状态和信号强度
- CE获取Wifi的设备名、连接状态和信号强度
- CE获取Wifi的设备名、连接状态和信号强度
- android 获取wifi开光状态,连接状态,信号强度
- Android 获取 Wifi 信号强度,检测是 Wifi 或者流量,获取手机电池电量及充电状态
- 通过OpenNetCF来获取周围的Wifi设备以及信号强度
- ios开发可以获取到连接的wifi的信号强度么?
- 获取android设备wifi连接状态
- Android 不连接蓝牙设备获取信号强度
- Android 获取 Wifi 信号强度,检测是 Wifi 或者流量,获取手机电池电量及充电状态
- Android编程获取网络连接状态(3G/Wifi)及调用网络配置界面
- iOS用来获取设备上的网络状态(2G,3G,WIFI...)
- Android编程获取网络连接状态(3G/Wifi)及调用网络配置界面
- Android编程获取网络连接状态(3G/Wifi)及调用网络配置界面
- Android 得到当前已连接的wifi的信号强度
- android 得到当前已连接的wifi的信号强度