IoGetDeviceNumaNode 関数 (wdm.h)
IoGetDeviceNumaNode ルーチンは、デバイスのノード番号を取得します。
NTSTATUS IoGetDeviceNumaNode(
[in] PDEVICE_OBJECT Pdo,
[out] PUSHORT NodeNumber
);
[in] Pdo
物理デバイス オブジェクト (PDO) へのポインター。 このパラメーターは、物理デバイスを表す DEVICE_OBJECT 構造体を指します。
[out] NodeNumber
ノード番号がわかっている場合、ルーチンがノード番号を書き込む場所へのポインター。
IoGetDeviceNumaNode は、呼び出しが成功した場合にSTATUS_SUCCESSを返します。 考えられるエラー戻り値は次のとおりです。
リターン コード | 形容 |
---|---|
|
このデバイスのノード番号は不明です。 |
|
Pdo パラメーターが NULL されているか、有効なデバイス オブジェクトを指していません。 |
非均一メモリ アクセス (NUMA) マルチプロセッサ アーキテクチャでは、ノードはメモリ領域への高速アクセスを共有するプロセッサのコレクションです。 プロセッサは他のノードのメモリにアクセスするよりも高速にノード内のメモリにアクセスできるため、メモリ アクセスは一様ではない。
特定のノードに接続されているデバイス (ネットワーク コントローラーやストレージ コントローラーなど) は、他のノードのメモリにアクセスするよりも高速にこのノード内のメモリにアクセスできます。 Pdo パラメーターは、デバイスとノード間のバス接続を表す PDO を指します。
NUMA マルチプロセッサ システムに n ノード 含まれている場合、ノードには 0 から n-1 までの番号が付けられます。 最上位のノード番号を取得するには、KeQueryHighestNodeNumber ルーチンを呼び出します。
システムが初期化された後も、システムの実行が続いている間、ノード数は固定されたままになります。 この数には、メモリのみのノードが含まれる場合があります。これは、メモリを含むがアクティブな論理プロセッサを含まないノードです。 すべての論理プロセッサが非アクティブなノードは、ノード内の最初のプロセッサの実行が開始されるまで、実質的にメモリのみのノードです。 デバイスが接続されているノードにアクティブなプロセッサが含まれているとは想定しないでください。
システムに NUMA アーキテクチャがない場合、ルーチンは、NodeNumber パラメーターが指す場所に 0 を書き込みます。 非 NUMA アーキテクチャの例として、対称マルチプロセッサ システム (SMP) があります。
要件 | 価値 |
---|---|
サポートされる最小クライアント | Windows 7 以降のバージョンの Windows オペレーティング システムで使用できます。 |
ターゲット プラットフォーム の | 万国 |
ヘッダー | wdm.h (Wdm.h、Ntddk.h、Ntifs.h を含む) |
ライブラリ | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
DDI コンプライアンス規則 を する | HwStorPortProhibitedDDIs(storport), PowerIrpDDis(wdm) |