次の方法で共有


KeQueryActiveProcessors 関数 (ntddk.h)

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

構文

KAFFINITY KeQueryActiveProcessors();

戻り値

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

注釈

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

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

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

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

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

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

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

現在 KeNumberProcessors を 参照しているコードを確認して、ホット add 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 以降で使用できます。
対象プラットフォーム ユニバーサル
Header ntddk.h (Wdm.h、Ntddk.h を含む)
Library NtosKrnl.lib
[DLL] NtosKrnl.exe
IRQL 「解説」を参照してください。
DDI コンプライアンス規則 HwStorPortProhibitedDDIs(storport), IrqlKeApcLte1(wdm)

こちらもご覧ください

KeQueryActiveProcessorCount

KeQueryGroupAffinity