スイッチ ポリシーの管理
Hyper-V 拡張可能スイッチのフィルターリングと転送の拡張機能は、カスタム スイッチ プロパティのプロパティを使用してプロビジョニングできます。 プロビジョニングされると、これらの拡張機能は、拡張可能スイッチのイングレス データ パスで取得されたパケットをフィルターリングするときにポリシーを執行します。 これらのポリシーの詳細については、「スイッチ ポリシー」をご覧ください。
Hyper-V 拡張可能スイッチ インターフェイスでは、次のオブジェクト識別子 (OID) を使用して、カスタム スイッチ ポリシーのプロパティを使用して、フィルターリングと転送の拡張機能をプロビジョニングします。
OID_SWITCH_PROPERTY_ADD
この OID 設定要求は、WMI 管理レイヤーのプロパティの追加を基盤の拡張機能に通知するために、拡張可能スイッチのプロトコル エッジによって発行されます。 InformationBuffer (NDIS_OID_REQUEST 構造体内) には NDIS_SWITCH_PROPERTY_PARAMETERS 構造体へのポインターが含まれています。
注: カスタム スイッチ プロパティは NDIS_SWITCH_PROPERTY_TYPE リスト値 NdisSwitchPropertyTypeCustom によって指定されます。
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 構造体内) が 0 に設定されている場合、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 を処理するとき、次のガイドラインに従う必要があります。
拡張機能は、OID 要求に関連付けられている NDIS_SWITCH_PROPERTY_PARAMETERS 構造体や NDIS_SWITCH_PROPERTY_DELETE_PARAMETERS 構造体を変更できません。
拡張機能は OID_SWITCH_PROPERTY_UPDATE 設定要求や OID_SWITCH_PROPERTY_DELETE 設定要求を、拡張機能が NDIS_SWITCH_PROPERTY_PARAMETERS 構造体や NDIS_SWITCH_PROPERTY_DELETE_PARAMETERS 構造体の次のメンバーと一致するスイッチ プロパティを使用して事前にプロビジョニングされている場合、処理する必要があります。
スイッチ プロパティの型を指定する PropertyType メンバー。
注: NDIS 6.30 以降では、NdisSwitchPropertyTypeCustom が NDIS_SWITCH_PROPERTY_PARAMETERS 構造体や NDIS_SWITCH_PROPERTY_DELETE_PARAMETERS 構造体で指定されます。
拡張機能が認識する独自の GUID 値を指定する PropertyId メンバー。 この GUID 値は、カスタム拡張可能スイッチ ポリシー プロパティの形式を定義もする独立系ソフトウェア ベンダー (ISV) によって作成されます。
注: カスタム拡張可能スイッチ ポリシー プロパティは、NDIS_SWITCH_PROPERTY_CUSTOM 構造体に含まれています。
拡張機能がこれらの OID 設定要求を処理する場合、拡張機能は、NDIS_SWITCH_PROPERTY_PARAMETERS 構造体の次のメンバーに一致するスイッチ ポリシーを更新または削除する必要があります。
拡張可能スイッチ ポリシーのバージョンを指定する PropertyVersion メンバー。
拡張可能スイッチ ポリシーのインスタンスを指定する PropertyInstanceId メンバー。
これらのメンバーの値が、拡張機能が以前にプロビジョニングされたスイッチ ポリシー プロパティと一致しない場合、拡張機能は、NDIS_STATUS_INVALID_PARAMETERで OID 設定要求を失敗させる必要があります。 それ以外の場合、拡張機能は OID 設定要求を完了し、NDIS_STATUS_SUCCESS を返す必要があります。
フィルターリングや転送の拡張機能は、スイッチ ポリシーの追加、削除、または更新を拒否できます。 拡張機能は、STATUS_DATA_NOT_ACCEPTED を使用して OID 要求を完了することによってこれを行います。
注: キャプチャリング拡張機能では、スイッチ ポリシーの追加や更新を拒否することはできません。 代わりに、OID 要求を拡張可能スイッチ制御パスに転送する必要があります。
キャプチャリングやフィルターリングの拡張機能がカスタム スイッチ ポリシーの OID 設定要求を正常に処理する場合は、OID 要求を完了せず、拡張可能スイッチ制御パスに転送する必要があります。
転送拡張機能がカスタム スイッチ ポリシーの OID 設定要求を正常に処理する場合は、OID 要求を完了し、適切な NDIS_STATUS_Xxx 値を返す必要があります。
拡張機能は、OID 設定要求を完了しない場合、NdisFOidRequest を呼び出して、OID 要求を拡張可能スイッチ ドライバー スタックに転送する必要があります。 この場合、拡張機能は OID の完了状態を監視して、基盤の拡張機能が OID 要求に失敗したかどうかを検出します。