Freigeben über


NtOpenProcess-Funktion (ntddk.h)

Die ZwOpenProcess-Routine öffnet ein Handle für ein Prozessobjekt und legt die Zugriffsrechte für dieses Objekt fest.

Syntax

__kernel_entry NTSYSCALLAPI NTSTATUS NtOpenProcess(
  [out]          PHANDLE            ProcessHandle,
  [in]           ACCESS_MASK        DesiredAccess,
  [in]           POBJECT_ATTRIBUTES ObjectAttributes,
  [in, optional] PCLIENT_ID         ClientId
);

Parameter

[out] ProcessHandle

Ein Zeiger auf eine Variable vom Typ HANDLE. Die ZwOpenProcess-Routine schreibt das Prozesshandle in die Variable, auf die dieser Parameter verweist.

[in] DesiredAccess

Ein ACCESS_MASK Wert, der die Zugriffsrechte enthält, die der Aufrufer für das Prozessobjekt angefordert hat.

[in] ObjectAttributes

Ein Zeiger auf eine OBJECT_ATTRIBUTES-Struktur , die die Attribute angibt, die auf das Prozessobjekthandle angewendet werden sollen. Das ObjectName-Feld dieser Struktur muss auf NULL festgelegt werden. Weitere Informationen finden Sie im folgenden Abschnitt "Hinweise" .

[in, optional] ClientId

Ein Zeiger auf eine Client-ID, die den Thread identifiziert, dessen Prozess geöffnet werden soll. Dieser Parameter muss ein Nicht-NULL-Zeiger auf eine gültige Client-ID sein. Weitere Informationen finden Sie im folgenden Abschnitt "Hinweise" .

Rückgabewert

ZwOpenProcess gibt STATUS_SUCCESS zurück, wenn der Aufruf erfolgreich ist. Mögliche Rückgabewerte sind die folgenden Fehlercodes status:

Rückgabecode Beschreibung
STATUS_INVALID_PARAMETER_MIX Der Aufrufer hat entweder einen Objektnamen angegeben oder keine Client-ID angegeben.
STATUS_INVALID_CID Die angegebene Client-ID ist ungültig.
STATUS_INVALID_PARAMETER Die angeforderten Zugriffsrechte sind für ein Prozessobjekt ungültig.
STATUS_ACCESS_DENIED Die angeforderten Zugriffsrechte können nicht gewährt werden.

Hinweise

Wie bei Kernelhandles, die von anderen Systemdienstaufrufen wie ZwCreateKey und ZwCreateFile geöffnet werden, ist der Aufrufer für den Aufruf von ZwClose verantwortlich, um das Handle zu schließen, wenn es nicht mehr benötigt wird.

Der ClientId-Parameter muss auf eine Client-ID verweisen, die den Thread identifiziert, dessen Prozess geöffnet werden soll. Darüber hinaus muss das ObjectName-Feld der Struktur, auf die von ObjectAttributes verwiesen wird, auf NULL festgelegt werden.

Wenn der Aufruf dieser Funktion im Benutzermodus erfolgt, sollten Sie den Namen "NtOpenProcess" anstelle von "ZwOpenProcess" 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
Zielplattform Universell
Header ntddk.h (include Ntddk.h, Ntifs.h)
Bibliothek NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
DDI-Complianceregeln HwStorPortProhibitedDIs, PowerIrpDDis

Weitere Informationen

ACCESS_MASK

OBJECT_ATTRIBUTES

Verwenden von Nt- und Zw-Versionen der Systemdienstroutinen