NdisMGetVirtualFunctionLocation 関数 (ndis.h)
ミニポート ドライバーは 、NDISMGetVirtualFunctionLocation 関数を呼び出して、PCI バス上の PCI Express (PCIe) 仮想関数 (VF) のデバイスの場所を照会します。 ドライバーは、デバイスの場所を使用して、VF の PCIe Requestor ID (RID) を構築します。
構文
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 を生成します。
- ドライバーはまず NdisMGetVirtualFunctionLocation 関数を呼び出して、VF のバス関連の位置情報を取得します。
- その後、ドライバーは バス 関連の位置情報を使用して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 |
こちらもご覧ください