Freigeben über


GetProcessAffinityMask-Funktion (winbase.h)

Ruft die Prozessaffinitätsmaske für den angegebenen Prozess und die Systemaffinitätsmaske für das System ab.

Syntax

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

Parameter

[in] hProcess

Ein Handle für den Prozess, dessen Affinitätsmaske gewünscht ist.

Dieses Handle muss über das PROCESS_QUERY_INFORMATION - oder PROCESS_QUERY_LIMITED_INFORMATION-Zugriffsrecht verfügen. Weitere Informationen finden Sie unter Prozesssicherheit und Zugriffsrechte.

Windows Server 2003 und Windows XP: Das Handle muss über das Zugriffsrecht PROCESS_QUERY_INFORMATION verfügen.

[out] lpProcessAffinityMask

Ein Zeiger auf eine Variable, die die Affinitätsmaske für den angegebenen Prozess empfängt.

[out] lpSystemAffinityMask

Ein Zeiger auf eine Variable, die die Affinitätsmaske für das System empfängt.

Rückgabewert

Wenn die Funktion erfolgreich ist, ist der Rückgabewert ungleich null, und die Funktion legt die Variablen, auf die von lpProcessAffinityMask und lpSystemAffinityMask verwiesen wird, auf die entsprechenden Affinitätsmasken fest.

Wenn sich die Threads des aufrufenden Prozesses in einem System mit mehr als 64 Prozessoren in einer einzelnen Prozessorgruppe befinden, legt die Funktion die Variablen, auf die von lpProcessAffinityMask und lpSystemAffinityMask verwiesen wird, auf die Prozessaffinitätsmaske und die Prozessormaske der aktiven logischen Prozessoren für diese Gruppe fest. Wenn der aufrufende Prozess Threads in mehreren Gruppen enthält, gibt die Funktion für beide Affinitätsmasken null zurück.

Wenn die Funktion fehlschlägt, ist der Rückgabewert null, und die Werte der Variablen, auf die von lpProcessAffinityMask und lpSystemAffinityMask verwiesen wird, sind nicht definiert. Um erweiterte Fehlerinformationen zu erhalten, rufen Sie GetLastError auf.

Hinweise

Eine Prozessaffinitätsmaske ist ein Bitvektor, in dem jedes Bit die Prozessoren darstellt, auf denen ein Prozess ausgeführt werden darf. Eine Systemaffinitätsmaske ist ein Bitvektor, in dem jedes Bit die Prozessoren darstellt, die in einem System konfiguriert sind.

Eine Prozessaffinitätsmaske ist eine Teilmenge der Systemaffinitätsmaske. Ein Prozess darf nur auf den Prozessoren ausgeführt werden, die in einem System konfiguriert sind. Daher kann die Prozessaffinitätsmaske kein 1 Bit für einen Prozessor angeben, wenn die Systemaffinitätsmaske ein 0 Bit für diesen Prozessor angibt.

Ab Windows 11 und Windows Server 2022 umfassen Prozess- und Threadaffinitäten auf einem System mit mehr als 64 Prozessoren standardmäßig alle Prozessoren im System, und zwar über alle Prozessorgruppen hinweg. Die GetProcessAffinityMask-Funktion legt lpProcessAffinityMask und lpSystemAffinityMask auf die Prozess- und Systemprozessormasken für die primäre Gruppe des Prozesses fest. Wenn der Prozess explizit die Affinität eines oder mehrerer seiner Threads außerhalb der primären Gruppe des Prozesses festgelegt hat, gibt die Funktion für beide Affinitätsmasken null zurück. Wenn hHandle jedoch ein Handle für den aktuellen Prozess angibt, verwendet die Funktion immer die primäre Gruppe des aufrufenden Threads (die standardmäßig mit der primären Gruppe des Prozesses identisch ist), um lpProcessAffinityMask und lpSystemAffinityMask festzulegen.

Anforderungen

   
Unterstützte Mindestversion (Client) Windows XP [Desktop-Apps | UWP-Apps]
Unterstützte Mindestversion (Server) Windows Server 2003 [Desktop-Apps | UWP-Apps]
Zielplattform Windows
Kopfzeile winbase.h (Windows.h einschließen)
Bibliothek Kernel32.lib
DLL Kernel32.dll

Siehe auch

Mehrere Prozessoren

Prozess- und Threadfunktionen

Prozesse

Prozessorgruppen

SetProcessAffinityMask

SetThreadAffinityMask