Partager via


Fonction ZwQuerySystemInformation

[ZwQuerySystemInformation n’est plus disponible à partir de Windows 8. Utilisez plutôt les autres fonctions répertoriées dans cette rubrique.]

Récupère les informations système spécifiées.

Syntaxe

NTSTATUS WINAPI ZwQuerySystemInformation(
  _In_      SYSTEM_INFORMATION_CLASS SystemInformationClass,
  _Inout_   PVOID                    SystemInformation,
  _In_      ULONG                    SystemInformationLength,
  _Out_opt_ PULONG                   ReturnLength
);

Paramètres

SystemInformationClass [in]

Type d’informations système à récupérer. Ce paramètre peut être l’une des valeurs suivantes du type d’énumération SYSTEM_INFORMATION_CLASS .

SystemBasicInformation

Nombre de processeurs dans le système dans une structure de SYSTEM_BASIC_INFORMATION . Utilisez la fonction GetSystemInfo à la place.

SystemPerformanceInformation

Une structure opaque SYSTEM_PERFORMANCE_INFORMATION qui peut être utilisée pour générer une graine imprévisible pour un générateur de nombres aléatoires. Utilisez la fonction CryptGenRandom à la place.

SystemTimeOfDayInformation

Une structure opaque SYSTEM_TIMEOFDAY_INFORMATION qui peut être utilisée pour générer une graine imprévisible pour un générateur de nombres aléatoires. Utilisez la fonction CryptGenRandom à la place.

SystemProcessInformation

Tableau de structures SYSTEM_PROCESS_INFORMATION , une pour chaque processus en cours d’exécution dans le système.

Ces structures contiennent des informations sur l’utilisation des ressources de chaque processus, notamment le nombre de handles utilisés par le processus, le pic d’utilisation des fichiers de page et le nombre de pages de mémoire allouées par le processus.

SystemProcessorPerformanceInformation

Tableau de structures SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION , une pour chaque processeur installé dans le système.

SystemInterruptInformation

Une structure opaque SYSTEM_INTERRUPT_INFORMATION qui peut être utilisée pour générer une graine imprévisible pour un générateur de nombres aléatoires. Utilisez la fonction CryptGenRandom à la place.

SystemExceptionInformation

Une structure opaque SYSTEM_EXCEPTION_INFORMATION qui peut être utilisée pour générer une graine imprévisible pour un générateur de nombres aléatoires. Utilisez la fonction CryptGenRandom à la place.

SystemRegistryQuotaInformation

Structure SYSTEM_REGISTRY_QUOTA_INFORMATION .

SystemLookasideInformation

Structure opaque SYSTEM_LOOKASIDE_INFORMATION qui peut être utilisée pour générer une graine imprévisible pour un générateur de nombres aléatoires. Utilisez la fonction CryptGenRandom à la place.

SystemInformation [in, out]

Pointeur vers une mémoire tampon qui reçoit les informations demandées. La taille et la structure de ces informations varient en fonction de la valeur du paramètre SystemInformationClass , comme indiqué dans le tableau suivant.

SYSTEM_BASIC_INFORMATION

Lorsque le paramètre SystemInformationClass est SystemBasicInformation, la mémoire tampon pointée par le paramètre SystemInformation doit être suffisamment grande pour contenir une structure SYSTEM_BASIC_INFORMATION unique ayant la disposition suivante :

typedef struct _SYSTEM_BASIC_INFORMATION {
    BYTE Reserved1[24];
    PVOID Reserved2[4];
    CCHAR NumberOfProcessors;
} SYSTEM_BASIC_INFORMATION;

Le membre NumberOfProcessors contient le nombre de processeurs présents dans le système. Utilisez GetSystemInfo à la place pour récupérer ces informations.

Les autres membres de la structure sont réservés à une utilisation interne par le système d’exploitation.

SYSTEM_PERFORMANCE_INFORMATION

Lorsque le paramètre SystemInformationClass est SystemPerformanceInformation, la mémoire tampon pointée par le paramètre SystemInformation doit être suffisamment grande pour contenir une structure de SYSTEM_PERFORMANCE_INFORMATION opaque pour être utilisée dans la génération d’une valeur initiale imprévisible pour un générateur de nombres aléatoires. À cet effet, la structure a la disposition suivante :

