管理交换机策略
Hyper-V 可扩展交换机筛选和转发扩展可以使用自定义交换机属性的属性进行预配。 预配后,这些扩展在筛选在可扩展交换机入口数据路径上获取的数据包时,会强制实施策略。 有关这些策略的详细信息,请参阅 切换策略。
Hyper-V 可扩展交换机接口使用以下对象标识符 (OID) 来预配筛选和转发扩展以及自定义交换机策略的属性:
OID_SWITCH_PROPERTY_ADD
此 OID 集请求由可扩展交换机的协议边缘发出,以通知基础扩展在 WMI 管理层添加属性。 NDIS_OID_REQUEST 结构的 InformationBuffer 包含指向NDIS_SWITCH_PROPERTY_PARAMETERS结构的指针。
注意自定义开关属性由 NdisSwitchPropertyTypeCustom的NDIS_SWITCH_PROPERTY_TYPE枚举值指定。
OID_SWITCH_PROPERTY_UPDATE
此 OID 集请求由可扩展交换机的协议边缘发出,以通知底层扩展 WMI 管理层的属性更新。 NDIS_OID_REQUEST 结构的 InformationBuffer 包含指向NDIS_SWITCH_PROPERTY_PARAMETERS结构的指针。
OID_SWITCH_PROPERTY_DELETE
此 OID 集请求由可扩展交换机的协议边缘发出,以通知基础扩展删除 WMI 管理层中的属性。 NDIS_OID_REQUEST 结构的 InformationBuffer 包含指向NDIS_SWITCH_PROPERTY_DELETE_PARAMETERS结构的指针。
OID_SWITCH_PROPERTY_ENUM
此 OID 方法请求由扩展发送,用于查询可扩展交换机的基础微型端口边缘,了解可扩展交换机上当前配置的交换机属性。 NDIS_OID_REQUEST 结构的 InformationBuffer 包含指向缓冲区的指针。 此缓冲区包含以下数据:
一个NDIS_SWITCH_PROPERTY_ENUM_PARAMETERS结构,用于指定开关策略的属性枚举的参数。
NDIS_SWITCH_PROPERTY_ENUM_INFO结构的数组。 其中每个结构都包含有关交换机策略的属性的信息。
注意如果将 NDIS_SWITCH_PROPERTY_ENUM_PARAMETERS 结构的 NumProperties 成员设置为零,则不返回任何NDIS_SWITCH_PROPERTY_ENUM_INFO结构。
注意 扩展不得源自 OID_SWITCH_PROPERTY_ADD的 OID 集请求。 OID_SWITCH_PROPERTY_UPDATE或 OID_SWITCH_PROPERTY_DELETE。
可扩展交换机扩展在处理OID_SWITCH_PROPERTY_ADD、OID_SWITCH_PROPERTY_UPDATE或OID_SWITCH_PROPERTY_DELETE的 OID 集请求时,必须遵循以下准则:
扩展不得修改与 OID 请求关联的 NDIS_SWITCH_PROPERTY_PARAMETERS 或 NDIS_SWITCH_PROPERTY_DELETE_PARAMETERS 结构。
如果扩展以前已使用 与 NDIS_SWITCH_PROPERTY_PARAMETERS 或 NDIS_SWITCH_PROPERTY_DELETE_PARAMETERS 结构的以下成员匹配的 switch 属性预配,则扩展必须处理 OID_SWITCH_PROPERTY_UPDATE 或 OID_SWITCH_PROPERTY_DELETE集 请求:
指定开关属性类型的 PropertyType 成员。
注意从 NDIS 6.30 开始,NDIS_SWITCH_PROPERTY_PARAMETERS或NDIS_SWITCH_PROPERTY_DELETE_PARAMETERS结构仅指定 NdisSwitchPropertyTypeCustom 的开关属性。
PropertyId 成员,指定扩展可识别的专有 GUID 值。 此 GUID 值由独立软件供应商 (ISV) 创建,后者还定义自定义可扩展交换机策略属性的格式。
注意 自定义可扩展交换机策略属性包含在 NDIS_SWITCH_PROPERTY_CUSTOM 结构中。
如果扩展处理这些 OID 集请求,则扩展必须更新或删除与 NDIS_SWITCH_PROPERTY_PARAMETERS 结构的以下成员匹配的 switch 策略:
指定可扩展交换机策略版本的 PropertyVersion 成员。
指定可扩展交换机策略实例的 PropertyInstanceId 成员。
如果这些成员的值与之前已为其预配扩展的开关策略属性不匹配,则扩展必须使 OID 设置请求失败,NDIS_STATUS_INVALID_PARAMETER。 否则,扩展必须完成 OID 集请求并返回NDIS_STATUS_SUCCESS。
筛选或转发扩展可以否决交换机策略的添加、删除或更新。 扩展通过STATUS_DATA_NOT_ACCEPTED完成 OID 请求来执行此操作。
注意 捕获扩展不得否决添加或更新交换机策略。 相反,它必须将 OID 请求转发到可扩展交换机控制路径。
如果捕获或筛选扩展成功处理自定义交换机策略的 OID 设置请求,则它不能完成 OID 请求,并且必须将其转发到可扩展交换机控制路径。
如果转发扩展成功处理自定义交换机策略的 OID 设置请求,则必须完成 OID 请求并返回相应的 NDIS_STATUS_Xxx 值。
如果扩展未完成 OID 集请求,则必须调用 NdisFOidRequest 以将 OID 请求向下转发到可扩展交换机驱动程序堆栈。 在这种情况下,扩展应监视 OID 的完成状态,以检测基础扩展是否失败了 OID 请求。