Поделиться через


OID_802_3_MULTICAST_LIST

В качестве заданного запроса драйверы протоколов NDIS и overlying используют запрос OID_802_3_MULTICAST_LIST OID для замены текущего списка адресов многоадресной рассылки на адаптере минипорта. Если адрес присутствует в списке, он может получать пакеты многоадресной рассылки.

В качестве запроса драйверы NDIS и протоколов используют запрос OID_802_3_MULTICAST_LIST OID для получения текущего списка адресов многоадресной рассылки.

NDIS обрабатывает запросы OID_802_3_MULTICAST_LIST для драйверов минипорта, поэтому драйверы минипорта никогда не получают эти запросы.

Драйверы мини-портов, поддерживающие списки адресов многоадресной рассылки, должны поддерживать OID_802_3_MULTICAST_LIST запросов на настройку.

Для запроса набора элемент InformationBuffer структуры NDIS_OID_REQUEST содержит список адресов многоадресной рассылки в виде массива адресов.

  • Каждый адрес представляет собой массив из 6 байт.
  • Элемент InformationBufferLength содержит длину массива InformationBuffer в байтах.
  • Если в списке в элементе InformationBuffer есть дубликаты адресов, NDIS удаляет дубликаты перед отправкой запроса на настройку OID_802_3_MULTICAST_LIST драйверу мини-порта.
  • Если элемент InformationBufferLength равен нулю, драйвер мини-порта должен очистить список адресов многоадресной рассылки.
  • Если элемент InformationBufferLength больше нуля, драйвер мини-порта должен заменить любой существующий список адресов многоадресной рассылки списком в элементе InformationBuffer .

Список адресов многоадресной рассылки адаптера мини-порта совместно используется всеми драйверами протокола, привязанными к адаптеру мини-порта. NDIS управляет доступом к этому списку. Если несколько драйверов протокола пытаются одновременно изменить список, NDIS объединяет их запросы в один запрос на набор OID_802_3_MULTICAST_LIST, который отправляется драйверу мини-порта.

При инициализации адаптера минипорта он сбрасывает сетевой адаптер, чтобы список адресов многоадресной рассылки был равен нулю. 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

OID_802_3_DELETE_MULTICAST_ADDRESS

OID_802_3_MAXIMUM_LIST_SIZE

OID_GEN_CURRENT_PACKET_FILTER