typedef struct _SYSTEM_PERFORMANCE_INFORMATION {
    BYTE Reserved1[312];
} SYSTEM_PERFORMANCE_INFORMATION;

Les membres individuels de la structure sont réservés à une utilisation interne par le système d’exploitation.

Utilisez plutôt la fonction CryptGenRandom pour générer des données aléatoires de manière cryptographique.

SYSTEM_TIMEOFDAY_INFORMATION

Lorsque le paramètre SystemInformationClass est SystemTimeOfDayInformation, la mémoire tampon pointée par le paramètre SystemInformation doit être suffisamment grande pour contenir une structure de SYSTEM_TIMEOFDAY_INFORMATION opaque pour être utilisée dans la génération d’une valeur initiale imprévisible pour un générateur de nombres aléatoires. À cet effet, la structure a la disposition suivante :

typedef struct _SYSTEM_TIMEOFDAY_INFORMATION {
    BYTE Reserved1[48];
} SYSTEM_TIMEOFDAY_INFORMATION;

Les membres individuels de la structure sont réservés à une utilisation interne par le système d’exploitation.

Utilisez plutôt la fonction CryptGenRandom pour générer des données aléatoires de manière cryptographique.

SYSTEM_PROCESS_INFORMATION

Lorsque le paramètre SystemInformationClass est SystemProcessInformation, la mémoire tampon pointée par le paramètre SystemInformation doit être suffisamment grande pour contenir un tableau qui contient autant de structures SYSTEM_PROCESS_INFORMATION que de processus en cours d’exécution dans le système. Chaque structure a la disposition suivante :

typedef struct _SYSTEM_PROCESS_INFORMATION {
    ULONG NextEntryOffset;
    ULONG NumberOfThreads;
    BYTE Reserved1[48];
    PVOID Reserved2[3];
    HANDLE UniqueProcessId;
    PVOID Reserved3;
    ULONG HandleCount;
    BYTE Reserved4[4];
    PVOID Reserved5[11];
    SIZE_T PeakPagefileUsage;
    SIZE_T PrivatePageCount;
    LARGE_INTEGER Reserved6[6];
} SYSTEM_PROCESS_INFORMATION;

Le membre NumberOfThreads contient le nombre total de threads en cours d’exécution dans le processus.

Le membre HandleCount contient le nombre total de handles utilisés par le processus en question ; utilisez GetProcessHandleCount pour récupérer ces informations à la place.

Le membre PeakPagefileUsage contient le nombre maximal d’octets de stockage de fichiers de pages utilisés par le processus, et le membre PrivatePageCount contient le nombre de pages de mémoire allouées pour l’utilisation de ce processus.

Vous pouvez également récupérer ces informations à l’aide de la fonction GetProcessMemoryInfo ou de la classe Win32_Process .

Les autres membres de la structure sont réservés à une utilisation interne par le système d’exploitation.

SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION

Lorsque le paramètre SystemInformationClass est SystemProcessorPerformanceInformation, la mémoire tampon pointée par le paramètre SystemInformation doit être suffisamment grande pour contenir un tableau qui contient autant de structures SYSTEM_PROCESS_INFORMATION que de processeurs installés dans le système. Chaque structure a la disposition suivante :

typedef struct
_SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION {
    LARGE_INTEGER IdleTime;
    LARGE_INTEGER KernelTime;
    LARGE_INTEGER UserTime;
    LARGE_INTEGER Reserved1[2];
    ULONG Reserved2;
} SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION;

Le membre IdleTime contient la durée d’inactivité du système, en 1/100ème d’une nanoseconde.

Le membre KernelTime contient le temps passé par le système à s’exécuter en mode noyau (y compris tous les threads dans tous les processus, sur tous les processeurs), en 1/100ème d’une nanoseconde.

Le membre UserTime contient le temps passé par le système à s’exécuter en mode Utilisateur (y compris tous les threads de tous les processus, sur tous les processeurs), en 1/100e d’une nanoseconde.

Utilisez GetSystemTimes à la place pour récupérer ces informations.

SYSTEM_INTERRUPT_INFORMATION

