Freigeben über


NtOpenProcessTokenEx-Funktion (ntifs.h)

Die NtOpenProcessTokenEx-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 NtOpenProcessTokenEx(
  [in]  HANDLE      ProcessHandle,
  [in]  ACCESS_MASK DesiredAccess,
  [in]  ULONG       HandleAttributes,
  [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.

[in] HandleAttributes

Attribute für das Zugriffstokenhandle. 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

NtOpenProcessTokenEx 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_INVALID_PARAMETER Die angegebenen HandleAttributes enthalten keine OBJ_KERNEL_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

Jedes Handle, das durch aufrufen von NtOpenProcessTokenEx abgerufen wird, muss schließlich durch Aufrufen von NtClose 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 NtOpenProcessTokenEx festlegen. Dadurch wird die Verwendung des von NtOpenProcessTokenEx 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.

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 HwStorPortProhibitedDIs, PowerIrpDDis

Weitere Informationen

ACCESS_MASK

ACL

PsDereferencePrimaryToken

NtClose

NtOpenThreadTokenEx