Freigeben über


NtQueryInformationProcess-Funktion (winternl.h)

[NtQueryInformationProcess kann in zukünftigen Versionen von Windows geändert oder nicht verfügbar sein. Anwendungen sollten die in diesem Thema aufgeführten alternativen Funktionen verwenden.]

Ruft Informationen zum angegebenen Prozess ab.

Syntax

__kernel_entry NTSTATUS NtQueryInformationProcess(
  [in]            HANDLE           ProcessHandle,
  [in]            PROCESSINFOCLASS ProcessInformationClass,
  [out]           PVOID            ProcessInformation,
  [in]            ULONG            ProcessInformationLength,
  [out, optional] PULONG           ReturnLength
);

Parameter

[in] ProcessHandle

Ein Handle für den Prozess, für den Informationen abgerufen werden sollen.

[in] ProcessInformationClass

Der Typ der abzurufenden Prozessinformationen. Dieser Parameter kann einer der folgenden Werte aus der PROCESSINFOCLASS-Enumeration sein.

Wert Bedeutung
ProcessBasicInformation
0
Ruft einen Zeiger auf eine PEB-Struktur ab, mit der ermittelt werden kann, ob der angegebene Prozess debuggt wird, und einen eindeutigen Wert, der vom System verwendet wird, um den angegebenen Prozess zu identifizieren.

Verwenden Sie die Funktionen CheckRemoteDebuggerPresent und GetProcessId , um diese Informationen abzurufen.

ProcessDebugPort
7
Ruft einen DWORD_PTR Wert ab, der die Portnummer des Debuggers für den Prozess darstellt. Ein Nonzero-Wert gibt an, dass der Prozess unter der Kontrolle eines Ring 3-Debuggers ausgeführt wird.

Verwenden Sie die Funktion CheckRemoteDebuggerPresent oder IsDebuggerPresent .

ProcessWow64Information
26
Bestimmt, ob der Prozess in der WOW64-Umgebung ausgeführt wird (WOW64 ist der x86-Emulator, mit dem Win32-basierte Anwendungen unter 64-Bit-Windows ausgeführt werden können).

Verwenden Sie die IsWow64Process2-Funktion , um diese Informationen abzurufen.

ProcessImageFileName
27
Ruft einen UNICODE_STRING Wert ab, der den Namen der Imagedatei für den Prozess enthält.

Verwenden Sie die Funktion QueryFullProcessImageName oder GetProcessImageFileName , um diese Informationen abzurufen.

ProcessBreakOnTermination
29
Ruft einen ULONG-Wert ab, der angibt, ob der Prozess als kritisch eingestuft wird.
Hinweis Dieser Wert kann ab Windows XP mit SP3 verwendet werden. Ab Windows 8.1 sollte stattdessen IsProcessCritical verwendet werden.
 
ProcessTelemetryIdInformation
64

Ruft einen PROCESS_TELEMETRY_ID_INFORMATION_TYPE-Wert ab, der Metadaten zu einem Prozess enthält.

ProcessSubsystemInformation
75
Ruft einen SUBSYSTEM_INFORMATION_TYPE Wert ab, der den Subsystemtyp des Prozesses angibt. Der Puffer, auf den der ProcessInformation-Parameter verweist, sollte groß genug sein, um eine einzelne SUBSYSTEM_INFORMATION_TYPE-Enumeration aufzunehmen.

[out] ProcessInformation

Ein Zeiger auf einen Puffer, der von der aufrufenden Anwendung bereitgestellt wird, in den die Funktion die angeforderten Informationen schreibt. Die Größe der geschriebenen Informationen hängt vom Datentyp des Parameters ProcessInformationClass ab:

PROCESS_BASIC_INFORMATION

Wenn der ProcessInformationClass-ParameterProcessBasicInformation ist, sollte der Puffer, auf den der Parameter ProcessInformation verweist, groß genug sein, um eine einzelne PROCESS_BASIC_INFORMATION Struktur mit dem folgenden Layout aufzunehmen:

