GetProcessAffinityMask 関数 (winbase.h)

指定したプロセスのプロセス アフィニティ マスクとシステムのシステム アフィニティ マスクを取得します。

構文

BOOL GetProcessAffinityMask(
  [in]  HANDLE     hProcess,
  [out] PDWORD_PTR lpProcessAffinityMask,
  [out] PDWORD_PTR lpSystemAffinityMask
);

パラメーター

[in] hProcess

アフィニティ マスクが必要なプロセスへのハンドル。

このハンドルには、 PROCESS_QUERY_INFORMATION または PROCESS_QUERY_LIMITED_INFORMATION アクセス権が必要です。 詳細については、「 プロセス のセキュリティとアクセス権」を参照してください。

Windows Server 2003 および Windows XP: ハンドルには 、PROCESS_QUERY_INFORMATION アクセス権が必要です。

[out] lpProcessAffinityMask

指定したプロセスのアフィニティ マスクを受け取る変数へのポインター。

[out] lpSystemAffinityMask

システムのアフィニティ マスクを受け取る変数へのポインター。

戻り値

関数が成功した場合、戻り値は 0 以外であり、 lpProcessAffinityMask および lpSystemAffinityMask によって指される変数が適切なアフィニティ マスクに設定されます。

64 を超えるプロセッサを持つシステムでは、呼び出し元プロセスのスレッドが 1 つの プロセッサ グループ内にある場合、この関数は lpProcessAffinityMask および lpSystemAffinityMask によって指される変数を、そのグループのアクティブな論理プロセッサのプロセス アフィニティ マスクとプロセッサ マスクに設定します。 呼び出し元のプロセスに複数のグループのスレッドが含まれている場合、関数は両方のアフィニティ マスクに対して 0 を返します。

関数が失敗した場合、戻り値は 0 で、 lpProcessAffinityMask および lpSystemAffinityMask が指す変数の値は未定義です。 詳細なエラー情報を得るには、GetLastError を呼び出します。

解説

プロセス アフィニティ マスクは、各ビットが、プロセスの実行が許可されているプロセッサを表すビット ベクターです。 システム アフィニティ マスクは、各ビットがシステムに構成されているプロセッサを表すビット ベクターです。

プロセス アフィニティ マスクは、システム アフィニティ マスクのサブセットです。 プロセスは、システムに構成されたプロセッサでのみ実行できます。 したがって、システム アフィニティ マスクでプロセッサに 0 ビットが指定されている場合、プロセス アフィニティ マスクではプロセッサに 1 ビットを指定できません。

Windows 11 および Windows Server 2022 以降では、プロセッサ数が 64 を超えるシステムでは、プロセスとスレッドのアフィニティは、既定ですべてのプロセッサ グループにわたって、システム内のすべてのプロセッサにまたがっています。 GetProcessAffinityMask 関数は、lpProcessAffinityMasklpSystemAffinityMask をプロセスに設定し、プロセスのプライマリ グループに対するシステム プロセッサ マスクを設定します。 プロセスがプロセスのプライマリ グループの外部にある 1 つ以上のスレッドのアフィニティを明示的に設定していた場合、関数は両方のアフィニティ マスクに対して 0 を返します。 ただし、 hHandle で現在のプロセスへのハンドルが指定されている場合、この関数は常に呼び出し元スレッドのプライマリ グループ (既定ではプロセスのプライマリ グループと同じ) を使用して lpProcessAffinityMasklpSystemAffinityMask を設定します。

要件

   
サポートされている最小のクライアント Windows XP [デスクトップ アプリ | UWP アプリ]
サポートされている最小のサーバー Windows Server 2003 [デスクトップ アプリのみ | UWP アプリ]
対象プラットフォーム Windows
ヘッダー winbase.h (Windows.h を含む)
Library Kernel32.lib
[DLL] Kernel32.dll

関連項目

複数のプロセッサ

プロセス関数とスレッド関数

処理

プロセッサ グループ

SetProcessAffinityMask

SetThreadAffinityMask