作为设置请求,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