次の方法で共有


OID_SRIOV_READ_VF_CONFIG_SPACE

基になるドライバーは、ネットワーク アダプター上の指定された PCIe 仮想関数 (VF) の PCI Express (PCIe) 構成領域からデータを読み取るOID_SRIOV_READ_VF_CONFIG_SPACEのオブジェクト識別子 (OID) メソッド要求を発行します。

この OID メソッド要求から正常に戻った後、NDIS_OID_REQUEST 構造体の InformationBuffer メンバーには、呼び出し元によって割り当てられたバッファーへのポインターが含まれます。 このバッファーは、次のように書式設定されます。

  • VF の PCI 構成領域の読み取り操作のパラメーターを含む NDIS_SRIOV_READ_VF_CONFIG_SPACE_PARAMETERS 構造体。

  • PCI 構成スペースからデータを読み取るための追加のバッファー領域。

備考

VF ミニポート ドライバーは、Hyper-V 子パーティションのゲスト オペレーティング システムで実行されます。 このため、VF ミニポート ドライバーは、VF の PCI 構成領域などのハードウェア リソースに直接アクセスできません。 VF の PCI 構成空間にアクセスできるのは、PCIe 物理関数 (PF) のミニポート ドライバーだけです。 PF ミニポート ドライバーは、Hyper-V 親パーティションの管理オペレーティング システムで実行され、VF リソースへの特権アクセス権を持ちます。

VF PCI 構成領域を読み取るために、管理オペレーティング システムで実行される上にあるドライバーは、PF ミニポート ドライバーにOID_SRIOV_READ_VF_CONFIG_SPACEの OID メソッド要求を発行します。 この OID メソッド要求は、単一ルート I/O 仮想化 (SR-IOV) インターフェイスをサポートする PF ミニポート ドライバーに必要です。

たとえば、管理オペレーティング システムで実行される仮想化スタックは、VF ミニポート ドライバーが VF PCI 構成空間から読み取るために NdisMGetBusData呼び出すときに、OID_SRIOV_READ_VF_CONFIG_SPACEの OID メソッド要求を発行します。

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

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

  • ミニポート ドライバーは、(NDIS_OID_REQUEST 構造体の InformationBuffer メンバーによって参照される) バッファーが、要求された PCIe 構成空間データを返すのに十分な大きさであることを確認する必要があります。 これが true でない場合、ドライバーは OID 要求を失敗する必要があります。

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

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

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

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

戻り値の状態コード

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

状態コード 形容

NDIS_STATUS_SUCCESS

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

NDIS_STATUS_NOT_SUPPORTED

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

NDIS_STATUS_INVALID_PARAMETER

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

NDIS_STATUS_INVALID_LENGTH

情報バッファーが短すぎます。 ミニポート ドライバーは、DATA を設定する必要があります。METHOD_INFORMATION。BytesNeededNDIS_OID_REQUEST 構造体のメンバーを、必要な最小バッファー サイズに設定します。

NDIS_STATUS_FAILURE

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

必要条件

バージョン

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

ヘッダ

Ntddndis.h (Ndis.h を含む)

関連項目


GUID_VPCI_INTERFACE_STANDARD

NDIS_OID_REQUEST

NDIS_SRIOV_READ_VF_CONFIG_SPACE_PARAMETERS

NdisMGetBusData

NdisMGetVirtualFunctionBusData

OID_NIC_SWITCH_ALLOCATE_VF

ReadVfConfigBlock