Compartilhar via


Função ZwQuerySystemInformation

[ZwQuerySystemInformation não está mais disponível para uso a partir de Windows 8. Em vez disso, use as funções alternativas listadas neste tópico.]

Recupera as informações do sistema especificadas.

Sintaxe

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

Parâmetros

SystemInformationClass [in]

O tipo de informações do sistema a serem recuperadas. Esse parâmetro pode ser um dos seguintes valores do tipo de enumeração SYSTEM_INFORMATION_CLASS .

SystemBasicInformation

O número de processadores no sistema em uma estrutura SYSTEM_BASIC_INFORMATION . Em vez disso, use a função GetSystemInfo .

SystemPerformanceInformation

Uma estrutura de SYSTEM_PERFORMANCE_INFORMATION opaca que pode ser usada para gerar uma semente imprevisível para um gerador de número aleatório. Em vez disso, use a função CryptGenRandom .

SystemTimeOfDayInformation

Uma estrutura de SYSTEM_TIMEOFDAY_INFORMATION opaca que pode ser usada para gerar uma semente imprevisível para um gerador de número aleatório. Em vez disso, use a função CryptGenRandom .

SystemProcessInformation

Uma matriz de estruturas SYSTEM_PROCESS_INFORMATION , uma para cada processo em execução no sistema.

Essas estruturas contêm informações sobre o uso de recursos de cada processo, incluindo o número de identificadores usados pelo processo, o uso de arquivo de página de pico e o número de páginas de memória alocadas pelo processo.

SystemProcessorPerformanceInformation

Uma matriz de estruturas de SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION , uma para cada processador instalado no sistema.

SystemInterruptInformation

Uma estrutura de SYSTEM_INTERRUPT_INFORMATION opaca que pode ser usada para gerar uma semente imprevisível para um gerador de número aleatório. Em vez disso, use a função CryptGenRandom .

SystemExceptionInformation

Uma estrutura de SYSTEM_EXCEPTION_INFORMATION opaca que pode ser usada para gerar uma semente imprevisível para um gerador de número aleatório. Em vez disso, use a função CryptGenRandom .

SystemRegistryQuotaInformation

Uma estrutura SYSTEM_REGISTRY_QUOTA_INFORMATION .

SystemLookasideInformation

Uma estrutura de SYSTEM_LOOKASIDE_INFORMATION opaca que pode ser usada para gerar uma semente imprevisível para um gerador de número aleatório. Em vez disso, use a função CryptGenRandom .

SystemInformation [in, out]

Um ponteiro para um buffer que recebe as informações solicitadas. O tamanho e a estrutura dessas informações variam dependendo do valor do parâmetro SystemInformationClass , conforme indicado na tabela a seguir.

SYSTEM_BASIC_INFORMATION

Quando o parâmetro SystemInformationClass é SystemBasicInformation, o buffer apontado pelo parâmetro SystemInformation deve ser grande o suficiente para manter uma única estrutura SYSTEM_BASIC_INFORMATION com o seguinte layout:

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

O membro NumberOfProcessors contém o número de processadores presentes no sistema. Use GetSystemInfo para recuperar essas informações.

Os outros membros da estrutura são reservados para uso interno pelo sistema operacional.

SYSTEM_PERFORMANCE_INFORMATION

Quando o parâmetro SystemInformationClass é SystemPerformanceInformation, o buffer apontado pelo parâmetro SystemInformation deve ser grande o suficiente para manter uma estrutura de SYSTEM_PERFORMANCE_INFORMATION opaca para uso na geração de uma semente imprevisível para um gerador de número aleatório. Para essa finalidade, a estrutura tem o seguinte layout:

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

Membros individuais da estrutura são reservados para uso interno pelo sistema operacional.

Use a função CryptGenRandom para gerar dados criptograficamente aleatórios.

SYSTEM_TIMEOFDAY_INFORMATION

Quando o parâmetro SystemInformationClass é SystemTimeOfDayInformation, o buffer apontado pelo parâmetro SystemInformation deve ser grande o suficiente para manter uma estrutura de SYSTEM_TIMEOFDAY_INFORMATION opaca para uso na geração de uma semente imprevisível para um gerador de número aleatório. Para essa finalidade, a estrutura tem o seguinte layout:

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

Membros individuais da estrutura são reservados para uso interno pelo sistema operacional.

Use a função CryptGenRandom para gerar dados criptograficamente aleatórios.

SYSTEM_PROCESS_INFORMATION

Quando o parâmetro SystemInformationClass é SystemProcessInformation, o buffer apontado pelo parâmetro SystemInformation deve ser grande o suficiente para manter uma matriz que contenha tantas estruturas SYSTEM_PROCESS_INFORMATION quanto há processos em execução no sistema. Cada estrutura tem o seguinte layout:

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;

O membro NumberOfThreads contém o número total de threads em execução no processo.

O membro HandleCount contém o número total de identificadores que estão sendo usados pelo processo em questão; use GetProcessHandleCount para recuperar essas informações.

O membro PeakPagefileUsage contém o número máximo de bytes de armazenamento de arquivo de página usado pelo processo e o membro PrivatePageCount contém o número de páginas de memória alocadas para o uso desse processo.

Você também pode recuperar essas informações usando a função GetProcessMemoryInfo ou a classe Win32_Process .

