Управление политиками переключения
Расширения расширенной фильтрации и пересылки коммутаторов Hyper-V можно подготовить с помощью свойств настраиваемых свойств коммутатора. После подготовки эти расширения применяют политики при фильтрации пакетов, полученных по пути входящего трафика расширяемого коммутатора. Дополнительные сведения об этих политиках см. в разделе Переключение политик.
Интерфейс расширяемого коммутатора Hyper-V использует следующие идентификаторы объектов (OID) для подготовки расширений фильтрации и пересылки с помощью свойств настраиваемых политик коммутатора:
OID_SWITCH_PROPERTY_ADD
Этот запрос на набор OID отправляется краем протокола расширяемого коммутатора для уведомления базовых расширений о добавлении свойства на уровне управления WMI. InformationBuffer структуры NDIS_OID_REQUEST содержит указатель на структуру NDIS_SWITCH_PROPERTY_PARAMETERS.
Примечание Настраиваемые свойства переключателя задаются значением перечисления NDIS_SWITCH_PROPERTY_TYPENdisSwitchPropertyTypeCustom.
OID_SWITCH_PROPERTY_UPDATE
Этот запрос на набор OID отправляется краем протокола расширяемого коммутатора для уведомления базовых расширений об обновлении свойства на уровне управления WMI. InformationBuffer структуры NDIS_OID_REQUEST содержит указатель на структуру NDIS_SWITCH_PROPERTY_PARAMETERS.
OID_SWITCH_PROPERTY_DELETE
Этот запрос на набор OID отправляется краем протокола расширяемого коммутатора для уведомления базовых расширений об удалении свойства на уровне управления WMI. InformationBuffer структуры NDIS_OID_REQUEST содержит указатель на структуру NDIS_SWITCH_PROPERTY_DELETE_PARAMETERS.
OID_SWITCH_PROPERTY_ENUM
Этот запрос метода OID отправляется расширением для запроса базового края минипорта расширяемого коммутатора о текущих свойствах переключателя, настроенных в расширяемом коммутаторе. InformationBuffer структуры NDIS_OID_REQUEST содержит указатель на буфер. Этот буфер содержит следующие данные:
Структура NDIS_SWITCH_PROPERTY_ENUM_PARAMETERS , указывающая параметры для перечисления свойств политики переключения.
Массив структур NDIS_SWITCH_PROPERTY_ENUM_INFO . Каждая из этих структур содержит сведения о свойствах политики переключения.
Примечание Если элемент NumProperties структуры NDIS_SWITCH_PROPERTY_ENUM_PARAMETERS имеет нулевое значение, NDIS_SWITCH_PROPERTY_ENUM_INFO структуры не возвращаются.
Примечание Расширение не должно отправлять запросы на набор OID OID_SWITCH_PROPERTY_ADD. OID_SWITCH_PROPERTY_UPDATE или OID_SWITCH_PROPERTY_DELETE.
Расширение расширяемого коммутатора должно соответствовать этим рекомендациям при обработке запроса набора OID OID_SWITCH_PROPERTY_ADD, OID_SWITCH_PROPERTY_UPDATE или OID_SWITCH_PROPERTY_DELETE:
Расширение не должно изменять NDIS_SWITCH_PROPERTY_PARAMETERS или NDIS_SWITCH_PROPERTY_DELETE_PARAMETERS структуру, связанную с запросом OID.
Расширение должно обрабатывать запрос OID_SWITCH_PROPERTY_UPDATE или OID_SWITCH_PROPERTY_DELETE задания, если расширение ранее было подготовлено со свойством switch, которое соответствует следующим элементам структуры NDIS_SWITCH_PROPERTY_PARAMETERS или NDIS_SWITCH_PROPERTY_DELETE_PARAMETERS :
Элемент PropertyType , указывающий тип свойства switch.
Примечание Начиная с версии NDIS 6.30, только свойства переключателя NdisSwitchPropertyTypeCustom задаются структурами NDIS_SWITCH_PROPERTY_PARAMETERS или NDIS_SWITCH_PROPERTY_DELETE_PARAMETERS .
Элемент PropertyId , указывающий защищаемое значение GUID, распознаваемое расширением. Это значение GUID создается независимым поставщиком программного обеспечения (ISV), который также определяет формат настраиваемого свойства политики расширяемого коммутатора.
Примечание Настраиваемое свойство политики расширяемого коммутатора содержится в структуре NDIS_SWITCH_PROPERTY_CUSTOM .
Если расширение обрабатывает эти запросы на набор OID, расширение должно обновить или удалить политику переключения, соответствующую следующим членам структуры NDIS_SWITCH_PROPERTY_PARAMETERS :
Элемент PropertyVersion , указывающий версию расширяемой политики переключения.
Элемент PropertyInstanceId , указывающий экземпляр политики расширяемого коммутатора.
Если значения этих элементов не соответствуют свойству политики переключения, для которого расширение было ранее подготовлено, расширение должно завершить запрос на набор OID с NDIS_STATUS_INVALID_PARAMETER. В противном случае расширение должно завершить запрос на набор OID и вернуть NDIS_STATUS_SUCCESS.
Расширение фильтрации или пересылки может наказать вето на добавление, удаление или обновление политики переключения. Расширение делает это путем выполнения запроса OID с STATUS_DATA_NOT_ACCEPTED.
Примечание Захватываемые расширения не должны наложение вето на добавление или обновление политики переключения. Вместо этого он должен перенаправить запрос OID по пути управления расширяемым переключателем.
Если расширение записи или фильтрации успешно обрабатывает запрос на набор OID для настраиваемой политики переключения, оно не должно выполнять запрос OID и должно пересылать его по пути управления расширяемым коммутатором.
Если расширение переадресации успешно обрабатывает запрос на набор OID для настраиваемой политики переключения, оно должно завершить запрос OID и вернуть соответствующее значение NDIS_STATUS_Xxx .
Если расширение не завершает запрос на набор OID, оно должно вызвать NdisFOidRequest , чтобы перенаправить запрос OID в стек драйвера расширяемого коммутатора. В этом случае расширения должны отслеживать состояние завершения OID, чтобы определить, не удалось ли базовому расширению выполнить запрос OID.