Freigeben über


NtOpenProcess-Funktion (ntddk.h)

Die ZwOpenProcess Routine öffnet ein Handle für ein Prozessobjekt und legt die Zugriffsrechte auf 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 Anmerkungen.

[in, optional] ClientId

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

Rückgabewert

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

Rückgabecode Beschreibung
STATUS_INVALID_PARAMETER_MIX Der Aufrufer hat entweder einen Objektnamen angegeben oder eine Client-ID nicht 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 erteilt werden.

Bemerkungen

Wie bei Kernelhandles, die von anderen Systemdienstaufrufen wie ZwCreateKey und ZwCreateFile-geöffnet werden, ist der Aufrufer dafür verantwortlich, ZwClose aufzurufen, um das Handle zu schließen, wenn es nicht mehr erforderlich ist.

Der parameter ClientId 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 das durch ObjectAttributes verweist, 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, wie sie Eingabeparameter behandeln und interpretieren. Weitere Informationen zur Beziehung zwischen den NtXxx und ZwXxx- Versionen einer Routine finden Sie unter Using Nt and Zw Versions of the Native System Services Routines.

Anforderungen

Anforderung Wert
Zielplattform- Universal
Header- ntddk.h (enthalten Ntddk.h, Ntifs.h)
Library NtosKrnl.lib
DLL- NtosKrnl.exe
IRQL- PASSIVE_LEVEL
DDI-Complianceregeln HwStorPortProhibitedDIs, PowerIrpDDis

Siehe auch

ACCESS_MASK

OBJECT_ATTRIBUTES

Verwenden von Nt- und Zw-Versionen der systemeigenen Systemdienste-Routinen