次の方法で共有


OID_SRIOV_VF_INVALIDATE_CONFIG_BLOCK

NDIS は、1 つ以上の構成ブロック内のデータが変更されたことを PCI Express (PCIe) 仮想関数 (VF) のミニポート ドライバーに通知するOID_SRIOV_VF_INVALIDATE_CONFIG_BLOCKのオブジェクト識別子 (OID) メソッド要求を発行します。 NDIS は、PCIe 物理関数 (PF) のミニポート ドライバーが NdisMInvalidateConfigBlock呼び出すときに、この OID を発行します。

NDIS_OID_REQUEST 構造体の InformationBuffer メンバーには、NDIS_SRIOV_VF_INVALIDATE_CONFIG_BLOCK_INFO 構造体へのポインターが含まれています。 この構造体は、PF ミニポート ドライバーによってデータが変更された (無効な) 1 つ以上の仮想関数 (VF) 構成ブロックを指定します。

備考

VF 構成ブロックは、PF ミニポート ドライバーと VF ミニポート ドライバー間のバックチャネル通信に使用されます。 IHV は、デバイスの 1 つ以上の VF 構成ブロックを定義できます。 各 VF 構成ブロックには、IHV で定義された形式、長さ、およびブロック ID があります。

各 VF 構成ブロックからのデータは、PF ミニポート ドライバーと VF ミニポート ドライバーでのみ使用されます。

VF 構成データは、次のドライバー間で交換されます。

  • VF ドライバー。ゲスト オペレーティング システムで実行されます。 このオペレーティング システムは、Hyper-V 子パーティション内で実行されます。

  • 管理オペレーティング システムで実行される PF ドライバー。 このオペレーティング システムは、Hyper-V 親パーティション内で実行されます。

無効な VF 構成データの通知を処理するために、NDIS およびミニポート ドライバーは、次の手順を実行します。

  1. ゲスト オペレーティング システムでは、NDIS は、IOCTL_VPCI_INVALIDATE_BLOCK 要求の I/O 制御要求を発行します。 この IOCTL が完了すると、VF 構成データが変更されたことが NDIS に通知されます。

  2. 管理オペレーティング システムでは、次の手順が実行されます。

    1. PF ミニポート ドライバーは、ndisMInvalidateConfigBlock関数を呼び出して、VF 構成データが変更され、有効ではなくなったことを NDIS に通知します。 ドライバーは、BlockMask パラメーターを、どの VF 構成ブロックが変更されたかを指定する ULONGLONG ビットマスクに設定します。 ビットマスク内の各ビットは、VF 構成ブロックに対応します。 ビットが 1 に設定されている場合、対応する VF 構成ブロック内のデータが変更されました。

    2. NDIS は、VF 構成ブロック データへの変更について、管理オペレーティング システムで実行される仮想化スタックを通知します。 仮想化スタックは、BlockMask パラメーター データをキャッシュします。

      PF ミニポート ドライバーが ndisMInvalidateConfigBlock呼び出すたびに、仮想化スタックの ORs BlockMask パラメーター データとそのキャッシュ内の現在の値です。

    3. 仮想化スタックは、VF 構成データの無効化について、ゲスト オペレーティング システムで実行される仮想 PCI (VPCI) ドライバーに通知します。 仮想化スタックは、キャッシュされた BlockMask パラメーター データを VPCI ドライバーに送信します。

  3. ゲスト オペレーティング システムでは、次の手順が実行されます。

    1. VPCI ドライバーは、キャッシュされた BlockMask パラメーター データを、IOCTL_VPCI_INVALIDATE_BLOCK 要求に関連付けられている VPCI_INVALIDATE_BLOCK_OUTPUT 構造体の BlockMask メンバーに保存します。

    2. VPCI ドライバーは、IOCTL_VPCI_INVALIDATE_BLOCK 要求を正常に完了します。 この場合、NDIS は、VF ミニポート ドライバーにOID_SRIOV_VF_INVALIDATE_CONFIG_BLOCKの OID メソッド要求を発行します。 NDIS_SRIOV_VF_INVALIDATE_CONFIG_BLOCK_INFO は OID 要求で渡されます。 この構造体には、BlockMask パラメーター データ キャッシュされます。

      NDIS は、VF 構成データへの変更の連続する通知を処理する別の IOCTL_VPCI_INVALIDATE_BLOCK 要求も発行します。

    3. VF ドライバーは、OID_SRIOV_VF_INVALIDATE_CONFIG_BLOCK要求を処理するときに、指定された VF 構成ブロックからデータを読み取ります。

単一ルート I/O 仮想化 (SR-IOV) インターフェイス内のバックチャネル通信の詳細については、PF/VF バックチャネル通信 SR-IOV を参照してください。

戻り値の状態コード

ミニポート ドライバーは、OID_SRIOV_VF_INVALIDATE_CONFIG_BLOCKの OID メソッド要求の次の状態コードのいずれかを返します。

状態コード 形容

NDIS_STATUS_SUCCESS

OID 要求が正常に完了しました。

NDIS_STATUS_NOT_SUPPORTED

ミニポート ドライバーは、単一ルート I/O 仮想化 (SR-IOV) インターフェイスをサポートしていないか、インターフェイスの使用が有効になっていません。

NDIS_STATUS_INVALID_PARAMETER

NDIS_SRIOV_VF_INVALIDATE_CONFIG_BLOCK_INFO 構造体の 1 つ以上のメンバーに無効な値があります。

NDIS_STATUS_INVALID_LENGTH

情報バッファーが短すぎます。 NDIS は、データを設定します。SET_INFORMATION。BytesNeededNDIS_SRIOV_VF_INVALIDATE_CONFIG_BLOCK_INFO 構造体のサイズに NDIS_OID_REQUEST 構造体のメンバーです。

NDIS_STATUS_FAILURE

その他の理由で要求が失敗しました。

必要条件

バージョン

NDIS 6.30 以降でサポートされています。

ヘッダ

Ntddndis.h (Ndis.h を含む)

関連項目


IOCTL_VPCI_INVALIDATE_BLOCK

NDIS_OID_REQUEST

NDIS_SRIOV_VF_INVALIDATE_CONFIG_BLOCK_INFO

NdisMInvalidateConfigBlock

OID_SRIOV_READ_VF_CONFIG_SPACE

VPCI_INVALIDATE_BLOCK_OUTPUT