Partager via


Fonction NtQueryInformationProcess (winternl.h)

[NtQueryInformationProcess peut être modifié ou indisponible dans les versions futures de Windows. Les applications doivent utiliser les autres fonctions répertoriées dans cette rubrique.]

Récupère des informations sur le processus spécifié.

Syntaxe

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

Paramètres

[in] ProcessHandle

Handle du processus pour lequel les informations doivent être récupérées.

[in] ProcessInformationClass

Type d’informations de processus à récupérer. Ce paramètre peut être l’une des valeurs suivantes de l’énumération PROCESSINFOCLASS .

Valeur Signification
ProcessBasicInformation
0
Récupère un pointeur vers une structure PEB qui peut être utilisé pour déterminer si le processus spécifié est en cours de débogage et une valeur unique utilisée par le système pour identifier le processus spécifié.

Utilisez les fonctions CheckRemoteDebuggerPresent et GetProcessId pour obtenir ces informations.

ProcessDebugPort
7
Récupère une valeur DWORD_PTR qui est le numéro de port du débogueur pour le processus. Une valeur différente de zéro indique que le processus est en cours d’exécution sous le contrôle d’un débogueur ring 3.

Utilisez la fonction CheckRemoteDebuggerPresent ou IsDebuggerPresent .

ProcessWow64Information
26
Détermine si le processus s’exécute dans l’environnement WOW64 (WOW64 est l’émulateur x86 qui permet aux applications win32 de s’exécuter sur Windows 64 bits).

Utilisez la fonction IsWow64Process2 pour obtenir ces informations.

ProcessImageFileName
27
Récupère une valeur UNICODE_STRING contenant le nom du fichier image pour le processus.

Utilisez la fonction QueryFullProcessImageName ou GetProcessImageFileName pour obtenir ces informations.

ProcessBreakOnTermination
29
Récupère une valeur ULONG indiquant si le processus est considéré comme critique.
Note Cette valeur peut être utilisée à partir de Windows XP avec SP3. À partir de Windows 8.1, IsProcessCritical doit être utilisé à la place.
 
ProcessTelemetryIdInformation
64

Récupère une valeur PROCESS_TELEMETRY_ID_INFORMATION_TYPE qui contient des métadonnées relatives à un processus.

ProcessSubsystemInformation
75
Récupère une valeur SUBSYSTEM_INFORMATION_TYPE indiquant le type de sous-système du processus. La mémoire tampon pointée vers le paramètre ProcessInformation doit être suffisamment grande pour contenir une seule énumération SUBSYSTEM_INFORMATION_TYPE .

[out] ProcessInformation

Pointeur vers une mémoire tampon fournie par l’application appelante dans laquelle la fonction écrit les informations demandées. La taille des informations écrites varie en fonction du type de données du paramètre ProcessInformationClass :

PROCESS_BASIC_INFORMATION

Lorsque le paramètre ProcessInformationClass est ProcessBasicInformation, la mémoire tampon pointée par le paramètre ProcessInformation doit être suffisamment grande pour contenir une structure PROCESS_BASIC_INFORMATION unique ayant la disposition suivante :

typedef struct _PROCESS_BASIC_INFORMATION {
    NTSTATUS ExitStatus;
    PPEB PebBaseAddress;
    ULONG_PTR AffinityMask;
    KPRIORITY BasePriority;
    ULONG_PTR UniqueProcessId;
    ULONG_PTR InheritedFromUniqueProcessId;
} PROCESS_BASIC_INFORMATION;
Champ Signification
ExitStatus Contient la même valeur que celle renvoyée par GetExitCodeProcess . Toutefois, l’utilisation de GetExitCodeProcess est préférable pour plus de clarté et de sécurité.
PebBaseAddress Pointe vers une structure PEB .
AffinityMask Peut être converti en DWORD et contient la même valeur que GetProcessAffinityMask pour le lpProcessAffinityMask paramètre.
BasePriority Contient la priorité du processus, comme décrit dans Priorités de planification.
UniqueProcessId Peut être converti en DWORD et contient un identificateur unique pour ce processus. Nous vous recommandons d’utiliser la fonction GetProcessId pour récupérer ces informations.
InheritedFromUniqueProcessId Peut être converti en DWORD et contient un identificateur unique pour le processus parent.

ULONG_PTR

Lorsque le paramètre ProcessInformationClass est ProcessWow64Information, la mémoire tampon pointée par le paramètre ProcessInformation doit être suffisamment grande pour contenir une ULONG_PTR. Si cette valeur n’est pas nulle, le processus s’exécute dans un environnement WOW64. Sinon, le processus ne s’exécute pas dans un environnement WOW64.

Utilisez la fonction IsWow64Process2 pour déterminer si un processus est en cours d’exécution dans l’environnement WOW64.

UNICODE_STRING

Lorsque le paramètre ProcessInformationClass est ProcessImageFileName, la mémoire tampon pointée par le paramètre ProcessInformation doit être suffisamment grande pour contenir une structure UNICODE_STRING ainsi que la chaîne elle-même. La chaîne stockée dans le membre Buffer est le nom du fichier image.

Si la mémoire tampon est trop petite, la fonction échoue avec le code d’erreur STATUS_INFO_LENGTH_MISMATCH et le paramètre ReturnLength est défini sur la taille de mémoire tampon requise.

[in] ProcessInformationLength

Taille de la mémoire tampon pointée vers le paramètre ProcessInformation , en octets.

[out, optional] ReturnLength

Pointeur vers une variable dans laquelle la fonction retourne la taille des informations demandées. Si la fonction a réussi, il s’agit de la taille des informations écrites dans la mémoire tampon pointée par le paramètre ProcessInformation (si la mémoire tampon était trop petite, il s’agit de la taille minimale de la mémoire tampon nécessaire pour recevoir les informations correctement).

Valeur retournée

La fonction retourne un code d’erreur ou de réussite NTSTATUS.

Les formes et l’importance des codes d’erreur NTSTATUS sont répertoriées dans le fichier d’en-tête Ntstatus.h disponible dans le DDK. Pour plus d’informations, consultez Erreurs de journalisation .

Remarques

La fonction NtQueryInformationProcess et les structures qu’elle retourne sont internes au système d’exploitation et peuvent être modifiées d’une version de Windows à une autre. Pour maintenir la compatibilité de votre application, il est préférable d’utiliser plutôt des fonctions publiques mentionnées dans la description du paramètre ProcessInformationClass .

Si vous utilisez NtQueryInformationProcess, accédez à la fonction via une liaison dynamique au moment de l’exécution. Cela permet à votre code de répondre correctement si la fonction a été modifiée ou supprimée du système d’exploitation. Toutefois, les modifications de signature peuvent ne pas être détectables.

Cette fonction n’a pas de bibliothèque d’importation associée. Vous devez utiliser les fonctions LoadLibrary et GetProcAddress pour établir un lien dynamique vers Ntdll.dll.

Configuration requise

Condition requise Valeur
Plateforme cible Windows
En-tête winternl.h
Bibliothèque ntdll.lib
DLL ntdll.dll

Voir aussi

CheckRemoteDebuggerPresent

GetProcessId

IsDebuggerPresent

IsWow64Process

IsWow64Process2