As a set request, NDIS and overlying protocol drivers use the OID_802_3_MULTICAST_LIST OID request to replace the current multicast address list on a miniport adapter. If an address is present in the list, that address is enabled to receive multicast packets.

As a query request, NDIS and protocol drivers use the OID_802_3_MULTICAST_LIST OID request to obtain the current multicast address list.

NDIS handles OID_802_3_MULTICAST_LIST query requests for miniport drivers, so miniport drivers never receive these query requests.

Miniport drivers that support multicast address lists must support OID_802_3_MULTICAST_LIST set requests.

For a set request, the InformationBuffer member of the NDIS_OID_REQUEST structure contains the multicast address list as an array of addresses.

  • Each address is an array of 6 bytes.
  • The InformationBufferLength member contains the length, in bytes, of the InformationBuffer array.
  • If there are duplicate addresses in the list in the InformationBuffer member, NDIS removes the duplicates before sending the OID_802_3_MULTICAST_LIST set request to the miniport driver.
  • If the InformationBufferLength member is zero, the miniport driver must clear the multicast address list.
  • If the InformationBufferLength member is greater than zero, the miniport driver must replace any existing multicast address list with the list in the InformationBuffer member.

The miniport adapter's multicast address list is shared by all protocol drivers that are bound to the miniport adapter. NDIS controls access to this list. If multiple protocol drivers try to modify the list at the same time, NDIS combines their requests into a single OID_802_3_MULTICAST_LIST set request, which it sends to the miniport driver.

When a miniport adapter is initialized, it resets the NIC so the multicast address list is zero. NDIS also initializes the packet filter so it does not allow the protocol driver to receive multicast packets.

To receive a multicast packet, the protocol driver must later do one of the following:

  • Set the packet filter to include the NDIS_PACKET_TYPE_MULTICAST flag. At any time, it can disable multicast packet reception by canceling this flag. The order in which the protocol driver enables reception for multicast packets is not important. For more information, see the OID_GEN_CURRENT_PACKET_FILTER OID request.
  • Set the packet filter to include the NDIS_PACKET_TYPE_ALL_MULTICAST flag, which enables all multicast packets, and do the filtering itself.

The miniport driver can set a limit on the number of multicast addresses that the multicast address list can contain. NDIS returns NDIS_STATUS_MULTICAST_FULL if a protocol driver exceeds this limit or if it specifies an invalid multicast address.

For a query request, NDIS returns a multicast address list that is the union of all multicast address lists for all protocol bindings.



Ntddndis.h (include Ndis.h)

See also




Send comments about this topic to Microsoft