IOCTL_NDIS_QUERY_GLOBAL_STATS的使用

WLAN Scan with NDIS Miniport and Much More 这篇 文章知道 可以使用IOCTL_NDIS_QUERY_GLOBAL_STATS,然后通过DeviceIoControl()函数把需要的OID传递给底层的Filter驱动或者Miniport驱动。犹如:

oidcode = OID_802_11_BSSID_LIST ;//action to perform

        if( DeviceIoControl(    m_handle,// device to be queried
                                IOCTL_NDIS_QUERY_GLOBAL_STATS,// operation to 
                                                              // perform
                                &oidcode,
                                sizeof( oidcode),//  input buffer
                                ( ULONG *) m_pBSSIDList,// output buffer
                                sizeof( NDIS_802_11_BSSID_LIST) * 
                                NUMBEROF_BSSIDS,
                                &bytesreturned,// # bytes returned
                                NULL) == 0)// synchronous I/O
        {

 看起来很好使用,但是注意的是IOCTL_NDIS_QUERY_GLOBAL_STATS只是适合查询(Query),估计是出于安全的考虑,微软没有允许Set OID,因为这样会更改到底层驱动的某些属性。当然Vista开始,你可以使用与某个OID对应的WMI,比如对于OID_802_11_BSSID_LIST_SCAN你可以使用WlanScan函数,当然也有对应的Ndis6.0版本的OID_DOT11_SCAN_REQUEST。但是是不是可以在User Mode层使用这个OID,未可知。但是WlanScan是可以的。

更加详细资料: http://www.ndis.com/ndis-general/queryglobalstats/default.htm

你可能感兴趣的:(驱动开发)