OID_GEN_CURRENT_PACKET_FILTER
作为查询,OID_GEN_CURRENT_PACKET_FILTER OID 报告从微型端口驱动程序接收指示中的网络数据包类型。
作为集,OID_GEN_CURRENT_PACKET_FILTER OID 指定协议从微型端口驱动程序接收指示的净数据包类型。
版本信息
Windows Vista 和更高版本的 Windows
支持。
NDIS 6.0 及更高版本的微型端口驱动程序
必需。 (请参阅备注部分)
注解
对于 NDIS 6.0 及更高版本的微型端口驱动程序,不会请求查询,并且必须设置 。 NDIS 处理微型端口驱动程序的查询。 微型端口驱动程序在初始化期间报告数据包筛选器信息。
微型端口驱动程序将其中等类型报告为系统为其提供筛选器库的类型。 数据包筛选器使用 OR 操作以包含方式合并以下类型:
NDIS_PACKET_TYPE_DIRECTED
定向数据包。 定向数据包包含等于 NIC 的工作站地址的目标地址。
NDIS_PACKET_TYPE_MULTICAST
发送到多播地址列表中的地址的多播地址数据包。
协议驱动程序可以通过指定多播或功能地址数据包类型来接收以太网 (802.3) 多播数据包。 设置多播地址列表或功能地址确定 NIC 驱动程序启用的多播地址组。
NDIS_PACKET_TYPE_ALL_MULTICAST
所有多播地址数据包,而不仅仅是多播地址列表中枚举的数据包。
NDIS_PACKET_TYPE_BROADCAST
广播数据包。
NDIS_PACKET_TYPE_PROMISCUOUS
指定所有数据包,而不考虑是否启用 VLAN 筛选以及 VLAN 标识符是否匹配。
NDIS_PACKET_TYPE_ALL_FUNCTIONAL
所有功能地址数据包,而不仅仅是当前功能地址中的数据包。
NDIS_PACKET_TYPE_ALL_LOCAL
由已安装的协议发送的所有数据包,以及由给定 NdisBindingHandle 标识的 NIC 指示的所有数据包。
NDIS_PACKET_TYPE_FUNCTIONAL
发送到当前功能地址中包含的地址的功能地址数据包。
NDIS_PACKET_TYPE_GROUP
发送到当前组地址的数据包。
NDIS_PACKET_TYPE_MAC_FRAME
令牌环 NIC 接收的 NIC 驱动程序帧。
NDIS_PACKET_TYPE_SMT
FDDI NIC 接收的 SMT 数据包。
NDIS_PACKET_TYPE_SOURCE_ROUTING
所有源路由数据包。 如果协议驱动程序设置此位,则 NDIS 库将尝试充当源路由网桥。
对于媒体类型为 NdisMedium802_3 或 NdisMedium802_5的微型端口适配器,NDIS 在调用 NdisOpenAdapterEx 函数期间禁用数据包接收以及多播和功能地址。
对于具有所有其他媒体类型的微型端口适配器,协议驱动程序可以在 NdisOpenAdapterEx 调用期间随时开始接收数据包。 请注意,协议甚至可以在 NdisOpenAdapterEx 返回之前接收数据包。 通常,数据包筛选是尽力而为的,并且协议驱动程序必须准备好处理接收指示,即使数据包筛选器为零也是如此。
对于查询,NDIS 返回使用 OR 运算符组合的绑定筛选器。
对于集,指定的数据包筛选器将替换绑定的上一个数据包筛选器。 如果微型端口驱动程序以前启用了数据包类型,但协议驱动程序未在新筛选器中指定该类型,则协议驱动程序将不会接收此类型的数据包。
对于媒体类型为 NdisMedium802_3 或 NdisMedium802_5的微型端口适配器,如果微型端口驱动程序没有为响应此查询的特定数据包类型设置位,则协议驱动程序将不会接收该类型的数据包。 因此,协议驱动程序可以通过使用零筛选器调用 NdisOidRequest 或 NdisCoOidRequest 函数来禁用数据包接收。
对于具有所有其他媒体类型的微型端口适配器,NDIS 不会检查数据包类型。 对于这些媒体类型,协议驱动程序无法通过将筛选器指定为零来禁用数据包接收。
调用微型端口驱动程序的 MiniportInitializeEx 函数时,微型端口驱动程序的数据包筛选器应设置为零。 当数据包筛选器为零时,将禁用接收指示。 在微型端口驱动程序的 MiniportInitializeEx 函数返回后,协议驱动程序可以将OID_GEN_CURRENT_PACKET_FILTER设置为非零值,从而使微型端口驱动程序能够指示接收的数据包到该协议。
如果使用 NDIS_PACKET_TYPE_PROMISCUOUS 位启用混杂模式,则协议驱动程序将继续接收数据包,即使发送网络节点未将其定向到该网络节点也是如此。 然后,NDIS 向协议驱动程序发送 NIC 接收的所有数据包。
设置特定的数据包筛选器不会更改绑定到同一 NIC (或更高版本的其他协议驱动程序) 数据包筛选器。 例如,如果一个绑定协议启用混杂模式,则其他绑定协议驱动程序不会接收它们未使用自己的数据包筛选器专门请求的数据包。
本机 802.11 数据包筛选器
Native 802.11 微型端口驱动程序必须仅支持以下标准数据包筛选器类型:
NDIS_PACKET_TYPE_DIRECTED
NDIS_PACKET_TYPE_MULTICAST
NDIS_PACKET_TYPE_BROADCAST
NDIS_PACKET_TYPE_PROMISCUOUS
启用后,这些标准数据包筛选器仅适用于 802.11 数据包。
此外,Native 802.11 微型端口驱动程序必须支持以下特定于 Native 802.11 媒体的数据包筛选器类型:
NDIS_PACKET_TYPE_802_11_RAW_DATA
802.11 媒体访问控制 (MAC) 协议数据单元 (MPDU) 帧,其中包含 802.11 工作站接收格式的所有数据。 设置此筛选器后,驱动程序必须指示每个未修改的 MPDU 片段,然后才能指示 MAC 服务数据单元 (MSDU) 从 MPDU 片段重新组合的数据包。
如果 MPDU 片段已加密,则它不得在指示该片段之前解密该片段。 但是,微型端口驱动程序必须在重新组装并指示 MSDU 数据包之前解密每个 MPDU 片段。
如果启用,此筛选器类型仅影响其他标准数据包筛选器,例如NDIS_PACKET_TYPE_DIRECTED或NDIS_PACKET_TYPE_BROADCAST。
有关指示原始 802.11 数据包的方法的详细信息,请参阅 指示原始 802.11 数据包。
NDIS_PACKET_TYPE_802_11_DIRECTED_MGMT
定向 802.11 管理数据包。 定向数据包包含等于 NIC 的工作站地址的目标地址。
NDIS_PACKET_TYPE_802_11_MULTICAST_MGMT
多播 802.11 管理数据包发送到多播地址列表中的地址。
NDIS_PACKET_TYPE_802_11_ALL_MULTICAST_MGMT
无论 802.11 MAC 标头中的目标地址是否在多播地址列表中,802.11 工作站接收的所有多播 802.11 管理数据包。
NDIS_PACKET_TYPE_802_11_BROADCAST_MGMT
广播 802.11 工作站接收的 802.11 管理数据包。
NDIS_PACKET_TYPE_802_11_PROMISCUOUS_MGMT
802.11 工作站接收的所有 802.11 管理数据包。
NDIS_PACKET_TYPE_802_11_RAW_MGMT
802.11 MPDU 管理帧,其中包含 802.11 工作站接收格式的所有数据。 设置此筛选器后,驱动程序必须指示每个未修改的 MPDU 片段,然后才能指示 MAC 管理协议数据单元 (MMPDU) 从 MPDU 片段重新组合的数据包。
如果启用,此筛选器类型仅影响其他 802.11 管理数据包筛选器,例如NDIS_PACKET_TYPE_802_11_DIRECTED_MGMT或NDIS_PACKET_TYPE_802_11_MULTICAST_MGMT。
有关指示原始 802.11 管理数据包的方法的详细信息,请参阅 指示原始 802.11 数据包。
NDIS_PACKET_TYPE_802_11_DIRECTED_CTRL
定向 802.11 控制数据包。 定向数据包包含等于 NIC 的工作站地址的目标地址。
NDIS_PACKET_TYPE_802_11_BROADCAST_CTRL
广播 802.11 工作站接收的 802.11 控制数据包。
NDIS_PACKET_TYPE_802_11_PROMISCUOUS_CTRL
802.11 工作站接收的所有 802.11 控制数据包。
如果微型端口驱动程序在本机 802.11 网络监视器 (NetMon) 或 Extensible Access Point (AP) 模式下运行,则驱动程序必须通过OID_GEN_CURRENT_PACKET_FILTER的一组请求启用以下数据包筛选器。
NDIS_PACKET_TYPE_PROMISCUOUS
NDIS_PACKET_TYPE_802_11_RAW_DATA
NDIS_PACKET_TYPE_802_11_PROMISCUOUS_MGMT
NDIS_PACKET_TYPE_802_11_RAW_MGMT
NDIS_PACKET_TYPE_802_11_PROMISCUOUS_CTRL
除 NetMon 外,在本机 802.11 模式下运行的微型端口驱动程序不得启用这些数据包筛选器设置,NDIS_PACKET_TYPE_802_11_PROMISCUOUS_CTRL除外。 不在 NetMon 模式下运行的微型端口驱动程序可以选择通过OID_GEN_CURRENT_PACKET_FILTER的一组请求启用NDIS_PACKET_TYPE_802_11_PROMISCUOUS_CTRL。
注意 当微型端口驱动程序处于 NetMon 以外的本机 802.11 模式,并且设置了OID_GEN_CURRENT_PACKET_FILTER时,如果在 OID 数据中启用了任何杂乱或原始筛选器设置,则驱动程序不得使设置请求失败。
有关 NetMon 和 ExtAP 操作模式的详细信息,请参阅以下主题:
要求
标头 |
Ntddndis.h (包括 Ndis.h) |