设为首页 收藏本站
查看: 1157|回复: 0

[经验分享] 转:CE获取Wifi的设备名、连接状态和信号强度

[复制链接]

尚未签到

发表于 2015-10-2 11:31:42 | 显示全部楼层 |阅读模式
http://www.cnblogs.com/mugua/archive/2009/12/25/1632066.html

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) );
}

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-121705-1-1.html 上篇帖子: 笔记本分享无线Wifi 下篇帖子: 十大非著名之父:手机,黑莓,iPod,FORTRAN,远程办公,鼠标,垃圾邮件,DSL,Java,WIFI说,我爸是...-asp.net关注
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表