Freigeben über


ZwOpenThreadTokenEx-Funktion (ntifs.h)

Die ZwOpenThreadTokenEx Routine öffnet das einem Thread zugeordnete Zugriffstoken.

Syntax

NTSYSAPI NTSTATUS ZwOpenThreadTokenEx(
  [in]  HANDLE      ThreadHandle,
  [in]  ACCESS_MASK DesiredAccess,
  [in]  BOOLEAN     OpenAsSelf,
  [in]  ULONG       HandleAttributes,
  [out] PHANDLE     TokenHandle
);

Parameter

[in] ThreadHandle

Behandeln Sie den Thread, dessen Zugriffstoken geöffnet werden soll. Das Handle muss über THREAD_QUERY_INFORMATION Zugriff verfügen. Verwenden Sie das NtCurrentThread Makro, um den aktuellen Thread anzugeben.

[in] DesiredAccess

ACCESS_MASK Struktur, die die angeforderten Zugriffstypen für das Zugriffstoken angibt. Diese angeforderten Zugriffstypen werden mit der diskretionären Zugriffssteuerungsliste (DACL-) des Tokens verglichen, um zu bestimmen, welche Zugriffsrechte gewährt oder verweigert werden.

[in] OpenAsSelf

Boolescher Wert, der angibt, ob die Zugriffsüberprüfung im Sicherheitskontext des Threadaufrufs ZwOpenThreadTokenEx oder für den Sicherheitskontext des Prozesses für den aufrufenden Thread erfolgen soll.

Wenn dieser Parameter FALSEist, wird die Zugriffsüberprüfung mithilfe des Sicherheitskontexts für den aufrufenden Thread ausgeführt. Wenn der Thread die Identität eines Clients angibt, kann dieser Sicherheitskontext der eines Clientprozesses sein. Wenn dieser Parameter TRUEist, wird die Zugriffsüberprüfung mithilfe des Sicherheitskontexts des Prozesses für den aufrufenden Thread vorgenommen.

[in] HandleAttributes

Attribute für das erstellte Handle. Derzeit wird nur OBJ_KERNEL_HANDLE unterstützt. Wenn der Aufrufer nicht im Systemprozesskontext ausgeführt wird, muss er OBJ_KERNEL_HANDLE für diesen Parameter angeben.

[out] TokenHandle

Zeiger auf eine vom Aufrufer zugewiesene Variable, die ein Handle für das neu geöffnete Zugriffstoken empfängt.

Rückgabewert

ZwOpenThreadTokenEx gibt STATUS_SUCCESS oder einen entsprechenden Fehlerstatus zurück. Mögliche Fehlerstatuscodes sind:

Rückgabecode Beschreibung
STATUS_ACCESS_DENIED ThreadHandle- haben keinen THREAD_QUERY_INFORMATION Zugriff.
STATUS_CANT_OPEN_ANONYMOUS Der Client hat die SecurityAnonymous-Identitätswechselebene angefordert. Ein anonymes Token kann jedoch nicht geöffnet werden. Weitere Informationen finden Sie unter SECURITY_IMPERSONATION_LEVEL.
STATUS_INVALID_HANDLE ThreadHandle- war kein gültiger Handle.
STATUS_INVALID_PARAMETER Die angegebene HandleAttributes- enthielt keine OBJ_KERNEL_HANDLE.
STATUS_NO_TOKEN Es wurde versucht, ein Token zu öffnen, das einem Thread zugeordnet ist, der derzeit keinen Identitätswechsel eines Clients vorgibt.
STATUS_OBJECT_TYPE_MISMATCH ThreadHandle- kein Threadhandle war.

Bemerkungen

ZwOpenThreadTokenEx öffnet das einem Thread zugeordnete Zugriffstoken und gibt ein Handle für dieses Token zurück.

Der OpenAsSelf Parameter ermöglicht es einem Serverprozess, das Zugriffstoken für einen Clientprozess zu öffnen, wenn der Clientprozess die Identitätswechselebene "SecurityIdentification" für den SECURITY_IMPERSONATION_LEVEL Enumerationstyp angegeben hat. Ohne diesen Parameter kann der aufrufende Prozess das Zugriffstoken des Clients nicht mithilfe des Sicherheitskontexts des Clients öffnen, da es unmöglich ist, Objekte auf Oberster Ebene mithilfe der Identitätswechselebene "SecurityIdentification" zu öffnen.

Jedes Handle, das durch Aufrufen von ZwOpenThreadTokenEx- abgerufen wird, muss schließlich durch Aufrufen von ZwClosefreigegeben werden.

Treiberroutinen, die in einem anderen Prozesskontext als dem des Systemprozesses ausgeführt werden, müssen das OBJ_KERNEL_HANDLE Attribut für den HandleAttributes Parameter von ZwOpenThreadTokenExfestlegen. Dadurch wird die Verwendung des von ZwOpenThreadTokenEx- zurückgegebenen Handles auf Prozesse beschränkt, die im Kernelmodus ausgeführt werden. Andernfalls kann über den Prozess, in dem der Treiber ausgeführt wird, auf das Handle zugegriffen werden kann.

Weitere Informationen zur Sicherheits- und Zugriffssteuerung finden Sie unter Windows-Sicherheitsmodell für Treiberentwickler und die Dokumentation zu diesen Themen im Windows SDK.

Anmerkung

Wenn der Aufruf der ZwOpenThreadTokenEx- funktion im Benutzermodus auftritt, sollten Sie den Namen "NtOpenThreadTokenEx" anstelle von "ZwOpenThreadTokenEx" verwenden.

Bei Aufrufen von Kernelmodustreibern können sich die NtXxx und ZwXxx- Versionen einer Windows Native System Services-Routine anders verhalten, wie sie Eingabeparameter behandeln und interpretieren. Weitere Informationen zur Beziehung zwischen den NtXxx und ZwXxx- Versionen einer Routine finden Sie unter Using Nt and Zw Versions of the Native System Services Routines.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Windows XP
Zielplattform- Universal
Header- ntifs.h (einschließlich Ntifs.h)
Library NtosKrnl.lib
DLL- NtosKrnl.exe
IRQL- PASSIVE_LEVEL
DDI-Complianceregeln HwStorPortProhibitedDIs(storport), PowerIrpDDis(wdm)

Siehe auch

< ACCESS_MASK

ACL-

PsDereferencePrimaryToken

SECURITY_IMPERSONATION_LEVEL

Verwenden von Nt- und Zw-Versionen der systemeigenen Systemdienste-Routinen

ZwClose

ZwOpenProcessTokenEx