NtOpenProcessToken-Funktion (ntifs.h)
Die NtOpenProcessToken-Routine öffnet das Zugriffstoken, das einem Prozess zugeordnet ist, und gibt ein Handle zurück, das für den Zugriff auf dieses Token verwendet werden kann.
Syntax
__kernel_entry NTSYSCALLAPI NTSTATUS NtOpenProcessToken(
[in] HANDLE ProcessHandle,
[in] ACCESS_MASK DesiredAccess,
[out] PHANDLE TokenHandle
);
Parameter
[in] ProcessHandle
Behandeln Sie den Prozess, dessen Zugriffstoken geöffnet werden soll. Das Handle muss über PROCESS_QUERY_INFORMATION Zugriff verfügen. Verwenden Sie das In Ntddk.h definierte Makro NtCurrentProcess, um den aktuellen Prozess 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 Zugriffe gewährt oder verweigert werden.
[out] TokenHandle
Zeiger auf eine vom Aufrufer zugewiesene Variable, die ein Handle auf das neu geöffnete Zugriffstoken empfängt.
Rückgabewert
NtOpenProcessToken gibt STATUS_SUCCESS oder einen entsprechenden Fehler status zurück. Mögliche Fehler status Codes sind:
Rückgabecode | Beschreibung |
---|---|
STATUS_ACCESS_DENIED | ProcessHandle hatte keinen PROCESS_QUERY_INFORMATION Zugriff. |
STATUS_INSUFFICIENT_RESOURCES | Ein neues Tokenhandle konnte nicht zugewiesen werden. |
STATUS_INVALID_HANDLE | ProcessHandle war kein gültiges Handle. |
STATUS_OBJECT_TYPE_MISMATCH | ProcessHandle war kein Prozesshandle. |
STATUS_PRIVILEGE_NOT_HELD | Der Aufrufer verfügt nicht über die Berechtigung (SeSecurityPrivilege), die zum Erstellen eines Tokenhandles mit dem im DesiredAccess-Parameter angegebenen Zugriff erforderlich ist. |
STATUS_QUOTA_EXCEEDED | Das Arbeitsspeicherkontingent des Prozesses reicht nicht aus, um das Tokenhandle zuzuweisen. |
STATUS_UNSUCCESSFUL | Das Tokenhandle konnte nicht erstellt werden. |
Hinweise
Verwenden Sie zum Angeben von Attributen für das Zugriffstokenhandle stattdessen NtOpenProcessTokenEx .
Auf das Handle kann der Prozess zugreifen, in dessen Kontext der Treiber ausgeführt wird.
Jedes Handle, das durch aufrufen von NtOpenProcessToken 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 |
---|---|
Header | ntifs.h |
Bibliothek | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |