次の方法で共有


KeQueryActiveProcessors 関数 (ntddk.h)

KeQueryActiveProcessors ルーチンは、現在アクティブなプロセッサのビットマスクを返します。

構文

KAFFINITY KeQueryActiveProcessors();

戻り値

KeQueryActiveProcessors は、現在アクティブなプロセッサのセットを表す KAFFINITY 値を返します。

備考

呼び出し元は、KeQueryActiveProcessors がプロセッサを連続してビットにマップしたり、ルーチンが呼び出されるたびに同じマッピングを一貫して使用したりすることを想定することはできません。 戻り値の唯一の有効な用途は、設定されているビット数をカウントしてアクティブなプロセッサの数を決定することです。

呼び出し元は、KeQueryActiveProcessors によって返される値が、ホット アド CPU 機能をサポートする Windows のバージョンで実行時に変更される可能性があることにも注意する必要があります。

Windows 7 以降のバージョンの Windows では、プロセッサ グループがサポートされています。 プロセッサ グループに関する情報を処理するように設計されたドライバーでは、KeQueryActiveProcessors ではなく、プロセッサ グループを指定する KeQueryGroupAffinity ルーチン使用する必要があります。 ただし、Windows 7 以降のバージョンの Windows KeQueryActiveProcessors の実装では、プロセッサ グループをサポートしていない以前のバージョンの Windows 用に記述されたドライバーの互換性が提供されます。 この実装では、KeQueryActiveProcessors は、グループ 0 のアクティブな論理プロセッサのセットを指定するアフィニティ マスクを返します。

Windows Vista 以降のバージョンの Windows では、このルーチンは任意の IRQL で呼び出すことができます。 ただし、Windows Server 2003 以前のバージョンの Windows では、IRQL <= APC_LEVELでこのルーチンを呼び出す必要があります。

KeNumberProcessors カーネル変数は、Windows Vista Service Pack 1 (SP1)、Windows Server 2008、およびそれ以降のバージョンの Windows では廃止されています。 KeNumberProcessors は、Windows Vista SP1 以降の WDK リリースの WDK ヘッダーには表示されません。ただし、変数はカーネルから引き続きエクスポートされるため、以前のプラットフォーム用にビルドされたドライバーは中断されません

Windows Server 2008 には、Windows Datacenter および Enterprise Edition SKU の動的ハードウェア パーティション分割 (DHP) のサポートが含まれています。 DHP の一部として、Windows Server 2008 では、実行時に CPU のホット追加がサポートされています。 ホット追加 CPU 環境では、プロセッサの数が実行時に一定のままにならない場合があります。

したがって、Windows Server 2008 では、プロセッサの数を決定できるコードでは、カーネル変数への直接参照ではなく、KeQueryActiveProcessors を使用する必要があります。KeNumberProcessors

現在、KeNumberProcessors 参照しているコードを確認して、ホット追加 CPU 環境での CPU 数の変更に対応していることを確認します。

PNPCPU ツールを使用して、テスト目的で CPU のホット 追加をシミュレートできます。

#if (NTDDI_VERSION >= NTDDI_VISTA)
extern NTSYSAPI volatile CCHAR KeNumberProcessors;
#else
#if (NTDDI_VERSION >= NTDDI_WINXP)
extern NTSYSAPI CCHAR KeNumberProcessors;
#else
extern PCCHAR KeNumberProcessors;
#endif
#endif

Windows XP 以降、KeNumberProcessors は、プラットフォーム内のプロセッサの数を示す 8 ビット整数値です。 以前のバージョンの Windows では、KeNumberProcessors は、プラットフォーム内のプロセッサの数を示す 8 ビット整数値へのポインターです。

必要条件

要件 価値
サポートされる最小クライアント Windows 2000 以降で使用できます。
ターゲット プラットフォーム 万国
ヘッダー ntddk.h (Wdm.h、Ntddk.h を含む)
ライブラリ NtosKrnl.lib
DLL NtosKrnl.exe
IRQL 「解説」セクションを参照してください。
DDI コンプライアンス規則 する HwStorPortProhibitedDDIs(storport), IrqlKeApcLte1(wdm)

関連項目

KeQueryActiveProcessorCount

KeQueryGroupAffinity