NdisMQueryProbedBars 関数 (ndis.h)

ミニポート ドライバーは、ネットワーク アダプターの PCI Express (PCIe) ベース アドレス レジスタ (BAR) の値を取得する NdisMQueryProbedBars 関数を呼び出します。 この関数は、PCI バス ドライバーによって実行されたクエリの後にネットワーク アダプターによって報告された BAR 値を返します。 このクエリは、ネットワーク アダプターに必要なメモリまたは I/O アドレス空間を決定します。

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

構文

NDIS_STATUS NdisMQueryProbedBars(
  [in]  NDIS_HANDLE NdisMiniportHandle,
  [out] PULONG      BaseRegisterValues
);

パラメーター

[in] NdisMiniportHandle

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

[out] BaseRegisterValues

ULONG 値の配列へのポインター。 配列には、PCIe ネットワーク アダプターの各 BAR の ULONG 値が含まれています。

NdisMQueryProbedBars は、 この配列内の最大PCI_TYPE0_ADDRESSES値を返します。
 

戻り値

NdisMQueryProbedBars は、次のいずれかの状態値を返すことができます。

リターン コード 説明
NDIS_STATUS_SUCCESS
クエリ操作が正常に完了しました。
NDIS_STATUS_FAILURE
クエリ操作に失敗しました。

注釈

HYPER-V 親パーティションの管理オペレーティング システムで実行される PCI バス ドライバーは、ネットワーク アダプターの各 PCI ベース アドレス レジスタ (BAR) のメモリまたは I/O アドレス空間の要件を照会します。 PCI バス ドライバーは、バス上のアダプターを最初に検出するときに、このクエリを実行します。

この PCI BAR クエリを使用して、PCI バス ドライバーは次のことを決定します。

  • PCI BAR がネットワーク アダプターでサポートされているかどうか。
  • BAR がサポートされている場合、BAR に必要なメモリまたは I/O アドレス空間の量。
仮想 PCI (VPCI) バス ドライバーは、Hyper-V 子パーティションのゲスト オペレーティング システムで実行されます。 PCI Express (PCIe) 仮想関数 (VF) が子パーティションに接続されている場合、VPCI バス ドライバーは VF (VF ネットワーク アダプター) の仮想ネットワーク アダプターを公開します。 これを行う前に、VPCI バス ドライバーは PCI BAR クエリを実行して、VF ネットワーク アダプターに必要なメモリまたはアドレス空間を決定する必要があります。

PCI 構成領域へのアクセスは特権操作であるため、Hyper-V 親パーティションの管理オペレーティング システムで実行されるコンポーネントによってのみ実行できます。 VPCI バス ドライバーが PCI BAR に対してクエリを実行すると、NDIS は PF ミニポート ドライバーに OID_SRIOV_PROBED_BARS のオブジェクト識別子 (OID) クエリ要求を発行します。 この OID クエリ要求によって返された結果は VPCI バス ドライバーに転送されるため、VF ネットワーク アダプターで必要なメモリ アドレス空間の量を決定できます。

この OID 要求の処理中に、ドライバーは NdisMQueryProbedBars を呼び出して、PCI ドライバーによって実行される BAR クエリから返される値を取得できます。

VF の PCI BAR レジスタに対してクエリを実行する方法の詳細については、「 仮想関数の PCI ベース アドレス レジスタのクエリ」を参照してください。

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

仮想バス ドライバーへのインターフェイス

独立系ハードウェア ベンダー (IHV) が SR-IOV ドライバー パッケージの一部として仮想バス ドライバー (VBD) を提供する場合、ミニポート ドライバーは NdisMQueryProbedBars を呼び出してはなりません。 代わりに、ドライバーはプライベート通信チャネルを介して VBD とインターフェイスし、VBD が GetVirtualFunctionProbedBars を呼び出すように要求する必要があります。 この関数は、基になる 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 以降でサポートされています。
対象プラットフォーム ユニバーサル
Header ndis.h (Ndis.h を含む)
Library Ndis.lib
IRQL PASSIVE_LEVEL

こちらもご覧ください

GUID_PCI_VIRTUALIZATION_INTERFACE

GetVirtualFunctionProbedBars

OID_SRIOV_PROBED_BARS