typedef struct _PROCESS_BASIC_INFORMATION {
    NTSTATUS ExitStatus;
    PPEB PebBaseAddress;
    ULONG_PTR AffinityMask;
    KPRIORITY BasePriority;
    ULONG_PTR UniqueProcessId;
    ULONG_PTR InheritedFromUniqueProcessId;
} PROCESS_BASIC_INFORMATION;
Feld Bedeutung
ExitStatus Enthält denselben Wert, den GetExitCodeProcess zurückgibt. Die Verwendung von GetExitCodeProcess ist jedoch aus Gründen der Klarheit und Sicherheit vorzuziehen.
PebBaseAddress Zeigt auf eine PEB-Struktur .
AffinitätMask Kann in ein DWORD umgewandelt werden und enthält denselben Wert, den GetProcessAffinityMask für den lpProcessAffinityMask Parameter zurückgibt.
BasePriority Enthält die Prozesspriorität, wie unter Terminplanungsprioritäten beschrieben.
UniqueProcessId Kann in ein DWORD umgewandelt werden und enthält einen eindeutigen Bezeichner für diesen Prozess. Es wird empfohlen, die GetProcessId-Funktion zum Abrufen dieser Informationen zu verwenden.
InheritedFromUniqueProcessId Kann in ein DWORD umgewandelt werden und enthält einen eindeutigen Bezeichner für den übergeordneten Prozess.

ULONG_PTR

Wenn der ProcessInformationClass-ParameterProcessWow64Information ist, sollte der Puffer, auf den der ProcessInformation-Parameter verweist, groß genug sein, um eine ULONG_PTR aufzunehmen. Wenn dieser Wert nichtzero ist, wird der Prozess in einer WOW64-Umgebung ausgeführt. Andernfalls wird der Prozess nicht in einer WOW64-Umgebung ausgeführt.

Verwenden Sie die IsWow64Process2-Funktion , um zu bestimmen, ob ein Prozess in der WOW64-Umgebung ausgeführt wird.

UNICODE_STRING

Wenn der ProcessInformationClass-ParameterProcessImageFileName lautet, sollte der Puffer, auf den der ProcessInformation-Parameter verweist, groß genug sein, um eine UNICODE_STRING Struktur sowie die Zeichenfolge selbst zu speichern. Die im Pufferelement gespeicherte Zeichenfolge ist der Name der Imagedatei.

Wenn der Puffer zu klein ist, schlägt die Funktion mit dem STATUS_INFO_LENGTH_MISMATCH Fehlercode fehl, und der ReturnLength-Parameter wird auf die erforderliche Puffergröße festgelegt.

[in] ProcessInformationLength

Die Größe des Puffers, auf den der ProcessInformation-Parameter in Bytes verweist.

[out, optional] ReturnLength

Ein Zeiger auf eine Variable, in der die Funktion die Größe der angeforderten Informationen zurückgibt. Wenn die Funktion erfolgreich war, ist dies die Größe der Informationen, die in den Puffer geschrieben werden, auf den der Parameter ProcessInformation verweist (wenn der Puffer zu klein war, ist dies die mindeste Größe des Puffers, die erforderlich ist, um die Informationen erfolgreich zu empfangen).

Rückgabewert

Die Funktion gibt einen NTSTATUS-Erfolgs- oder Fehlercode zurück.

Die Formen und die Bedeutung von NTSTATUS-Fehlercodes sind in der Ntstatus.h-Headerdatei aufgeführt, die im DDK verfügbar ist. Weitere Informationen finden Sie unter Protokollierungsfehler .

Hinweise

Die NtQueryInformationProcess-Funktion und die strukturen, die sie zurückgibt, sind intern im Betriebssystem und können von einer Windows-Version zu einer anderen geändert werden. Um die Kompatibilität Ihrer Anwendung zu gewährleisten, ist es besser, stattdessen öffentliche Funktionen zu verwenden, die in der Beschreibung des Parameters ProcessInformationClass erwähnt werden.

Wenn Sie NtQueryInformationProcess verwenden, greifen Sie auf die Funktion über dynamische Laufzeitverknüpfung zu. Dies gibt Ihrem Code die Möglichkeit, ordnungsgemäß zu reagieren, wenn die Funktion geändert oder aus dem Betriebssystem entfernt wurde. Signaturänderungen sind jedoch möglicherweise nicht erkennbar.

Diese Funktion verfügt über keine zugeordnete Importbibliothek. Sie müssen die Funktionen LoadLibrary und GetProcAddress verwenden, um eine dynamische Verknüpfung mit Ntdll.dll.

Anforderungen

Anforderung Wert
Zielplattform Windows
Kopfzeile winternl.h
Bibliothek ntdll.lib
DLL ntdll.dll

Weitere Informationen

CheckRemoteDebuggerPresent

GetProcessId

IsDebuggerPresent

IsWow64Process

IsWow64Process2