NdisMGetVirtualFunctionLocation 関数 (ndis.h)

ミニポート ドライバーは 、NDISMGetVirtualFunctionLocation 関数を呼び出して、PCI バス上の PCI Express (PCIe) 仮想関数 (VF) のデバイスの場所を照会します。 ドライバーは、デバイスの場所を使用して、VF の PCIe Requestor ID (RID) を構築します。

NdisMGetVirtualFunctionLocation は、ネットワーク アダプターの PCIe 物理機能 (PF) のミニポート ドライバーによってのみ呼び出す必要があります。
 

構文

void NdisMGetVirtualFunctionLocation(
  [in]  NDIS_HANDLE            NdisMiniportHandle,
  [in]  NDIS_SRIOV_FUNCTION_ID VFId,
  [out] PUSHORT                SegmentNumber,
  [out] PUCHAR                 BusNumber,
  [out] PUCHAR                 FunctionNumber
);

パラメーター

[in] NdisMiniportHandle

NDIS が MiniportInitializeExの MiniportAdapterHandle パラメーターに渡したネットワーク アダプター ハンドル。

[in] VFId

デバイスの場所が返される VF の識別子。

[out] SegmentNumber

呼び出し元が指定した変数へのポインター。この関数は、現在の PCI セグメント番号の USHORT 値を返します。 この値は、デバイスが接続されている PCI バスのグループを指定します。

[out] BusNumber

この関数が UCHAR 値を返す呼び出し元が指定した変数へのポインター。 この値は、デバイスが接続されている現在の PCI バス番号を指定します。

[out] FunctionNumber

この関数が UCHAR 値を返す呼び出し元が指定した変数へのポインター。 この値は、デバイス上の論理デバイスの関数番号を指定します。

戻り値

なし

解説

OID_NIC_SWITCH_ALLOCATE_VFのメソッド要求を処理する場合、PF ミニポート ドライバーは、ドライバーがネットワーク アダプターに正常に割り当てた VF の RID を返す必要があります。 ドライバーは、次の方法で RID を生成します。

  1. ドライバーはまず NdisMGetVirtualFunctionLocation 関数を呼び出して、VF のバス関連の位置情報を取得します。
  2. その後、ドライバーは バス 関連の位置情報を使用してNDIS_MAKE_RID マクロを呼び出して RID を生成します。

VF リソースを割り当てる方法の詳細については、「 仮想関数初期化シーケンス」を参照してください。

SR-IOV インターフェイスの詳細については、「 単一ルート I/O 仮想化の概要 (SR-IOV)」を参照してください。

Virtual Bus ドライバーへのインターフェイス

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

Hyper-V 親パーティションの管理オペレーティング システムで実行される VBD は、PCI バス上の物理デバイス オブジェクト (PDO) にIRP_MN_QUERY_INTERFACE要求を発行することで、GUID_PCI_VIRTUALIZATION_INTERFACEインターフェイスに対してクエリを実行できます。 この要求は、IRQL = PASSIVE_LEVELから行う必要があります。 この要求では、ドライバーは InterfaceType パラメーターを GUID_PCI_VIRTUALIZATION_INTERFACE に設定する必要があります。

要件

要件
サポートされている最小のクライアント サポートされていません。NDIS 6.30 以降でサポートされています。
サポートされている最小のサーバー Windows Server 2012
対象プラットフォーム ユニバーサル
Header ndis.h (Ndis.h を含む)
Library Ndis.lib
IRQL PASSIVE_LEVEL

こちらもご覧ください

GUID_PCI_VIRTUALIZATION_INTERFACE

GetLocation

NDIS_MAKE_RID

OID_NIC_SWITCH_ALLOCATE_VF