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 |