NtOpenThreadToken-Funktion (ntifs.h)
Die NtOpenThreadToken-Routine öffnet das Zugriffstoken, das einem Thread zugeordnet ist, und gibt ein Handle zurück, das für den Zugriff auf dieses Token verwendet werden kann.
Syntax
__kernel_entry NTSYSCALLAPI NTSTATUS NtOpenThreadToken(
[in] HANDLE ThreadHandle,
[in] ACCESS_MASK DesiredAccess,
[in] BOOLEAN OpenAsSelf,
[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 NtOpenThreadToken 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.
[out] TokenHandle
Zeiger auf eine vom Aufrufer zugewiesene Variable, die ein Handle auf das neu geöffnete Zugriffstoken empfängt.
Rückgabewert
NtOpenThreadToken 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_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
NtOpenThreadToken ö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 kann der aufrufende Prozess das Zugriffstoken des Clients nicht mithilfe des Sicherheitskontexts des Clients öffnen, da es unmöglich ist, Objekte auf Executive-Ebene mithilfe der Identitätswechselebene SecurityIdentification zu öffnen.
Jedes Handle, das durch aufrufen von NtOpenThreadToken abgerufen wird, muss schließlich durch Aufrufen von NtClose freigegeben werden.
Weitere Informationen zur Sicherheit und Zugriffssteuerung finden Sie unter Windows-Sicherheitsmodell für Treiberentwickler und in der Dokumentation zu diesen Themen im Windows SDK.
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 |
Kopfzeile | ntifs.h |
Bibliothek | NtosKrnl.lib |
DLL | NtosKrnl.exe |