Управление политиками коммутаторов
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.