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


Перечисление фильтров в VMQ

Чтобы получить список всех фильтров, заданных в очереди получения, в приложениях и драйверах OID_RECEIVE_FILTER_ENUM_FILTERS можно использовать запрос идентификатора объекта метода OID_RECEIVE_FILTER_ENUM_FILTERS (OID).

Элемент InformationBuffer структуры NDIS_OID_REQUEST изначально содержит указатель на NDIS_RECEIVE_FILTER_INFO_ARRAY структуру. При форматировании структуры NDIS_RECEIVE_FILTER_INFO_ARRAY драйвер или приложение должен задать члену QueueId идентификатор (ID) очереди получения. Идентификатор очереди получения можно получить следующими способами:

  • Драйвер с превышением получил значение идентификатора очереди получения из предыдущих запросов метода OID OID_RECEIVE_FILTER_ALLOCATE_QUEUE или OID_RECEIVE_FILTER_ENUM_QUEUES. Драйвер также может указать NDIS_DEFAULT_RECEIVE_QUEUE_ID для очереди получения по умолчанию.

  • Приложение получило значение идентификатора очереди получения из предыдущего запроса метода OID OID_RECEIVE_FILTER_ENUM_QUEUES. Приложение также может указать NDIS_DEFAULT_RECEIVE_QUEUE_ID для очереди получения по умолчанию.

После успешного возврата из запроса метода OID OID_RECEIVE_FILTER_ENUM_FILTERS элемент InformationBufferструктуры NDIS_OID_REQUEST содержит указатель на обновленную структуру NDIS_RECEIVE_FILTER_INFO_ARRAY , за которой следует одна или несколько NDIS_RECEIVE_FILTER_INFO структур. Каждая NDIS_RECEIVE_FILTER_INFO структура задает идентификатор фильтра, заданного в указанной очереди получения.

Слишком много драйверов или приложений можно использовать запрос метода OID OID_RECEIVE_FILTER_PARAMETERS для получения параметров определенного фильтра в очереди получения.

Элемент InformationBuffer структуры NDIS_OID_REQUEST изначально содержит указатель на структуру NDIS_RECEIVE_FILTER_PARAMETERS . Вышестоящее драйвер или приложение форматирует структуру NDIS_RECEIVE_FILTER_PARAMETERS , задав члену FilterId значение ненулевого идентификатора фильтра, параметры которого должны быть возвращены.

Примечание Избыточный драйвер получил идентификатор фильтра из предыдущего запроса метода OID OID_RECEIVE_FILTER_SET_FILTER или OID_RECEIVE_FILTER_ENUM_FILTERS. Приложение может получить идентификатор фильтра только из более раннего запроса метода OID OID_RECEIVE_FILTER_ENUM_FILTERS.

NDIS обрабатывает запросы OID OID_RECEIVE_FILTER_ENUM_FILTERS и метода OID_RECEIVE_FILTER_PARAMETERS для драйверов мини-портов. NDIS получил информацию из внутреннего кэша данных, полученных из запроса OID OID_RECEIVE_FILTER_SET_FILTER .