Os outros membros da estrutura são reservados para uso interno pelo sistema operacional.

SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION

Quando o parâmetro SystemInformationClass é SystemProcessorPerformanceInformation, o buffer apontado pelo parâmetro SystemInformation deve ser grande o suficiente para conter uma matriz que contenha tantas estruturas SYSTEM_PROCESS_INFORMATION quanto há CPUs (processadores) instaladas no sistema. Cada estrutura tem o seguinte layout:

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;

O membro IdleTime contém a quantidade de tempo que o sistema ficou ocioso, em 1/100 de um nanossegundo.

O membro KernelTime contém a quantidade de tempo que o sistema gastou executando no modo Kernel (incluindo todos os threads em todos os processos, em todos os processadores), em 1/100 de um nanossegundo.

O membro UserTime contém a quantidade de tempo que o sistema gastou executando no modo Usuário (incluindo todos os threads em todos os processos, em todos os processadores), em 1/100 de um nanossegundo.

Em vez disso , use GetSystemTimes para recuperar essas informações.

SYSTEM_INTERRUPT_INFORMATION

Quando o parâmetro SystemInformationClass é SystemInterruptInformation, o buffer apontado pelo parâmetro SystemInformation deve ser grande o suficiente para conter uma matriz que contenha tantas estruturas opacas SYSTEM_INTERRUPT_INFORMATION quanto há CPUs (processadores) instaladas no sistema. Cada estrutura, ou a matriz como um todo, pode ser usada para gerar uma semente imprevisível para um gerador de número aleatório. Para essa finalidade, a estrutura tem o seguinte layout:

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

Membros individuais da estrutura são reservados para uso interno pelo sistema operacional.

Use a função CryptGenRandom para gerar dados criptograficamente aleatórios.

SYSTEM_EXCEPTION_INFORMATION

Quando o parâmetro SystemInformationClass é SystemExceptionInformation, o buffer apontado pelo parâmetro SystemInformation deve ser grande o suficiente para manter uma estrutura de SYSTEM_EXCEPTION_INFORMATION opaca para uso na geração de uma semente imprevisível para um gerador de número aleatório. Para essa finalidade, a estrutura tem o seguinte layout:

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

Membros individuais da estrutura são reservados para uso interno pelo sistema operacional.

Use a função CryptGenRandom para gerar dados criptograficamente aleatórios.

SYSTEM_REGISTRY_QUOTA_INFORMATION

Quando o parâmetro SystemInformationClass é SystemRegistryQuotaInformation, o buffer apontado pelo parâmetro SystemInformation deve ser grande o suficiente para manter uma única estrutura SYSTEM_REGISTRY_QUOTA_INFORMATION com o seguinte layout:

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

O membro RegistryQuotaAllowed contém o tamanho máximo, em bytes, que o Registro pode obter nesse sistema.

O membro RegistryQuotaUsed contém o tamanho atual do Registro, em bytes.

Em vez disso , use GetSystemRegistryQuota para recuperar essas informações.

O outro membro da estrutura é reservado para uso interno pelo sistema operacional.

SYSTEM_LOOKASIDE_INFORMATION

Quando o parâmetro SystemInformationClass é SystemLookasideInformation, o buffer apontado pelo parâmetro SystemInformation deve ser grande o suficiente para manter uma estrutura de SYSTEM_LOOKASIDE_INFORMATION opaca para uso na geração de uma semente imprevisível para um gerador de número aleatório. Para essa finalidade, a estrutura tem o seguinte layout:

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

Membros individuais da estrutura são reservados para uso interno pelo sistema operacional.

Use a função CryptGenRandom para gerar dados criptograficamente aleatórios.

SystemInformationLength [in]

O tamanho do buffer apontado pelo parâmetro SystemInformation , em bytes.

ReturnLength [out, opcional]

Um ponteiro opcional para um local em que a função grava o tamanho real das informações solicitadas. Se esse tamanho for menor ou igual ao parâmetro SystemInformationLength , a função copiará as informações para o buffer SystemInformation ; caso contrário, ele retorna um código de erro NTSTATUS e retorna em ReturnLength o tamanho do buffer necessário para receber as informações solicitadas.

Valor retornado

Retorna um código de erro ou êxito NTSTATUS.

Os formulários e a significância dos códigos de erro NTSTATUS são listados no arquivo de cabeçalho Ntstatus.h disponível no DDK e são descritos na documentação do DDK.

Comentários

A função ZwQuerySystemInformation e as estruturas que ela retorna são internas para o sistema operacional e estão sujeitas a alterações de uma versão do Windows para outra. Para manter a compatibilidade do aplicativo, é melhor usar as funções alternativas mencionadas anteriormente.

Se você usar ZwQuerySystemInformation, acesse a função por meio da vinculação dinâmica em tempo de execução. Isso dá ao código a oportunidade de responder normalmente se a função tiver sido alterada ou removida do sistema operacional. No entanto, as alterações de assinatura podem não ser detectáveis.

Essa função não tem nenhuma biblioteca de importação associada. Você deve usar as funções LoadLibrary e GetProcAddress para vincular dinamicamente a Ntdll.dll.

Requisitos

Requisito Valor
DLL
Ntdll.dll

Confira também

Getsysteminfo

GetProcessHandleCount

GetProcessMemoryInfo

GetSystemTimes

GetSystemRegistryQuota