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 |
---|---|
|
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. |
|
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 . |
|
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. |
|
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. |
|
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.
|
|
Récupère une valeur PROCESS_TELEMETRY_ID_INFORMATION_TYPE qui contient des métadonnées relatives à un processus. |
|
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 |