ZwQuerySystemInformation fonction)
[ZwQuerySystemInformation n’est plus disponible pour une utilisation à partir de Windows 8. Utilisez plutôt les autres fonctions indiqué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 [ dans]
-
Type d’informations système à récupérer. Ce paramètre peut avoir l’une des valeurs suivantes du type d’énumération de _ _ classe d’informations système .
-
SystemBasicInformation
-
Nombre de processeurs dans le système dans une structure d' _ _ information de base du système . Utilisez à la place la fonction GetSystemInfo .
-
SystemPerformanceInformation
-
Structure d' _ _ informations sur les performances du système opaque qui peut être utilisée pour générer une valeur de départ imprévisible pour un générateur de nombres aléatoires. Utilisez à la place la fonction CryptGenRandom .
-
SystemTimeOfDayInformation
-
Structure d' _ _ informations TimeOfDay du système opaque qui peut être utilisée pour générer une valeur de départ imprévisible pour un générateur de nombres aléatoires. Utilisez à la place la fonction CryptGenRandom .
-
SystemProcessInformation
-
Tableau de structures d' _ _ informations de processus système , un pour chaque processus s’exécutant dans le système.
Ces structures contiennent des informations sur l’utilisation des ressources de chaque processus, y compris le nombre de handles utilisés par le processus, l’utilisation du fichier de page de pic et le nombre de pages de mémoire allouées par le processus.
-
SystemProcessorPerformanceInformation
-
Tableau des structures d' _ _ _ informations sur les performances du processeur système , une pour chaque processeur installé dans le système.
-
SystemInterruptInformation
-
Structure d' _ _ informations d’interruption système opaque qui peut être utilisée pour générer une valeur de départ imprévisible pour un générateur de nombres aléatoires. Utilisez à la place la fonction CryptGenRandom .
-
SystemExceptionInformation
-
Structure d' _ _ informations d’exception système opaque qui peut être utilisée pour générer une valeur de départ imprévisible pour un générateur de nombres aléatoires. Utilisez à la place la fonction CryptGenRandom .
-
SystemRegistryQuotaInformation
-
Structure d' _ _ _ informations de quota du Registre système .
-
SystemLookasideInformation
-
Structure d' _ _ information de système non opaque qui peut être utilisée pour générer une valeur de départ imprévisible pour un générateur de nombres aléatoires. Utilisez à la place la fonction CryptGenRandom .
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.
_informations de base sur le système _
Lorsque le paramètre SystemInformationClass est SystemBasicInformation, la mémoire tampon vers laquelle pointe le paramètre SystemInformation doit être suffisamment grande pour contenir une structure d' _ _ information de base du système 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 à un usage interne par le système d’exploitation.
_informations sur les performances du système _
Lorsque le paramètre SystemInformationClass est SystemPerformanceInformation, la mémoire tampon vers laquelle pointe le paramètre SystemInformation doit être suffisamment grande pour contenir une structure d' _ _ informations de performances système opaque à utiliser pour générer une valeur de départ 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 à un usage interne par le système d’exploitation.
Utilisez plutôt la fonction CryptGenRandom pour générer des données aléatoires du point de vue du chiffrement.
_informations sur la TimeOfDay du système _
Lorsque le paramètre SystemInformationClass est SystemTimeOfDayInformation, la mémoire tampon vers laquelle pointe le paramètre SystemInformation doit être suffisamment grande pour contenir une structure d' _ _ informations TimeOfDay du système opaque à utiliser pour générer une valeur de départ 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 à un usage interne par le système d’exploitation.
Utilisez plutôt la fonction CryptGenRandom pour générer des données aléatoires du point de vue du chiffrement.
_informations sur le processus système _
Lorsque le paramètre SystemInformationClass est SystemProcessInformation, la mémoire tampon vers laquelle pointe le paramètre SystemInformation doit être suffisamment grande pour contenir un tableau qui contient autant de structures d' _ _ informations sur le processus système qu’il y a 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 du stockage de fichiers de pages utilisé par le processus, et le membre PrivatePageCount contient le nombre de pages 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 de _ processus Win32 .
Les autres membres de la structure sont réservés à un usage interne par le système d’exploitation.
_ _ informations sur les performances du processeur système _
Lorsque le paramètre SystemInformationClass est SystemProcessorPerformanceInformation, la mémoire tampon vers laquelle pointe le paramètre SystemInformation doit être suffisamment grande pour contenir un tableau qui contient autant de structures d' _ _ informations sur le processus système qu’il y a de processeurs (UC) 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 pendant laquelle le système est inactif, en 1/centièmes de nanoseconde.
Le membre KernelTime contient la durée d’exécution du système en mode noyau (y compris tous les threads de tous les processus, sur tous les processeurs), en 1/centièmes de nanosecondes.
Le membre UserTime contient la durée d’exécution du système en mode utilisateur (y compris tous les threads de tous les processus, sur tous les processeurs), en 1/centièmes de nanosecondes.
Utilisez GetSystemTimes à la place pour récupérer ces informations.
_informations sur les interruptions système _
Lorsque le paramètre SystemInformationClass est SystemInterruptInformation, la mémoire tampon vers laquelle pointe le paramètre SystemInformation doit être suffisamment grande pour contenir un tableau qui contient autant de structures d' _ _ informations d’interruptions système opaques qu’il n’y a de processeurs (UC) installés sur le système. Chaque structure, ou le tableau dans son ensemble, peut être utilisée pour générer une valeur de départ 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 à un usage interne par le système d’exploitation.
Utilisez plutôt la fonction CryptGenRandom pour générer des données aléatoires du point de vue du chiffrement.
_informations sur l’exception système _
Lorsque le paramètre SystemInformationClass est SystemExceptionInformation, la mémoire tampon vers laquelle pointe le paramètre SystemInformation doit être suffisamment grande pour contenir une structure d' _ _ informations d’exception système opaque à utiliser pour générer une valeur de départ 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 à un usage interne par le système d’exploitation.
Utilisez plutôt la fonction CryptGenRandom pour générer des données aléatoires du point de vue du chiffrement.
_ _ informations sur les quotas du Registre système _
Lorsque le paramètre SystemInformationClass est SystemRegistryQuotaInformation, la mémoire tampon vers laquelle pointe le paramètre SystemInformation doit être suffisamment grande pour contenir une structure d' _ _ _ informations de quota du Registre du système 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é à un usage interne par le système d’exploitation.
_informations système _
Lorsque le paramètre SystemInformationClass est SystemLookasideInformation, la mémoire tampon vers laquelle pointe le paramètre SystemInformation doit être suffisamment grande pour contenir une structure d' _ _ informations de système insuffisante pour une utilisation lors de la génération d’une valeur de départ 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 à un usage interne par le système d’exploitation.
Utilisez plutôt la fonction CryptGenRandom pour générer des données aléatoires du point de vue du chiffrement.
SystemInformationLength [ dans]
Taille de la mémoire tampon vers laquelle pointe 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, elle 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 d’erreur ou de réussite NTSTATUS.
Les formulaires et la signification des codes d’erreur de NTSTATUS sont répertoriés dans le fichier d’en-tête Ntstatus. h disponible dans le DDK et sont décrits dans la documentation du 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 la liaison dynamique au moment de l’exécution. Cela donne à votre code la possibilité 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 une liaison dynamique à Ntdll.dll.
Configuration requise
| Condition requise | Valeur |
|---|---|
| DLL |
|