OID_SRIOV_WRITE_VF_CONFIG_SPACE

上位ドライバーは、ネットワーク アダプター上の指定された PCIe 仮想関数 (VF) の PCI Express (PCIe) 構成領域にデータを書き込むためのOID_SRIOV_WRITE_VF_CONFIG_SPACE のオブジェクト識別子 (OID) セット要求を発行します。

上位ドライバーは、ネットワークアダプターの PCIe 物理関数 (PF) 用ミニポートドライバーにこの OID セット要求を発行します。 この OID メソッド要求は、シングルルート I/O 仮想化 (SR-IOV) インターフェイスをサポートする PF ミニポート ドライバーに必要です。

NDIS_OID_REQUEST 構造体の InformationBuffer メンバーには、呼び出し元によって割り当てられたバッファーへのポインターが含まれています。 このバッファーは、次のようにフォーマットされます:

  • VF のPCI 構成領域の書き込み操作のパラメーターを含む NDIS_SRIOV_WRITE_VF_CONFIG_SPACE_PARAMETERS 構造体。

  • PCI 構成スペースに書き込むデータを含む追加のバッファー領域。

解説

VF ミニポート ドライバーは、Hyper-V 子パーティションのゲスト オペレーティング システムで実行されます。 このため、VF ミニポート ドライバーは、VF の PCI 構成領域などのハードウェア リソースに直接アクセスできません。 HYPER-V 親パーティションの管理オペレーティング システムで実行される PF ミニポート ドライバーのみが、VF の PCI 構成領域にアクセスできます。

仮想化スタックなどの上にあるドライバーは、VF ミニポート ドライバーが PCI 構成領域に書き込む NdisMSetBusData を呼び出すときに、OID_SRIOV_WRITE_VF_CONFIG_SPACEの OID セット要求を発行します。

OID_SRIOV_WRITE_VF_CONFIG_SPACE の OID メソッド要求を処理する場合、PF ミニポート ドライバーは、これらのガイドラインに従う必要があります:

  • PF ミニポート ドライバーは、 NDIS_SRIOV_WRITE_VF_CONFIG_SPACE_PARAMETERS 構造体の VFId メンバーによって指定された VF に、以前に割り当てられているリソースがあることを確認する必要があります。 PF ミニポート ドライバーは、 OID_NIC_SWITCH_ALLOCATE_VF の OID メソッド要求を通じて VF のリソースを割り当てます。

    指定した VF のリソースが割り当てられていない場合、ドライバーは OID 要求に失敗する必要があります。

  • PF ミニポート ドライバーは、 NdisMSetVirtualFunctionBusData を呼び出して、要求された PCI 構成領域に書き込みます。 ただし、ミニポート ドライバーは、ドライバーが PCI 構成領域の以前の読み取りまたは書き込み操作からキャッシュされている VF の PCI b 構成領域データを返すこともできます。

    独立系ハードウェア ベンダー (IHV) が SR-IOV ドライバー パッケージ の一部として仮想バス ドライバー (VBD) を提供する場合、そのミニポート ドライバーは NdisMSetVirtualFunctionBusDataを呼び出してはなりません。 代わりに、ドライバーはプライベートコミュニケーションチャネルを介して VBD とインターフェイスし、VBDが SetVirtualFunctionDataを呼び出すように要求する必要があります。 この関数は、下位仮想 PCI (VPCI) バス ドライバーでサポートされている GUID_VPCI_INTERFACE_STANDARD インターフェースから公開されます。

PF ミニポート ドライバーが OID 要求を正常に完了できる場合、ドライバーは、要求された PCI 構成領域データを, NDIS_OID_REQUEST 構造体の InformationBuffer メンバーによって参照されるバッファにコピーする必要があります。 ドライバーは、 NDIS_SRIOV_READ_VF_CONFIG_SPACE_PARAMETERS 構造体の BufferOffset メンバーによって指定されたオフセットでバッファーにデータをコピーします。

詳細については、 仮想関数の PCI 構成データの設定 を参照してください。

状態コードを返します

PF ミニポート ドライバーは、OID_SRIOV_WRITE_VF_CONFIG_SPACE のセット要求の次の状態コードのいずれかを返します:

状態コード 説明

NDIS_STATUS_SUCCESS

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

NDIS_STATUS_NOT_SUPPORTED

ミニポート ドライバーは、シングル ルート I/O 仮想化 (SR-IOV) インターフェイスをサポートしていないか、インターフェイスを使用できません。

NDIS_STATUS_INVALID_PARAMETER

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

NDIS_STATUS_INVALID_LENGTH

情報バッファーが短すぎました。 NDIS は、 NDIS_OID_REQUEST 構造体の DATA.SET_INFORMATION.BytesNeeded メンバーに必要最小限のバッファサイズを設定します。

NDIS_STATUS_FAILURE

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

要件

バージョン

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

ヘッダー

Ntddndis.h (Ndis.h を含む)

関連項目


GUID_VPCI_INTERFACE_STANDARD

NDIS_OID_REQUEST

NDIS_SRIOV_WRITE_VF_CONFIG_SPACE_PARAMETERS

NdisMSetBusData

NdisMSetVirtualFunctionBusData

OID_NIC_SWITCH_ALLOCATE_VF

OID_SRIOV_READ_VF_CONFIG_SPACE

SetVirtualFunctionData