Função AuxKlibQueryModuleInformation (aux_klib.h)
A rotina AuxKlibQueryModuleInformation recupera informações sobre os módulos de imagem que o sistema operacional carregou.
Sintaxe
NTSTATUS AuxKlibQueryModuleInformation(
[in, out] PULONG BufferSize,
[in] ULONG ElementSize,
[out, optional] PVOID QueryInfo
);
Parâmetros
[in, out] BufferSize
Um ponteiro para um local que contém ou recebe um tamanho de buffer, em bytes. Se QueryInfo for NULL, o local receberá o número de bytes que o driver deve alocar para a matriz que recebe as informações recuperadas. Se QueryInfo não for NULL, o local deverá conter o número especificado de bytes.
[in] ElementSize
O tamanho, em bytes, de cada elemento da matriz para o qual QueryInfo aponta. Esse valor deve ser sizeof(AUX_MODULE_BASIC_INFO) ou sizeof(AUX_MODULE_EXTENDED_INFO).
[out, optional] QueryInfo
Um ponteiro para uma matriz de estruturas de AUX_MODULE_BASIC_INFO ou AUX_MODULE_EXTENDED_INFO que recebe informações sobre módulos de imagem carregados. Se esse ponteiro for NULL, AuxKlibQueryModuleInformation gravará o tamanho do buffer necessário no local para o qual BufferSize aponta.
Retornar valor
AuxKlibQueryModuleInformation retornará STATUS_SUCCESS se a operação for bem-sucedida. AuxKlibQueryModuleInformation retornará STATUS_BUFFER_TOO_SMALL se o ponteiro QueryInfo não for NULL e o valor bufferSize fornecido pelo driver for muito pequeno.
A rotina pode retornar outros valores NTSTATUS.
Comentários
Para obter informações sobre os módulos de imagem carregados do sistema operacional, um driver deve:
- Chame AuxKlibQueryModuleInformation com um ponteiro NULLQueryInfo . Depois que AuxKlibQueryModuleInformation retornar, o local para o qual o parâmetro BufferSize aponta conterá o número de bytes que o driver terá que alocar para a matriz.
- Chame uma rotina de alocação de memória, como ExAllocatePoolWithTag, para alocar um buffer para a matriz.
- Chame AuxKlibQueryModuleInformation novamente. Desta vez, o ponteiro QueryInfo deve conter o endereço do buffer alocado. Depois que AuxKlibQueryModuleInformation retornar, o buffer conterá uma matriz de informações de módulo.
Se uma chamada para AuxKlibQueryModuleInformation for bem-sucedida, a rotina gravará um valor ImageBase em cada elemento na matriz QueryInfo . Cada valor ImageBase é um ponteiro para a base de uma imagem de driver carregada. Esse ponteiro permanece válido somente enquanto o driver permanece carregado. O chamador deve assumir que o driver pode ser descarregado a qualquer momento, a menos que o chamador possa garantir o contrário. Por exemplo, um driver pode ser descarregado entre uma chamada para AuxKlibQueryModuleInformation que obtém um ponteiro para a imagem do driver e uma chamada para AuxKlibGetImageExportDirectory que usa esse ponteiro.
Os drivers devem chamar AuxKlibInitialize antes de chamar AuxKlibQueryModuleInformation.
Exemplos
O exemplo de código a seguir ilustra as etapas listadas na seção Comentários anterior.
NTSTATUS status;
ULONG modulesSize;
AUX_MODULE_EXTENDED_INFO* modules;
ULONG numberOfModules;
//
// Get the required array size.
//
status = AuxKlibQueryModuleInformation(
&modulesSize,
sizeof(AUX_MODULE_EXTENDED_INFO),
NULL
);
if (!NT_SUCCESS(status) || modulesSize == 0) {
break;
}
//
// Calculate the number of modules.
//
numberOfModules = modulesSize / sizeof(AUX_MODULE_EXTENDED_INFO);
//
// Allocate memory to receive data.
//
modules =
(AUX_MODULE_EXTENDED_INFO*) ExAllocatePoolWithTag(
PagedPool,
modulesSize,
'3LxF'
);
if (modules == NULL) {
status = STATUS_INSUFFICIENT_RESOURCES;
break;
}
RtlZeroMemory(
modules,
modulesSize
);
//
// Obtain the module information.
//
status = AuxKlibQueryModuleInformation(
&modulesSize,
sizeof(AUX_MODULE_EXTENDED_INFO),
modules
);
if (!NT_SUCCESS(status)) {
break;
}
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Com suporte a partir do Windows 2000. |
Plataforma de Destino | Universal |
Cabeçalho | aux_klib.h (inclua Aux_klib.h) |
Biblioteca | Aux_Klib.lib |
IRQL | PASSIVE_LEVEL |
Confira também
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de