Compartir a través de


Función ZwQuerySystemInformation

[ZwQuerySystemInformation ya no está disponible para su uso a partir de Windows 8. En su lugar, use las funciones alternativas enumeradas en este tema.

Recupera la información del sistema especificada.

Sintaxis

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

Parámetros

SystemInformationClass [in]

Tipo de información del sistema que se va a recuperar. Este parámetro puede ser uno de los valores siguientes del tipo de enumeración SYSTEM_INFORMATION_CLASS .

SystemBasicInformation

Número de procesadores del sistema en una estructura de SYSTEM_BASIC_INFORMATION . En su lugar, use la función GetSystemInfo .

SystemPerformanceInformation

Estructura SYSTEM_PERFORMANCE_INFORMATION opaca que se puede usar para generar una inicialización imprevisible para un generador de números aleatorios. En su lugar, use la función CryptGenRandom .

SystemTimeOfDayInformation

Estructura SYSTEM_TIMEOFDAY_INFORMATION opaca que se puede usar para generar una inicialización imprevisible para un generador de números aleatorios. En su lugar, use la función CryptGenRandom .

SystemProcessInformation

Matriz de estructuras de SYSTEM_PROCESS_INFORMATION , una para cada proceso que se ejecuta en el sistema.

Estas estructuras contienen información sobre el uso de recursos de cada proceso, incluido el número de identificadores utilizados por el proceso, el uso máximo de archivos de página y el número de páginas de memoria que el proceso ha asignado.

SystemProcessorPerformanceInformation

Matriz de estructuras de SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION , una para cada procesador instalado en el sistema.

SystemInterruptInformation

Estructura SYSTEM_INTERRUPT_INFORMATION opaca que se puede usar para generar una inicialización imprevisible para un generador de números aleatorios. En su lugar, use la función CryptGenRandom .

SystemExceptionInformation

Estructura de SYSTEM_EXCEPTION_INFORMATION opaca que se puede usar para generar una inicialización imprevisible para un generador de números aleatorios. En su lugar, use la función CryptGenRandom .

SystemRegistryQuotaInformation

Estructura SYSTEM_REGISTRY_QUOTA_INFORMATION .

SystemLookasideInformation

Estructura SYSTEM_LOOKASIDE_INFORMATION opaca que se puede usar para generar una inicialización imprevisible para un generador de números aleatorios. En su lugar, use la función CryptGenRandom .

SystemInformation [in, out]

Puntero a un búfer que recibe la información solicitada. El tamaño y la estructura de esta información varían según el valor del parámetro SystemInformationClass , como se indica en la tabla siguiente.

SYSTEM_BASIC_INFORMATION

Cuando el parámetro SystemInformationClass es SystemBasicInformation, el búfer al que apunta el parámetro SystemInformation debe ser lo suficientemente grande como para contener una única estructura de SYSTEM_BASIC_INFORMATION que tenga el siguiente diseño:

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

El miembro NumberOfProcessors contiene el número de procesadores presentes en el sistema. Use GetSystemInfo en su lugar para recuperar esta información.

Los demás miembros de la estructura están reservados para uso interno por parte del sistema operativo.

SYSTEM_PERFORMANCE_INFORMATION

Cuando el parámetro SystemInformationClass es SystemPerformanceInformation, el búfer al que apunta el parámetro SystemInformation debe ser lo suficientemente grande como para contener una estructura de SYSTEM_PERFORMANCE_INFORMATION opaca para su uso para generar una inicialización impredecible para un generador de números aleatorios. Para ello, la estructura tiene el siguiente diseño:

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

Los miembros individuales de la estructura están reservados para uso interno por parte del sistema operativo.

Use la función CryptGenRandom en su lugar para generar datos criptográficos aleatorios.

SYSTEM_TIMEOFDAY_INFORMATION

Cuando el parámetro SystemInformationClass es SystemTimeOfDayInformation, el búfer al que apunta el parámetro SystemInformation debe ser lo suficientemente grande como para contener una estructura de SYSTEM_TIMEOFDAY_INFORMATION opaca para usarla para generar una inicialización impredecible para un generador de números aleatorios. Para ello, la estructura tiene el siguiente diseño:

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

Los miembros individuales de la estructura están reservados para uso interno por parte del sistema operativo.

Use la función CryptGenRandom en su lugar para generar datos criptográficos aleatorios.

SYSTEM_PROCESS_INFORMATION

Cuando el parámetro SystemInformationClass es SystemProcessInformation, el búfer al que apunta el parámetro SystemInformation debe ser lo suficientemente grande como para contener una matriz que contenga tantas estructuras SYSTEM_PROCESS_INFORMATION como hay procesos que se ejecutan en el sistema. Cada estructura tiene el siguiente diseño:

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;

El miembro NumberOfThreads contiene el número total de subprocesos que se están ejecutando actualmente en el proceso.

El miembro HandleCount contiene el número total de identificadores utilizados por el proceso en cuestión; use GetProcessHandleCount para recuperar esta información en su lugar.

El miembro PeakPagefileUsage contiene el número máximo de bytes de almacenamiento de archivos de página utilizado por el proceso y el miembro PrivatePageCount contiene el número de páginas de memoria asignadas para el uso de este proceso.

También puede recuperar esta información mediante la función GetProcessMemoryInfo o la clase Win32_Process .

Los demás miembros de la estructura están reservados para uso interno por parte del sistema operativo.

SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION

Cuando el parámetro SystemInformationClass es SystemProcessorPerformanceInformation, el búfer al que apunta el parámetro SystemInformation debe ser lo suficientemente grande como para contener una matriz que contenga tantas estructuras de SYSTEM_PROCESS_INFORMATION como hay procesadores (CPU) instalados en el sistema. Cada estructura tiene el siguiente diseño:

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;

El miembro IdleTime contiene la cantidad de tiempo que el sistema ha estado inactivo, en 1/100ths de un nanosegundo.

El miembro KernelTime contiene la cantidad de tiempo que el sistema ha dedicado a ejecutar en modo kernel (incluidos todos los subprocesos de todos los procesos, en todos los procesadores), en 1/100 de un nanosegundo.

El miembro UserTime contiene la cantidad de tiempo que el sistema ha dedicado a ejecutar en modo usuario (incluidos todos los subprocesos de todos los procesos, en todos los procesadores), en 1/100 de un nanosegundo.

Use GetSystemTimes en su lugar para recuperar esta información.

SYSTEM_INTERRUPT_INFORMATION

Cuando el parámetro SystemInformationClass es SystemInterruptInformation, el búfer al que apunta el parámetro SystemInformation debe ser lo suficientemente grande como para contener una matriz que contenga tantas estructuras de SYSTEM_INTERRUPT_INFORMATION opacas como hay procesadores (CPU) instalados en el sistema. Cada estructura, o la matriz en su conjunto, se pueden usar para generar una inicialización imprevisible para un generador de números aleatorios. Para ello, la estructura tiene el siguiente diseño:

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

Los miembros individuales de la estructura están reservados para uso interno por parte del sistema operativo.

Use la función CryptGenRandom en su lugar para generar datos criptográficos aleatorios.

SYSTEM_EXCEPTION_INFORMATION

Cuando el parámetro SystemInformationClass es SystemExceptionInformation, el búfer al que apunta el parámetro SystemInformation debe ser lo suficientemente grande como para contener una estructura de SYSTEM_EXCEPTION_INFORMATION opaca para su uso para generar una inicialización impredecible para un generador de números aleatorios. Para ello, la estructura tiene el siguiente diseño:

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

Los miembros individuales de la estructura están reservados para uso interno por parte del sistema operativo.

Use la función CryptGenRandom en su lugar para generar datos criptográficos aleatorios.

SYSTEM_REGISTRY_QUOTA_INFORMATION

Cuando el parámetro SystemInformationClass es SystemRegistryQuotaInformation, el búfer al que apunta el parámetro SystemInformation debe ser lo suficientemente grande como para contener una única estructura de SYSTEM_REGISTRY_QUOTA_INFORMATION que tenga el siguiente diseño:

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

El miembro RegistryQuotaAllowed contiene el tamaño máximo, en bytes, que el Registro puede alcanzar en este sistema.

El miembro RegistryQuotaUsed contiene el tamaño actual del Registro, en bytes.

Use GetSystemRegistryQuota en su lugar para recuperar esta información.

El otro miembro de la estructura está reservado para uso interno del sistema operativo.

SYSTEM_LOOKASIDE_INFORMATION

Cuando el parámetro SystemInformationClass es SystemLookasideInformation, el búfer al que apunta el parámetro SystemInformation debe ser lo suficientemente grande como para contener una estructura de SYSTEM_LOOKASIDE_INFORMATION opaca para usarla para generar una inicialización impredecible para un generador de números aleatorios. Para ello, la estructura tiene el siguiente diseño:

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

Los miembros individuales de la estructura están reservados para uso interno por parte del sistema operativo.

Use la función CryptGenRandom en su lugar para generar datos criptográficos aleatorios.

SystemInformationLength [in]

Tamaño del búfer al que apunta el parámetro SystemInformation , en bytes.

ReturnLength [out, opcional]

Puntero opcional a una ubicación donde la función escribe el tamaño real de la información solicitada. Si ese tamaño es menor o igual que el parámetro SystemInformationLength , la función copia la información en el búfer SystemInformation ; de lo contrario, devuelve un código de error NTSTATUS y devuelve en ReturnLength el tamaño del búfer necesario para recibir la información solicitada.

Valor devuelto

Devuelve un código de error o correcto de NTSTATUS.

Los formularios y la importancia de los códigos de error NTSTATUS se enumeran en el archivo de encabezado Ntstatus.h disponible en DDK y se describen en la documentación de DDK.

Comentarios

La función ZwQuerySystemInformation y las estructuras que devuelve son internas para el sistema operativo y están sujetas a cambios de una versión de Windows a otra. Para mantener la compatibilidad de la aplicación, es mejor usar las funciones alternativas mencionadas anteriormente en su lugar.

Si usa ZwQuerySystemInformation, acceda a la función mediante la vinculación dinámica en tiempo de ejecución. Esto ofrece al código la oportunidad de responder correctamente si la función se ha cambiado o quitado del sistema operativo. Sin embargo, es posible que los cambios de firma no sean detectables.

Esta función no tiene ninguna biblioteca de importación asociada. Debe usar las funciones LoadLibrary y GetProcAddress para vincular dinámicamente a Ntdll.dll.

Requisitos

Requisito Value
Archivo DLL
Ntdll.dll

Consulte también

Getsysteminfo

GetProcessHandleCount

GetProcessMemoryInfo

GetSystemTimes

GetSystemRegistryQuota