Auf Englisch lesen

Teilen über


KeRevertToUserAffinityThreadEx-Funktion (wdm.h)

Die KeRevertToUserAffinityThreadEx Routine stellt die vorherige Affinität des aktuellen Threads wieder her.

Syntax

C++
void KeRevertToUserAffinityThreadEx(
  [in] KAFFINITY Affinity
);

Parameter

[in] Affinity

Eine KAFFINITY-typd Variable, die die neue Systemaffinität des aktuellen Threads angibt. Legen Sie diesen Parameter auf den Wert fest, der von einem vorherigen Aufruf der KeSetSystemAffinityThreadEx Routine zurückgegeben wurde.

Rückgabewert

Nichts

Bemerkungen

KeRevertToUserAffinityThreadEx ändert die Affinität des aktuellen Threads. Der Affinitätswert ist eine Maske, die eine Reihe von Prozessoren identifiziert, auf denen der Thread ausgeführt werden kann. Bei erfolgreicher Ausführung plant die Routine den Thread für einen Prozessor in diesem Satz.

Wenn der Affinity- Wert ungleich Null ist, legt KeRevertToUserAffinityThreadEx die Affinitätsmaske des Threads auf den wert Affinity fest. Wenn der wert Affinity null ist, stellt KeRevertToUserAffinityThreadEx die ursprüngliche Benutzeraffinitätsmaske des Threads wieder her. Diese ursprüngliche Benutzeraffinitätsmaske wurde im Threadobjekt durch einen vorherigen Aufruf von KeSetSystemAffinityThreadExgespeichert. Ein Aufruf von KeRevertToUserAffinityThreadEx hat keine Auswirkung, es sei denn, dem Aufruf von KeSetSystemAffinityThreadEx.

Wenn der wert Affinity ungleich Null ist, ändert die Routine die Affinitätsmaske des aktuellen Threads in den wert Affinity Wert, wenn beides zutrifft:

  • Der Affinity- Wert ist gültig (d. a. es werden nur Maskenbits festgelegt, die logischen Prozessoren entsprechen).
  • Mindestens einer der Prozessoren, die im Affinity- Wert angegeben ist, ist aktiv.
Wenn eine dieser Bedingungen nicht erfüllt ist, hat der Aufruf von KeRevertToUserAffinityThreadEx- keine Auswirkung.

Windows 7 und höhere Versionen von Windows unterstützen Prozessorgruppen. Treiber, die für die Verarbeitung von Informationen zu Prozessorgruppen konzipiert sind, sollten die KeRevertToUserGroupAffinityThread Routine verwenden, die eine Prozessorgruppe angibt, anstelle von KeRevertToUserAffinityThreadEx-, was nicht. Die Implementierung von KeRevertToUserAffinityThreadEx- in Windows 7 und höheren Versionen von Windows bietet jedoch Kompatibilität für Treiber, die für frühere Versionen von Windows geschrieben wurden, die keine Prozessorgruppen unterstützen. Bei dieser Implementierung handelt es sich bei einer nonzero Affinity Wert um eine Affinitätsmaske, die einen Satz logischer Prozessoren in Gruppe 0 angibt, auf dem der Thread ausgeführt werden kann. Wenn Affinity- null ist, wird der Thread auf die ursprüngliche Gruppennummer und das Affinitätsformat des Benutzermodus zurückgesetzt.

Wenn KeRevertToUserAffinityThreadEx- bei IRQL-<= APC_LEVEL aufgerufen wird und der Aufruf erfolgreich ist, wird die neue (revertierte) Affinitätsmaske sofort wirksam. Wenn der Aufruf zurückgegeben wird, wird der aufrufende Thread bereits auf einem Prozessor ausgeführt, der in der neuen Affinitätsmaske angegeben ist. Wenn KeRevertToUserAffinityThreadEx- bei IRQL = DISPATCH_LEVEL aufgerufen wird und der Aufruf erfolgreich ist, wird die ausstehende Prozessoränderung zurückgestellt, bis der Aufrufer die IRQL unter DISPATCH_LEVEL verringert.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Verfügbar in Windows Vista und höheren Versionen von Windows.
Zielplattform- Universal
Header- wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
Library NtosKrnl.lib
DLL- NtosKrnl.exe
IRQL- <= DISPATCH_LEVEL (siehe Abschnitt "Hinweise").
DDI-Complianceregeln HwStorPortProhibitedDIs(storport), PowerIrpDDis(wdm)

Siehe auch

KAFFINITY-

KeRevertToUserGroupAffinityThread

KeSetSystemAffinityThreadEx-