OID_SWITCH_NIC_REQUEST
OID_SWITCH_NIC_REQUEST のオブジェクト識別子 (OID) メソッド要求は、HYPER-V 拡張可能スイッチ外部ネットワーク アダプターに OID 要求をカプセル化して転送するために使用されます。 これにより、カプセル化された OID 要求を、外部ネットワーク アダプターにバインドされている下位物理ネットワーク アダプターのドライバーに配信できます。
この OID 要求は、拡張可能スイッチ ポートに接続されている他のネットワーク アダプターに発行された OID 要求をカプセル化するためにも使用されます。 この場合、カプセル化された OID 要求は、拡張機能による検査のために拡張可能スイッチ ドライバー スタックを介して転送されます。
NDIS_OID_REQUEST 構造体の InformationBuffer メンバーには、 NDIS_SWITCH_NIC_OID_REQUEST 構造体へのポインターが含まれています。 この構造体は、OID 要求の転送情報を指定します。 この構造体には、転送される OID 要求の元の NDIS_OID_REQUEST 構造体へのポインターも含まれます。
解説
OID 要求が Hyper-V 拡張可能スイッチ インターフェイスに到着すると、拡張可能なスイッチ制御パスを転送するためにそれらをカプセル化します。 これらの OID 要求には、次のものが含まれます:
インターネットプロトコルセキュリティ (IPsec)、仮想マシンキュー (VMQ) およびシングルルートI/O仮想化 (SR-IOV) の要求を含むハードウェアオフロード OID 要求。 これらの OID 要求は、Hyper-V 親パーティションの管理オペレーティング システムで実行される、上ゥプロトコルまたはフィルター ドライバーによって発行されます。
これらの OID 要求が拡張可能スイッチ インターフェイスに到着すると、拡張可能スイッチのプロトコル エッジは、 NDIS_SWITCH_NIC_OID_REQUEST 構造体内の OID 要求をカプセル化します。 プロトコル エッジは、この構造体のメンバーを次のように設定します:
DestinationPortId メンバーと DestinationNicIndex メンバーは、外部ネットワーク アダプターの対応する値に設定されます。
OID 要求が Hyper-V 子パーティションから発信された場合、 SourcePortId メンバーと SourceNicIndex メンバーは、パーティションで使用されるポートとネットワーク アダプターの対応する値に設定されます。 それ以外の場合、 SourcePortId メンバーと SourceNicIndex メンバーは 0 に設定されます。
注 拡張機能は、OID 要求を転送またはリダイレクトする場合、これらのメンバーの値を保持する必要があります。
OidRequest メンバーは、カプセル化された OID 要求の NDIS_OID_REQUEST 構造体へのポインターに設定されます。
次に、プロトコル エッジは、カプセル化された OID 要求を外部ネットワーク アダプターに拡張可能スイッチ制御パスに転送する OID_SWITCH_NIC_REQUEST 要求を発行します。
下位転送拡張機能は、カプセル化されたハードウェア オフロード OID 要求を、外部ネットワーク アダプターにバインドされている物理ネットワーク アダプターにリダイレクトできます。 例えば、拡張機能が外部ネットワーク アダプターにバインドされている拡張可能スイッチ チームの物理ネットワーク アダプターをサポートしている場合、ハードウェア オフロードをサポートする負荷分散フェールオーバー (LBFO) チームの物理アダプターに OID_SWITCH_NIC_REQUEST 要求を転送できます。 この手順の詳細については、 物理ネットワーク アダプターへのハードウェア オフロード OID 要求の管理 を参照してください。
拡張可能なスイッチ チームの詳細については、 物理ネットワーク アダプター構成の種類 を参照してください。
OID_802_3_ADD_MULTICAST_ADDRESS および OID_802_3_DELETE_MULTICAST_ADDRESS含むマルチキャスト OID 要求。 これらの OID 要求は、Hyper-V 子パーティションの管理オペレーティング システムまたはゲスト オペレーティング システムで実行される、上位プロトコルおよびフィルター ドライバーによって発行されます。
これらの OID 要求が拡張可能スイッチ インターフェイスに到着すると、拡張可能スイッチのプロトコル エッジは、 NDIS_SWITCH_NIC_OID_REQUEST 構造体内の OID 要求をカプセル化します。 プロトコルエッジは、 SourcePortId メンバーおよび SourceNicIndex メンバーを OID 要求の発信元のポートとネットワーク アダプターの対応する値に設定もします。 次に、プロトコル エッジは、下位拡張機能による検査のために、カプセル化された OID 要求を拡張可能スイッチ制御パスに転送するOID_SWITCH_NIC_REQUEST 要求を発行します。
注 この場合、プロトコル エッジは DestinationPortId メンバーと DestinationNicIndex メンバーを 0 に設定します。 これは、カプセル化された OID 要求をコントロール パスの拡張機能に配信することを指定します。
下位転送拡張機能は、これらのカプセル化された OID 要求を検査し、指定したマルチキャスト アドレス情報を保持できます。 例えば、拡張機能が拡張可能スイッチ ポートに転送するマルチキャスト パケットを発信する場合、この情報が必要になる場合があります。
詳細については、 Hyper-V 子パーティションからの OID 要求の転送 を参照してください。
転送拡張機能は、外部ネットワーク アダプターにバインドされている物理ネットワーク アダプターにカプセル化された OID 要求を転送するために、OID_SWITCH_NIC_REQUEST を発行することもできます。 これにより、拡張機能は独自の OID 要求を発信したり、外部ネットワーク アダプターにバインドされている物理ネットワーク アダプターに既存の OID 要求をリダイレクトしたりできるようになります。 これを行うには、拡張機能が次の手順に従う必要があります:
この拡張機能は、 ReferenceSwitchNic を呼び出して、宛先物理ネットワーク アダプターのインデックスの参照カウンターをインクリメントします。 これにより、拡張可能スイッチ インターフェイスは、参照カウンターが 0 以外の物理ネットワーク アダプター接続を削除しないことを保証します。
注 拡張可能スイッチ インターフェイスは、参照カウンターが 0 以外である間、物理ネットワーク アダプターの接続を切断する可能性があります。 詳細については、 Hyper-V拡張可能スイッチのポートとネットワーク アダプターの状態 を参照してください。
拡張機能は、次の方法で NDIS_SWITCH_NIC_OID_REQUEST 構造体を初期化することによって OID 要求をカプセル化します:。
この DestinationPortId メンバーは、外部ネットワーク アダプターが接続されている拡張可能スイッチ ポートの識別子に設定する必要があります。
この DestinationNicIndex メンバーは、下位物理ネットワーク アダプターの 0 以外のインデックス値に設定する必要があります。
拡張機能が Hyper-V 子パーティションの代わりに発生している場合、 SourcePortId メンバーと SourceNicIndex メンバーは、パーティションで使用されるポートとネットワーク アダプターの対応する値に設定されます。 それ以外の場合、 SourcePortId メンバーと SourceNicIndex メンバーは 0 に設定されます。
例えば、拡張機能が子パーティションのハードウェア オフロード リソースを管理している場合、カプセル化されたハードウェア オフロード OID 要求の対象となるパーティションを指定するには、 SourcePortId メンバーと SourceNicIndex メンバーを設定する必要があります。
この OidRequest メンバーは、カプセル化された OID 要求の初期化された NDIS_OID_REQUEST 構造体へのポインターに設定する必要があります。
拡張機能は、 NdisFOidRequest を呼び出して、指定された宛先拡張可能スイッチ ポートとネットワーク アダプターに OID 要求を転送します。
NDIS が FilterOidRequestComplete 関数を呼び出すと、拡張機能は、 DereferenceSwitchNic を呼び出して、宛先の物理ネットワーク アダプターのインデックスの参照カウンターをクリアします。
状態コードを返します
拡張可能スイッチの下位ミニポート エッジは、OID_SWITCH_NIC_REQUEST の OID クエリ要求を完了し、次のいずれかの状態コードを返します。
状態コード | 説明 |
---|---|
NDIS_STATUS_SUCCESS |
OID 要求は正常に完了しました。 |
NDIS_STATUS_Xxx |
その他の理由で要求に失敗しました。 |
要件
バージョン |
NDIS 6.30 以降でサポートされています。 |
ヘッダー |
Ntddndis.h (Ndis.h を含む) |