Определение возможностей ВИРТУАЛЬНОй машины сетевого адаптера
NDIS предоставляет интерфейс для определения возможностей виртуальной машины сетевого адаптера, например:
Универсальные возможности фильтрации сетевого адаптера.
Поддерживаемые возможности очередей виртуальных машин.
Поддержка lookahead для разделения сетевой памяти данных на два отдельных буфера.
Примечание Начиная с версии NDIS 6.30 разделение данных пакетов на отдельные буферы lookahead больше не поддерживается.
Драйверы miniport предоставляют следующие сведения для NDIS во время инициализации сетевого адаптера:
Возможности оборудования VMQ, которые может поддерживать сетевой адаптер.
Возможности VMQ, которые в настоящее время включены.
Функции глобальной фильтрации приема, которые включены или отключены в сетевом адаптере.
Драйверы и приложения overlying могут использовать следующие запросы OID для получения возможностей сетевого адаптера.
OID_RECEIVE_FILTER_HARDWARE_CAPABILITIES
OID_RECEIVE_FILTER_CURRENT_CAPABILITIES
OID_RECEIVE_FILTER_GLOBAL_PARAMETERS
NDIS обрабатывает эти запросы OID для драйверов минипорта. Таким образом, запрос не запрашивается для водителей мини-портов. NDIS сообщает о включенных возможностях получения VMQ сетевого адаптера во время инициализации. Таким образом, избыточным драйверам не нужно запрашивать эти идентификаторы OID.
Структура NDIS_RECEIVE_FILTER_CAPABILITIES определяет возможности фильтрации сетевого адаптера. Эта структура используется следующими способами:
Когда NDIS вызывает функцию MiniportInitializeEx , драйвер минипорта регистрирует свои возможности фильтрации путем инициализации структуры NDIS_RECEIVE_FILTER_CAPABILITIES . Затем драйвер задает элемент HardwareReceiveFilterCapabilities структуры NDIS_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTES , чтобы он указывал на NDIS_RECEIVE_FILTER_CAPABILITIES структуру. Затем драйвер вызывает функцию NdisMSetMiniportAttributes , а затем задает параметру MiniportAttributes указатель на структуру NDIS_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTES .
Драйвер избыточного протокола получает структуру NDIS_RECEIVE_FILTER_CAPABILITIES в структуре NDIS_BIND_PARAMETERS , когда NDIS вызывает функцию ProtocolBindAdapterEx драйвера.
Драйвер избыточного фильтра получает структуру NDIS_RECEIVE_FILTER_CAPABILITIES в структуре NDIS_FILTER_ATTACH_PARAMETERS , когда NDIS вызывает функцию FilterAttach драйвера.
Избыточные драйверы получают структуру NDIS_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTES путем отправки запроса OID OID_RECEIVE_FILTER_CURRENT_CAPABILITIES или OID_RECEIVE_FILTER_HARDWARE_CAPABILITIES. Члены HardwareReceiveFilterCapabilities и CurrentReceiveFilterCapabilities указывают на структуру NDIS_RECEIVE_FILTER_CAPABILITIES .
Структура NDIS_RECEIVE_FILTER_CAPABILITIES содержит следующие сведения:
EnabledFilterTypes
Типы поддерживаемых фильтров получения. Флаг NDIS_RECEIVE_FILTER_VMQ_FILTERS_ENABLED указывает, что фильтры очереди виртуальных машин (VMQ) включены.
EnabledQueueTypes
Типы поддерживаемых очередей получения. Флаг NDIS_RECEIVE_FILTER_VM_QUEUES_ENABLED указывает, что очереди виртуальных машин включены.
NumQueues
Количество очередей получения, поддерживаемых сетевым адаптером. Для поддержки VMQ это число должно быть равно или меньше числа одноадресных MAC-адресов, поддерживаемых сетевой картой. Это число не должно включать очередь по умолчанию.
Примечание Число одноадресных MAC-адресов или очередей виртуальных машин, поддерживаемых сетевым адаптером, не включает MAC-адрес связанного сетевого адаптера.
SupportedQueueProperties
Свойства очереди, поддерживаемые сетевым адаптером. Флаг NDIS_RECEIVE_FILTER_VM_QUEUE_SUPPORTED указывает, что сетевой адаптер предоставляет минимальные требования для поддержки фильтрации VMQ. Сетевой адаптер с поддержкой VMQ должен предоставлять запись таблицы MSI-X для каждой очереди получения. Поэтому драйвер vmq miniport должен установить флаг NDIS_RECEIVE_FILTER_MSI_X_SUPPORTED.
SupportedFilterTests
Операции проверки фильтра, поддерживаемые драйвером мини-порта. Например, сетевой адаптер поддерживает тестирование выбранного поля заголовка, чтобы определить, равно ли оно заданному значению. Драйвер vmq miniport должен установить флаг NDIS_RECEIVE_FILTER_TEST_HEADER_FIELD_EQUAL_SUPPORTED.
SupportedHeaders
Типы заголовков сетевых пакетов, которые может проверять драйвер мини-порта. Например, сетевой адаптер может проверить заголовок MAC сетевого пакета. Заголовок MAC содержит тип пакета, конечный и исходный MAC-адреса, идентификатор виртуальной локальной сети и поля тега приоритета. Драйвер vmq miniport должен установить флаг NDIS_RECEIVE_FILTER_MAC_HEADER_SUPPORTED.
SupportedMacHeaderFields
Типы полей заголовков MAC, которые может проверять драйвер минипорта. Драйвер vmq miniport должен установить флаг NDIS_RECEIVE_FILTER_MAC_HEADER_DEST_ADDR_SUPPORTED.
MaxMacHeaderFilters
Максимальное количество фильтров заголовков MAC, поддерживаемых драйвером мини-порта. Должно быть по крайней мере столько фильтров заголовков, сколько очередей виртуальных машин.
MaxQueueGroups
Этот элемент зарезервирован для NDIS.
MaxQueuesPerQueueGroup
Этот элемент зарезервирован для NDIS.
MinLookaheadSplitSize
Минимальный размер в байтах, поддерживаемый сетевым адаптером для сегментов пакетов lookahead.
Примечание Начиная с версии NDIS 6.30 разделение данных пакетов на отдельные буферы lookahead больше не поддерживается. Драйверы miniport, поддерживающие NDIS 6.30 или более поздних версий, должны установить для этого элемента нулевое значение.
MaxLookaheadSplitSize
Максимальный размер в байтах, поддерживаемый сетевым адаптером для сегментов пакетов lookahead.
Примечание Начиная с версии NDIS 6.30 разделение данных пакетов на отдельные буферы lookahead больше не поддерживается. Драйверы miniport, поддерживающие NDIS 6.30 или более поздних версий, должны установить для этого элемента нулевое значение.
После успешного возврата из запроса OID OID_RECEIVE_FILTER_HARDWARE_CAPABILITIES элемент InformationBuffer структуры NDIS_OID_REQUEST содержит указатель на структуру NDIS_RECEIVE_FILTER_CAPABILITIES. Эти возможности могут включать аппаратные возможности VMQ, которые в настоящее время отключены параметрами INF-файла или на странице Дополнительные свойства. Дополнительные сведения о параметрах INF-файлов VMQ см. в разделе VmQ Standard INF Entries.
Драйверы минипорта NDIS предоставляют возможности оборудования фильтрации приема во время инициализации в элементе HardwareReceiveFilterCapabilities структуры NDIS_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTES .
После успешного возврата из запроса OID OID_RECEIVE_FILTER_CURRENT_CAPABILITIES элемент InformationBuffer структуры NDIS_OID_REQUEST содержит указатель на структуру NDIS_RECEIVE_FILTER_CAPABILITIES . К этим возможностям относятся включенные в настоящее время возможности VMQ.
Драйверы минипорта NDIS предоставляют включенные в данный момент возможности фильтрации получения во время инициализации в элементе CurrentReceiveFilterCapabilities структуры NDIS_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTES .
NDIS сообщает о включенных в данный момент возможностях фильтрации получения базового сетевого адаптера в драйверах протоколов в элементе ReceiveFilterCapabilitiesструктуры NDIS_BIND_PARAMETERS во время операции привязки.
Структура NDIS_RECEIVE_FILTER_GLOBAL_PARAMETERS используется в OID запроса OID_RECEIVE_FILTER_GLOBAL_PARAMETERS для получения текущих параметров глобального фильтра получения.
NDIS_RECEIVE_FILTER_GLOBAL_PARAMETERS содержит следующие сведения:
EnabledFilterTypes
Типы включенных фильтров получения. Флаг NDIS_RECEIVE_FILTER_VMQ_FILTERS_ENABLED указывает, что фильтры очереди виртуальных машин (VMQ) включены.
EnabledQueueTypes
Типы включенных очередей получения. Флаг NDIS_RECEIVE_FILTER_VM_QUEUES_ENABLED указывает, что очереди виртуальных машин включены.
После успешного возврата из запроса OID OID_RECEIVE_FILTER_GLOBAL_PARAMETERS элемент InformationBuffer структуры NDIS_OID_REQUEST содержит указатель на структуру NDIS_RECEIVE_FILTER_GLOBAL_PARAMETERS . Структура NDIS_RECEIVE_FILTER_GLOBAL_PARAMETERS определяет функции фильтрации приема, которые включены или отключены в сетевом адаптере.
Драйверы протокола NDIS используют OID_RECEIVE_FILTER_GLOBAL_PARAMETERS для запроса текущих глобальных параметров конфигурации для фильтрации приема в сетевом адаптере. Например, драйверы протокола могут использовать этот OID для определения того, включены или отключены типы фильтров или очередей получения.