管理網路交換器策略
Hyper-V 可使用自訂交換器屬性的屬性來配置可擴充的交換器篩選和轉發擴充功能。 在配置完成後,這些延伸模組會在可延伸交換器輸入數據路徑上篩選所得封包時,強制執行政策。 如需這些原則的詳細資訊,請參閱 切換原則。
Hyper-V 可延伸交換器介面會使用下列對象識別碼 (OID) 來布建篩選和轉送延伸模組與自定義交換器原則的屬性:
OID_SWITCH_PROPERTY_ADD
此 OID 集合要求是由可延伸交換器的通訊協定邊緣發出,以通知基礎延伸模組 WMI 管理層新增屬性。
InformationBuffer 的 NDIS_OID_REQUEST 結構中包含一個指向 NDIS_SWITCH_PROPERTY_PARAMETERS 結構的指標。
Note 自定義參數屬性是由 NdisSwitchPropertyTypeCustomNDIS_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 方法要求,以查詢可擴展交換器的基礎迷你端口邊緣有關目前已配置的交換器屬性。
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_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 結構成員,則延伸模組必須處理 OID_SWITCH_PROPERTY_UPDATE 或 OID_SWITCH_PROPERTY_DELETE 的處理要求:
PropertyType 成員,指定 switch 屬性的類型。
注意 從 NDIS 6.30 開始,只有 NdisSwitchPropertyTypeCustom 的 switch 屬性是由 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。
篩選或轉送延伸模組可以否決交換器原則的新增、刪除或更新。 擴充功能會透過 STATUS_DATA_NOT_ACCEPTED 完成 OID 要求來達成此目的。
注意 擷取擴充功能不得否決交換器原則的新增或更新。 相反地,它必須將 OID 要求轉送至可延伸的交換器控制路徑。
如果擷取或篩選延伸模組成功處理自定義交換器政策的 OID 設定要求,則不應完成該 OID 要求,並且必須將其轉送至可擴展交換器控制路徑。
如果轉送延伸模組成功處理自定義交換器原則的 OID 集合要求,它必須完成 OID 要求,並傳回適當的NDIS_STATUS_Xxx 值。
如果擴充功能未完成 OID 集合要求,則必須呼叫 NdisFOidRequest,將 OID 要求轉送至可延伸交換器驅動程式堆疊。 在此情況下,延伸模組應該監視 OID 的完成狀態,以偵測基礎延伸模組是否失敗 OID 要求。