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
);

Die 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-Aufzählung sein.

Wert Bedeutung
ProcessBasicInformation
0
Ruft einen Zeiger auf eine PEB-Struktur ab, mit der bestimmt werden kann, ob der angegebene Prozess gedebuggt wird, und einen eindeutigen Wert, der vom System zum Identifizieren des angegebenen Prozesses verwendet wird.

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 ist. Ein Wert ungleich Null 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 auf 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 Bilddatei für den Prozess enthält.

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

ProcessBreakOnTermination
29
Ruft einen ULONG-Wert ab, der angibt, ob der Prozess als kritisch betrachtet wird.
Anmerkung Dieser Wert kann ab Windows XP mit SP3 verwendet werden. Ab Windows 8.1 sollte IsProcessCritical stattdessen 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 zu enthalten.

[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 variiert je nach Datentyp des ProcessInformationClass-Parameters :

PROCESS_BASIC_INFORMATION

Wenn der ProcessInformationClass-Parameter"ProcessBasicInformation" lautet, sollte der puffer, auf den der ProcessInformation-Parameter verweist, groß genug sein, um eine einzelne PROCESS_BASIC_INFORMATION Struktur mit dem folgenden Layout zu enthalten:

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 für Klarheit und Sicherheit vorzuziehen.
PebBaseAddress Verweist auf eine PEB-Struktur .
AffinityMask Kann in ein DWORD umwandeln 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 umwandeln und einen eindeutigen Bezeichner für diesen Prozess enthalten. Wir empfehlen die Verwendung der GetProcessId-Funktion zum Abrufen dieser Informationen.
InheritedFromUniqueProcessId Kann in ein DWORD umwandeln und enthält einen eindeutigen Bezeichner für den übergeordneten Prozess.

ULONG_PTR

Wenn der ProcessInformationClass-Parameter"ProcessWow64Information" lautet, sollte der puffer, auf den der ProcessInformation-Parameter verweist, groß genug sein, um eine ULONG_PTR zu enthalten. Wenn dieser Wert nicht null 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_ZEICHENFOLGE

Wenn der ProcessInformationClass-Parameter"ProcessImageFileName" lautet, sollte der puffer, auf den der ProcessInformation-Parameter verweist, groß genug sein, um eine UNICODE_STRING Struktur sowie die Zeichenfolge selbst zu enthalten. Die im Pufferelement gespeicherte Zeichenfolge ist der Name der Bilddatei.

Wenn der Puffer zu klein ist, schlägt die Funktion mit dem STATUS_INFO_LENGTH_MISMATCH Fehlercode fehl, und der Parameter ReturnLength 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 wurden, auf den der ProcessInformation-Parameter verweist (wenn der Puffer zu klein war, ist dies die Mindestgröße des Puffers, der zum erfolgreichen Empfangen der Informationen erforderlich ist).

Rückgabewert

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

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

Bemerkungen

Die NtQueryInformationProcess-Funktion und die zurückgegebenen Strukturen sind intern für das Betriebssystem und können von einer Windows-Version in eine andere geändert werden. Um die Kompatibilität Ihrer Anwendung aufrechtzuerhalten, empfiehlt es sich, stattdessen öffentliche Funktionen zu verwenden, die in der Beschreibung des ProcessInformationClass-Parameters erwähnt werden.

Wenn Sie NtQueryInformationProcess verwenden, greifen Sie über dynamische Verknüpfungen zur Laufzeit auf die Funktion zu. Dadurch erhalten Sie die Möglichkeit, ordnungsgemäß zu reagieren, wenn die Funktion geändert oder aus dem Betriebssystem entfernt wurde. Signaturänderungen können jedoch möglicherweise nicht erkannt werden.

Diese Funktion weist keine zugeordnete Importbibliothek auf. Sie müssen die Funktionen LoadLibrary und GetProcAddress verwenden, um dynamisch mit Ntdll.dllzu verknüpfen.

Anforderungen

Anforderung Wert
Zielplattform Fenster
Header winternl.h
Library ntdll.lib
DLL ntdll.dll

Siehe auch

CheckRemoteDebuggerPresent

GetProcessId

IsDebuggerPresent

IsWow64Process-

IsWow64Process2-