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 およびミニポート ドライバーは、次の手順を実行します。
ゲスト オペレーティング システムでは、NDIS は、IOCTL_VPCI_INVALIDATE_BLOCK 要求の I/O 制御要求を発行します。 この IOCTL が完了すると、VF 構成データが変更されたことが NDIS に通知されます。
管理オペレーティング システムでは、次の手順が実行されます。
PF ミニポート ドライバーは、ndisMInvalidateConfigBlock関数を呼び出して、VF 構成データが変更され、有効ではなくなったことを NDIS に通知します。 ドライバーは、BlockMask パラメーターを、どの VF 構成ブロックが変更されたかを指定する ULONGLONG ビットマスクに設定します。 ビットマスク内の各ビットは、VF 構成ブロックに対応します。 ビットが 1 に設定されている場合、対応する VF 構成ブロック内のデータが変更されました。
NDIS は、VF 構成ブロック データへの変更について、管理オペレーティング システムで実行される仮想化スタックを通知します。 仮想化スタックは、BlockMask パラメーター データをキャッシュします。
注 PF ミニポート ドライバーが ndisMInvalidateConfigBlock呼び出すたびに、仮想化スタックの ORs BlockMask パラメーター データとそのキャッシュ内の現在の値です。
仮想化スタックは、VF 構成データの無効化について、ゲスト オペレーティング システムで実行される仮想 PCI (VPCI) ドライバーに通知します。 仮想化スタックは、キャッシュされた BlockMask パラメーター データを VPCI ドライバーに送信します。
ゲスト オペレーティング システムでは、次の手順が実行されます。
VPCI ドライバーは、キャッシュされた BlockMask パラメーター データを、IOCTL_VPCI_INVALIDATE_BLOCK 要求に関連付けられている VPCI_INVALIDATE_BLOCK_OUTPUT 構造体の BlockMask メンバーに保存します。
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 要求も発行します。
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 を含む) |
関連項目
NDIS_SRIOV_VF_INVALIDATE_CONFIG_BLOCK_INFO
NdisMInvalidateConfigBlockの