Функция ZwQuerySystemInformation
[ZwQuerySystemInformation больше недоступен для использования с Windows 8. Вместо этого используйте альтернативные функции, перечисленные в этом разделе.]
Извлекает указанные системные сведения.
Синтаксис
NTSTATUS WINAPI ZwQuerySystemInformation(
_In_ SYSTEM_INFORMATION_CLASS SystemInformationClass,
_Inout_ PVOID SystemInformation,
_In_ ULONG SystemInformationLength,
_Out_opt_ PULONG ReturnLength
);
Параметры
-
SystemInformationClass [in]
-
Тип извлекаемой системной информации. Этот параметр может быть одним из следующих значений из типа перечисления SYSTEM_INFORMATION_CLASS .
-
SystemBasicInformation
-
Количество процессоров в системе в SYSTEM_BASIC_INFORMATION структуре. Вместо этого используйте функцию GetSystemInfo .
-
SystemPerformanceInformation
-
Непрозрачная структура SYSTEM_PERFORMANCE_INFORMATION , которую можно использовать для создания непредсказуемого начального значения для генератора случайных чисел. Вместо этого используйте функцию CryptGenRandom .
-
SystemTimeOfDayInformation
-
Непрозрачная структура SYSTEM_TIMEOFDAY_INFORMATION , которую можно использовать для создания непредсказуемого начального значения для генератора случайных чисел. Вместо этого используйте функцию CryptGenRandom .
-
SystemProcessInformation
-
Массив SYSTEM_PROCESS_INFORMATION структур, по одной для каждого процесса, выполняющегося в системе.
Эти структуры содержат сведения об использовании ресурсов каждого процесса, включая количество дескрипторов, используемых процессом, пиковое использование файла подкачки и количество страниц памяти, выделенных процессом.
-
SystemProcessorPerformanceInformation
-
Массив SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION структур, по одной для каждого процессора, установленного в системе.
-
SystemInterruptInformation
-
Непрозрачная структура SYSTEM_INTERRUPT_INFORMATION , которую можно использовать для создания непредсказуемого начального значения для генератора случайных чисел. Вместо этого используйте функцию CryptGenRandom .
-
SystemExceptionInformation
-
Непрозрачная структура SYSTEM_EXCEPTION_INFORMATION , которую можно использовать для создания непредсказуемого начального значения для генератора случайных чисел. Вместо этого используйте функцию CryptGenRandom .
-
SystemRegistryQuotaInformation
-
Структура SYSTEM_REGISTRY_QUOTA_INFORMATION .
-
SystemLookasideInformation
-
Непрозрачная структура SYSTEM_LOOKASIDE_INFORMATION , которую можно использовать для создания непредсказуемого начального значения для генератора случайных чисел. Вместо этого используйте функцию CryptGenRandom .
SystemInformation [вход, выход]
Указатель на буфер, получающий запрошенные сведения. Размер и структура этих сведений зависят от значения параметра SystemInformationClass , как показано в следующей таблице.
SYSTEM_BASIC_INFORMATION
Если параметр SystemInformationClass имеет значение SystemBasicInformation, буфер, на который указывает параметр SystemInformation , должен быть достаточно большим, чтобы вместить одну SYSTEM_BASIC_INFORMATION структуру со следующим макетом:
typedef struct _SYSTEM_BASIC_INFORMATION {
BYTE Reserved1[24];
PVOID Reserved2[4];
CCHAR NumberOfProcessors;
} SYSTEM_BASIC_INFORMATION;
Элемент NumberOfProcessors содержит количество процессоров, присутствующих в системе. Вместо этого используйте GetSystemInfo для получения этих сведений.
Остальные элементы структуры зарезервированы для внутреннего использования операционной системой.
SYSTEM_PERFORMANCE_INFORMATION
Если параметр SystemInformationClass имеет значение SystemPerformanceInformation, буфер, на который указывает параметр SystemInformation , должен быть достаточно большим, чтобы вместить непрозрачную структуру SYSTEM_PERFORMANCE_INFORMATION для использования при создании непредсказуемого начального значения для генератора случайных чисел. Для этой цели структура имеет следующий макет:
typedef struct _SYSTEM_PERFORMANCE_INFORMATION {
BYTE Reserved1[312];
} SYSTEM_PERFORMANCE_INFORMATION;
Отдельные элементы структуры зарезервированы для внутреннего использования операционной системой.
Вместо этого используйте функцию CryptGenRandom для создания криптографически случайных данных.
SYSTEM_TIMEOFDAY_INFORMATION
Если параметр SystemInformationClass имеет значение SystemTimeOfDayInformation, буфер, на который указывает параметр SystemInformation , должен быть достаточно большим для хранения непрозрачной структуры SYSTEM_TIMEOFDAY_INFORMATION для использования при создании непредсказуемого начального значения для генератора случайных чисел. Для этой цели структура имеет следующий макет:
typedef struct _SYSTEM_TIMEOFDAY_INFORMATION {
BYTE Reserved1[48];
} SYSTEM_TIMEOFDAY_INFORMATION;
Отдельные элементы структуры зарезервированы для внутреннего использования операционной системой.
Вместо этого используйте функцию CryptGenRandom для создания криптографически случайных данных.
SYSTEM_PROCESS_INFORMATION
Если параметр SystemInformationClass имеет значение SystemProcessInformation, буфер, на который указывает параметр SystemInformation , должен быть достаточно большим, чтобы вместить массив, содержащий столько SYSTEM_PROCESS_INFORMATION структур, сколько в системе выполняется процессов. Каждая структура имеет следующий макет:
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;
Элемент NumberOfThreads содержит общее количество текущих выполняемых потоков в процессе.
Член HandleCount содержит общее количество дескрипторов, используемых рассматриваемым процессом; Вместо этого используйте GetProcessHandleCount , чтобы получить эти сведения.
Член PeakPagefileUsage содержит максимальное количество байтов хранилища файлов подкачки, используемого процессом, а член PrivatePageCount — количество страниц памяти, выделенных для использования этого процесса.
Эти сведения также можно получить с помощью функции GetProcessMemoryInfo или класса Win32_Process .
Остальные элементы структуры зарезервированы для внутреннего использования операционной системой.
SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION
Если параметр SystemInformationClass имеет значение SystemProcessorPerformanceInformation, буфер, на который указывает параметр SystemInformation , должен быть достаточно большим для хранения массива , содержащего столько SYSTEM_PROCESS_INFORMATION структур, сколько процессоров (ЦП) установлено в системе. Каждая структура имеет следующий макет:
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;
Элемент IdleTime содержит время простоя системы в 1/100 наносекунд.
Элемент KernelTime содержит время, затраченное системой на выполнение в режиме ядра (включая все потоки во всех процессах, на всех процессорах), в 1/100 наносекунд.
Элемент UserTime содержит время, затраченное системой на выполнение в пользовательском режиме (включая все потоки во всех процессах, на всех процессорах), в 1/100 наносекунд.
Вместо этого используйте GetSystemTimes , чтобы получить эти сведения.
SYSTEM_INTERRUPT_INFORMATION
Если параметр SystemInformationClass имеет значение SystemInterruptInformation, буфер, на который указывает параметр SystemInformation , должен быть достаточно большим для хранения массива, содержащего столько непрозрачных структур SYSTEM_INTERRUPT_INFORMATION , сколько процессоров (ЦП) установлено в системе. Каждую структуру или массив в целом можно использовать для создания непредсказуемого начального значения для генератора случайных чисел. Для этой цели структура имеет следующий макет:
typedef struct _SYSTEM_INTERRUPT_INFORMATION {
BYTE Reserved1[24];
} SYSTEM_INTERRUPT_INFORMATION;
Отдельные элементы структуры зарезервированы для внутреннего использования операционной системой.
Вместо этого используйте функцию CryptGenRandom для создания криптографически случайных данных.
SYSTEM_EXCEPTION_INFORMATION
Если параметр SystemInformationClass имеет значение SystemExceptionInformation, буфер, на который указывает параметр SystemInformation , должен быть достаточно большим, чтобы вместить непрозрачную структуру SYSTEM_EXCEPTION_INFORMATION для использования при создании непредсказуемого начального значения для генератора случайных чисел. Для этой цели структура имеет следующий макет:
typedef struct _SYSTEM_EXCEPTION_INFORMATION {
BYTE Reserved1[16];
} SYSTEM_EXCEPTION_INFORMATION;
Отдельные элементы структуры зарезервированы для внутреннего использования операционной системой.
Вместо этого используйте функцию CryptGenRandom для создания криптографически случайных данных.
SYSTEM_REGISTRY_QUOTA_INFORMATION
Если параметр SystemInformationClass имеет значение SystemRegistryQuotaInformation, буфер, на который указывает параметр SystemInformation , должен быть достаточно большим, чтобы вместить одну структуру SYSTEM_REGISTRY_QUOTA_INFORMATION со следующим макетом:
typedef struct _SYSTEM_REGISTRY_QUOTA_INFORMATION {
ULONG RegistryQuotaAllowed;
ULONG RegistryQuotaUsed;
PVOID Reserved1;
} SYSTEM_REGISTRY_QUOTA_INFORMATION;
Элемент RegistryQuotaAllowed содержит максимальный размер (в байтах), который реестр может достичь в этой системе.
Элемент RegistryQuotaUsed содержит текущий размер реестра в байтах.
Вместо этого используйте GetSystemRegistryQuota , чтобы получить эти сведения.
Другой член структуры зарезервирован для внутреннего использования операционной системой.
SYSTEM_LOOKASIDE_INFORMATION
Если параметр SystemInformationClass имеет значение SystemLookasideInformation, буфер, на который указывает параметр SystemInformation , должен быть достаточно большим, чтобы вместить непрозрачную SYSTEM_LOOKASIDE_INFORMATION структуру для использования при создании непредсказуемого начального значения для генератора случайных чисел. Для этой цели структура имеет следующий макет:
typedef struct _SYSTEM_LOOKASIDE_INFORMATION {
BYTE Reserved1[32];
} SYSTEM_LOOKASIDE_INFORMATION;
Отдельные элементы структуры зарезервированы для внутреннего использования операционной системой.
Вместо этого используйте функцию CryptGenRandom для создания криптографически случайных данных.
SystemInformationLength [in]
Размер буфера, на который указывает параметр SystemInformation , в байтах.
ReturnLength [out, optional]
Необязательный указатель на расположение, в котором функция записывает фактический размер запрошенной информации. Если этот размер меньше или равен параметру SystemInformationLength , функция копирует сведения в буфер SystemInformation ; В противном случае он возвращает код ошибки NTSTATUS и возвращает в ReturnLength размер буфера, необходимый для получения запрошенной информации.
Возвращаемое значение
Возвращает код ошибки или успешного выполнения NTSTATUS.
Формы и значение кодов ошибок NTSTATUS перечислены в файле заголовка Ntstatus.h, доступном в DDK, и описаны в документации по DDK.
Комментарии
Функция ZwQuerySystemInformation и возвращаемые ею структуры являются внутренними для операционной системы и могут изменяться из одного выпуска Windows в другой. Для обеспечения совместимости приложения лучше использовать альтернативные функции, упомянутые ранее.
Если вы используете ZwQuerySystemInformation, получите доступ к функции через динамическое связывание во время выполнения. Это дает коду возможность корректно реагировать, если функция была изменена или удалена из операционной системы. Однако изменения подписи могут быть недоступны для обнаружения.
У этой функции нет связанной библиотеки импорта. Для динамического связывания с Ntdll.dll необходимо использовать функции LoadLibrary и GetProcAddress .
Требования
Требование | Значение |
---|---|
DLL |
|