ZwOpenThreadTokenEx-Funktion (ntifs.h)

Die ZwOpenThreadTokenEx-Routine öffnet das Zugriffstoken, das einem Thread zugeordnet ist.

Syntax

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

Parameter

[in] ThreadHandle

Handle für 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 auf 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 für den Sicherheitskontext des Threads, der ZwOpenThreadTokenEx aufruft, oder für den Sicherheitskontext des Prozesses für den aufrufenden Thread durchgeführt werden soll.

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

[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 auf das neu geöffnete Zugriffstoken empfängt.

Rückgabewert

ZwOpenThreadTokenEx gibt STATUS_SUCCESS oder einen entsprechenden Fehler status zurück. Mögliche Fehler status Codes sind:

Rückgabecode Beschreibung
STATUS_ACCESS_DENIED ThreadHandle hatte keinen THREAD_QUERY_INFORMATION Zugriff.
STATUS_CANT_OPEN_ANONYMOUS Der Client hat die Identitätswechselebene SecurityAnonymous 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ültiges Handle.
STATUS_INVALID_PARAMETER Die angegebenen HandleAttributes enthalten keine OBJ_KERNEL_HANDLE.
STATUS_NO_TOKEN Es wurde versucht, ein Token zu öffnen, das einem Thread zugeordnet ist, der derzeit keine Identität eines Clients angibt.
STATUS_OBJECT_TYPE_MISMATCH ThreadHandle war kein Threadhandle.

Hinweise

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

Der OpenAsSelf-Parameter ermöglicht einem Serverprozess das Öffnen des Zugriffstokens für einen Clientprozess, wenn der Clientprozess die SecurityIdentification-Identitätswechselebene für den aufgezählten Typ SECURITY_IMPERSONATION_LEVEL angegeben hat. Ohne diesen Parameter ist der aufrufende Prozess nicht in der Lage, das Zugriffstoken des Clients mithilfe des Sicherheitskontexts des Clients zu öffnen, da es unmöglich ist, Objekte auf Executive-Ebene mit der Identitätswechselebene SecurityIdentification zu öffnen.

Jedes Handle, das durch aufrufen von ZwOpenThreadTokenEx abgerufen wird, muss schließlich durch Aufrufen von ZwClose freigegeben 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 ZwOpenThreadTokenEx festlegen. Dadurch wird die Verwendung des von ZwOpenThreadTokenEx zurückgegebenen Handles auf Prozesse eingeschränkt, die im Kernelmodus ausgeführt werden. Andernfalls kann der Prozess, in dessen Kontext der Treiber ausgeführt wird, auf das Handle zugreifen.

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

Hinweis

Wenn der Aufruf der ZwOpenThreadTokenEx-Funktion im Benutzermodus erfolgt, 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, da sie Eingabeparameter verarbeiten und interpretieren. Weitere Informationen zur Beziehung zwischen den Nt Xxx- und ZwXxx-Versionen einer Routine finden Sie unter Verwenden von Nt- und Zw-Versionen der Systemdienstroutinen.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows XP
Zielplattform Universell
Header ntifs.h (include Ntifs.h)
Bibliothek NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
DDI-Complianceregeln HwStorPortProhibitedDDIs(storport), PowerIrpDDis(wdm)

Weitere Informationen

<ACCESS_MASK

ACL

PsDereferencePrimaryToken

SECURITY_IMPERSONATION_LEVEL

Verwenden von Nt- und Zw-Versionen der Systemdienstroutinen

ZwClose

ZwOpenProcessTokenEx