Lorsque le paramètre SystemInformationClass est SystemInterruptInformation, la mémoire tampon pointée par le paramètre SystemInformation doit être suffisamment grande pour contenir un tableau qui contient autant de structures de SYSTEM_INTERRUPT_INFORMATION opaques que de processeurs installés sur le système. Chaque structure, ou le tableau dans son ensemble, peut être utilisé pour générer une graine imprévisible pour un générateur de nombres aléatoires. À cet effet, la structure a la disposition suivante :

typedef struct _SYSTEM_INTERRUPT_INFORMATION {
    BYTE Reserved1[24];
} SYSTEM_INTERRUPT_INFORMATION;

Les membres individuels de la structure sont réservés à une utilisation interne par le système d’exploitation.

Utilisez plutôt la fonction CryptGenRandom pour générer des données aléatoires de manière cryptographique.

SYSTEM_EXCEPTION_INFORMATION

Lorsque le paramètre SystemInformationClass est SystemExceptionInformation, la mémoire tampon pointée par le paramètre SystemInformation doit être suffisamment grande pour contenir une structure de SYSTEM_EXCEPTION_INFORMATION opaque pour être utilisée dans la génération d’une valeur initiale imprévisible pour un générateur de nombres aléatoires. À cet effet, la structure a la disposition suivante :

typedef struct _SYSTEM_EXCEPTION_INFORMATION {
    BYTE Reserved1[16];
} SYSTEM_EXCEPTION_INFORMATION;

Les membres individuels de la structure sont réservés à une utilisation interne par le système d’exploitation.

Utilisez plutôt la fonction CryptGenRandom pour générer des données aléatoires de manière cryptographique.

SYSTEM_REGISTRY_QUOTA_INFORMATION

Lorsque le paramètre SystemInformationClass est SystemRegistryQuotaInformation, la mémoire tampon pointée par le paramètre SystemInformation doit être suffisamment grande pour contenir une structure SYSTEM_REGISTRY_QUOTA_INFORMATION unique ayant la disposition suivante :

typedef struct _SYSTEM_REGISTRY_QUOTA_INFORMATION {
    ULONG RegistryQuotaAllowed;
    ULONG RegistryQuotaUsed;
    PVOID Reserved1;
} SYSTEM_REGISTRY_QUOTA_INFORMATION;

Le membre RegistryQuotaAllowed contient la taille maximale, en octets, que le Registre peut atteindre sur ce système.

Le membre RegistryQuotaUsed contient la taille actuelle du Registre, en octets.

Utilisez GetSystemRegistryQuota à la place pour récupérer ces informations.

L’autre membre de la structure est réservé à une utilisation interne par le système d’exploitation.

SYSTEM_LOOKASIDE_INFORMATION

Lorsque le paramètre SystemInformationClass est SystemLookasideInformation, la mémoire tampon pointée par le paramètre SystemInformation doit être suffisamment grande pour contenir une structure de SYSTEM_LOOKASIDE_INFORMATION opaque pour être utilisée dans la génération d’une valeur initiale imprévisible pour un générateur de nombres aléatoires. À cet effet, la structure a la disposition suivante :

typedef struct _SYSTEM_LOOKASIDE_INFORMATION {
    BYTE Reserved1[32];
} SYSTEM_LOOKASIDE_INFORMATION;

Les membres individuels de la structure sont réservés à une utilisation interne par le système d’exploitation.

Utilisez plutôt la fonction CryptGenRandom pour générer des données aléatoires de manière cryptographique.

SystemInformationLength [in]

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

ReturnLength [out, facultatif]

Pointeur facultatif vers un emplacement où la fonction écrit la taille réelle des informations demandées. Si cette taille est inférieure ou égale au paramètre SystemInformationLength , la fonction copie les informations dans la mémoire tampon SystemInformation ; sinon, il retourne un code d’erreur NTSTATUS et retourne dans ReturnLength la taille de la mémoire tampon requise pour recevoir les informations demandées.

Valeur retournée

Retourne un code de réussite ou d’erreur 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, et sont décrits dans la documentation DDK.

Notes

La fonction ZwQuerySystemInformation 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 les autres fonctions mentionnées précédemment.

Si vous utilisez ZwQuerySystemInformation, 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.

Spécifications

Condition requise Valeur
DLL
Ntdll.dll

Voir aussi

GetSystemInfo

GetProcessHandleCount

GetProcessMemoryInfo

GetSystemTimes

GetSystemRegistryQuota