IoGetDeviceNumaNode 関数 (wdm.h)

IoGetDeviceNumaNode ルーチンは、デバイスのノード番号を取得します。

構文

NTSTATUS IoGetDeviceNumaNode(
  [in]  PDEVICE_OBJECT Pdo,
  [out] PUSHORT        NodeNumber
);

パラメーター

[in] Pdo

物理デバイス オブジェクト (PDO) へのポインター。 このパラメーターは、物理デバイスを表す DEVICE_OBJECT 構造体を指します。

[out] NodeNumber

ノード番号がわかっている場合、ルーチンがノード番号を書き込む場所へのポインター。

戻り値

IoGetDeviceNumaNode は、呼び出しが成功した場合にSTATUS_SUCCESSを返します。 考えられるエラーの戻り値は次のとおりです。

リターン コード 説明
STATUS_NOT_FOUND
このデバイスのノード番号は不明です。
STATUS_INVALID_PARAMETER
Pdo パラメーターが NULL であるか、有効なデバイス オブジェクトを指していません。

注釈

非一様メモリ アクセス (NUMA) マルチプロセッサ アーキテクチャでは、ノードはメモリの領域への高速アクセスを共有するプロセッサのコレクションです。 プロセッサは他のノードのメモリにアクセスするよりも速くノード内のメモリにアクセスできるため、メモリアクセスは一様ではない。

特定のノードに接続されているデバイス (ネットワーク コントローラーやストレージ コントローラーなど) は、他のノードのメモリにアクセスするよりも速くこのノードのメモリにアクセスできます。 Pdo パラメーターは、デバイスとノード間のバス接続を表す PDO を指します。

NUMA マルチプロセッサ システムに n 個のノードが含まれている場合、ノードの番号は 0 から n-1 になります。 最上位のノード番号を取得するには、 KeQueryHighestNodeNumber ルーチンを呼び出します。

システムが初期化された後も、システムの実行が続行されている間、ノード数は固定されたままになります。 この数には、メモリのみのノードが含まれる場合があります。これは、メモリを含むがアクティブな論理プロセッサを含まないノードです。 すべての論理プロセッサが非アクティブなノードは、ノード内の最初のプロセッサの実行が開始されるまで、実質的にはメモリのみのノードです。 デバイスが接続されているノードにアクティブなプロセッサが含まれているとは想定しないでください。

システムに NUMA アーキテクチャがない場合、 ルーチンは NodeNumber パラメーターが指す場所に 0 を書き込みます。 NUMA 以外のアーキテクチャの例として、対称マルチプロセッサ システム (SMP) があります。

要件

要件
サポートされている最小のクライアント Windows 7 以降のバージョンの Windows オペレーティング システムで使用できます。
対象プラットフォーム ユニバーサル
Header wdm.h (Wdm.h、Ntddk.h、Ntifs.h を含む)
Library NtosKrnl.lib
[DLL] NtosKrnl.exe
IRQL PASSIVE_LEVEL
DDI コンプライアンス規則 HwStorPortProhibitedDDIs(storport), PowerIrpDDis(wdm)

こちらもご覧ください

DEVICE_OBJECT

KeQueryHighestNodeNumber