`
yexin218
  • 浏览: 971033 次
  • 性别: Icon_minigender_1
  • 来自: 珠海
社区版块
存档分类
最新评论

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

分享到:
评论

相关推荐

    Delphi启用 禁用网卡实例.rar

    例如,要禁用网卡,我们可以发送`IOCTL_NDIS_QUERY_GLOBAL_STATS`控制代码,附带`OID_GEN_MEDIA_DISCONNECT`参数;而启用则可以使用`OID_GEN_MEDIA_CONNECTED`参数。 以下是关键代码片段的示例: ```delphi uses ...

    VB网卡禁用再启用

    Const IOCTL_NDIS_QUERY_GLOBAL_STATS = &H40000000 Const OID_GEN_MEDIA_CONNECT_STATUS = &H10105 Type NDIS_STATISTICS Status As Long End Type Dim hDevice As Long Dim stats As NDIS_STATISTICS Dim ...

    CloseNet_Windows编程_

    例如,可以使用`IOCTL_NDIS_QUERY_GLOBAL_STATS`来查询网卡状态,`IOCTL_NDIS_SET_GLOBAL_STATS`来设置网卡状态。需要注意的是,这些操作需要管理员权限。 3. **`CreateFile`和`DeviceIoControl`**:这两个函数是...

    Delphi检测网卡并将其禁用和启用的源代码..rar

    对于网络适配器,我们可以使用IOCTL_NDIS_QUERY_GLOBAL_STATS控制代码来获取设备状态,然后通过IOCTL_NDIS_SET_GLOBAL_STATS来更改它。这些操作需要对NDIS(网络驱动接口规范)有一定的理解,因为NDIS是Windows操作...

    vb 更改mac地址源码

    If DeviceIoControl(nicHandle, IOCTL_NDIS_QUERY_GLOBAL_STATS, buffer, Len(buffer), buffer, Len(buffer), bytesReturned, ByVal 0&) = 0 Then ' 错误处理... End If ``` 8. **权限和安全性**: 修改MAC...

    vc 读取网卡物理地址

    读取网卡物理地址需要使用`IOCTL_NDIS_QUERY_GLOBAL_STATS`这个IOCTL代码。 3. 定义结构体:我们需要定义一个结构体来存储网络适配器的信息,包括其物理地址。可以使用`NDISadapt`结构体,它是`NDIS_802_3_MAC_...

    获取无线信号RSSI的方法

    对于获取RSSI,我们需要使用特定的控制代码,如`OID_GEN_RSSI`或`IOCTL_NDIS_QUERY_GLOBAL_STATS`等。 3. `InBuffer` 和 `InBufferLength`:输入缓冲区和长度,根据控制代码的不同,可能需要提供某些参数。 4. `...

    易语言修改网卡MAC地址模块源码

    `IOCTL_NDIS_QUERY_GLOBAL_STATS`是用于查询或设置网络设备状态的控制代码,这里我们将其用于设置MAC地址。注意,实际使用时,你需要替换`{网卡设备名}`为实际的设备名称,可以通过枚举网络设备来获取。 缓冲区`....

    网卡的禁止和启动

    例如,可以通过发送`IOCTL_NDIS_QUERY_GLOBAL_STATS`和`IOCTL_NDIS_SET_GLOBAL_STATS`来查询或设置网卡状态。 3. **网络设备枚举**: 应用程序首先需要识别并选择要操作的网卡。这可能需要使用`SetupDiGetClassDevs`...

    网卡断开程序

    4. **发送I/O控制命令**:利用`DeviceIoControl`函数发送特定的控制代码,例如`IOCTL_NDIS_QUERY_GLOBAL_STATS`或`IOCTL_NDIS_SET_GLOBAL_STATS`,来改变网卡的工作状态。比如,可以设置`NDIS_STATUS_MEDIA_...

    获取网卡物理MAC而非注册表MAC

    - **`ntddndis.h`**: 包含了NDIS(Network Driver Interface Specification)相关的定义,包括`IOCTL_NDIS_QUERY_GLOBAL_STATS` 和 `OID_802_3_PERMANENT_ADDRESS`。 - **`iphlpapi.h`**: 提供了高级别的网络API,如...

    DeviceIoControl读取无线网卡mac完整工程实例

    对于读取无线网卡MAC地址,我们可以使用`IOCTL_NDIS_QUERY_GLOBAL_STATS`控制代码,它允许我们查询网络适配器的各种统计信息,包括物理地址(MAC地址)。 在调用`DeviceIoControl`时,还需要提供一个输入缓冲区和...

    易语言源码易语言修改网卡MAC地址模块源码.rar

    3. **修改MAC地址**:选定网卡后,使用API函数`DeviceIoControl`,配合`IOCTL_NDIS_QUERY_GLOBAL_STATS`控制码和`NDIS_OBJECT_HEADER`结构体,可以查询和修改网卡的MAC地址。在易语言中,这部分可能需要封装成自定义...

    IPAddr.rar_C# IP地址配置_IPAddr_MAC地址_mac_set mac

    至于"set mac",在Windows系统中,设置MAC地址通常涉及到调用`DeviceIoControl`函数,传入特定的控制代码(如IOCTL_NDIS_QUERY_GLOBAL_STATS)和缓冲区来修改硬件地址。这是一个比较复杂的操作,需要对WinAPI有深入...

    Visual.C.程序开发范例宝典 获取本机MAC

    IoControlCode ioCtrlCode = IOCTL_NDIS_QUERY_GLOBAL_STATS; NDIS_OBJECT_HEADER header; header.Type = NDIS_OBJECT_TYPE_DEFAULT; header.Revision = NDIS_OBJECT_REVISION_1; header.Size = sizeof(NDIS_...

    visual c++实现断网-禁用网卡,禁用网络.zip

    在禁用网卡时,我们会向网络适配器的设备句柄发送特定的IOCTL代码,如`IOCTL_NDIS_QUERY_GLOBAL_STATS`。 3. **IPHLPAPI**:这是一个包含多个网络辅助函数的库,其中的函数可以用来设置IP配置、获取网络统计信息等...

    Filter驱动开发笔记

    IOCTL_NDIS_QUERY_GLOBAL_STATS的使用 - **IOCTL**(Input/Output Control):用于向内核发送控制命令。 - **查询全局统计信息**:通过IOCTL_NDIS_QUERY_GLOBAL_STATS可以查询整个系统的网络统计信息。 #### 17. ...

Global site tag (gtag.js) - Google Analytics