OID_802_3_MULTICAST_LIST
作为一个设置请求,NDIS 和超播协议驱动程序使用 OID_802_3_MULTICAST_LIST OID 请求来替换微型端口适配器上的当前多播地址列表。 如果列表中存在地址,则启用该地址以接收多播数据包。
作为查询请求,NDIS 和协议驱动程序使用 OID_802_3_MULTICAST_LIST OID 请求来获取当前的多播地址列表。
NDIS 处理微型端口驱动程序的OID_802_3_MULTICAST_LIST查询请求,因此微型端口驱动程序永远不会收到这些查询请求。
支持多播地址列表的微型端口驱动程序必须支持OID_802_3_MULTICAST_LIST集请求。
对于集请求,NDIS_OID_REQUEST 结构的 InformationBuffer 成员将多播地址列表作为地址数组包含在内。
- 每个地址都是 6 个字节的数组。
- InformationBufferLength 成员包含 InformationBuffer 数组的长度(以字节为单位)。
- 如果 InformationBuffer 成员的列表中存在重复地址,NDIS 会先删除重复地址,然后再向微型端口驱动程序发送OID_802_3_MULTICAST_LIST设置请求。
- 如果 InformationBufferLength 成员为零,微型端口驱动程序必须清除多播地址列表。
- 如果 InformationBufferLength 成员大于零,微型端口驱动程序必须将任何现有的多播地址列表替换为 InformationBuffer 成员中的列表。
微型端口适配器的多播地址列表由绑定到微型端口适配器的所有协议驱动程序共享。 NDIS 控制对此列表的访问。 如果多个协议驱动程序尝试同时修改列表,NDIS 会将其请求合并为单个OID_802_3_MULTICAST_LIST集请求,并将其发送到微型端口驱动程序。
初始化微型端口适配器时,它会重置 NIC,使多播地址列表为零。 NDIS 还会初始化数据包筛选器,使其不允许协议驱动程序接收多播数据包。
若要接收多播数据包,协议驱动程序稍后必须执行以下操作之一:
- 将数据包筛选器设置为包含 NDIS_PACKET_TYPE_MULTICAST 标志。 它可以随时通过取消此标志来禁用多播数据包接收。 协议驱动程序启用多播数据包接收的顺序并不重要。 有关详细信息,请参阅 OID_GEN_CURRENT_PACKET_FILTER OID 请求。
- 将数据包筛选器设置为包含 NDIS_PACKET_TYPE_ALL_MULTICAST 标志,这将启用所有多播数据包,并自行执行筛选。
微型端口驱动程序可以对多播地址列表可以包含的多播地址数设置限制。 如果协议驱动程序超出此限制或指定了无效的多播地址,则 NDIS 返回 NDIS_STATUS_MULTICAST_FULL 。
对于查询请求,NDIS 返回多播地址列表,该列表是所有协议绑定的所有多播地址列表的并集。
要求
标头 |
Ntddndis.h (包括 Ndis.h) |
另请参阅
OID_802_3_ADD_MULTICAST_ADDRESS