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 |