Funzione AuxKlibQueryModuleInformation (aux_klib.h)
La routine AuxKlibQueryModuleInformation recupera informazioni sui moduli di immagine caricati dal sistema operativo.
Sintassi
NTSTATUS AuxKlibQueryModuleInformation(
[in, out] PULONG BufferSize,
[in] ULONG ElementSize,
[out, optional] PVOID QueryInfo
);
Parametri
[in, out] BufferSize
Puntatore a una posizione contenente o riceve una dimensione del buffer, in byte. Se QueryInfo è NULL, il percorso riceve il numero di byte che il driver deve allocare per la matrice che riceve le informazioni recuperate. Se QueryInfo non è NULL, il percorso deve contenere il numero specificato di byte.
[in] ElementSize
Dimensioni, in byte, di ogni elemento della matrice a cui QueryInfo punta. Questo valore deve essere sizeof(AUX_MODULE_BASIC_INFO) o sizeof(AUX_MODULE_EXTENDED_INFO).
[out, optional] QueryInfo
Puntatore a una matrice di strutture AUX_MODULE_BASIC_INFO o AUX_MODULE_EXTENDED_INFO che ricevono informazioni sui moduli di immagine caricati. Se questo puntatore è NULL, AuxKlibQueryModuleInformation scrive le dimensioni del buffer necessarie nella posizione in cui BufferSize punta.
Valore restituito
AuxKlibQueryModuleInformation restituisce STATUS_SUCCESS se l'operazione ha esito positivo. AuxKlibQueryModuleInformation restituisce STATUS_BUFFER_TOO_SMALL se il puntatore QueryInfo non è NULL e il valore BufferSize fornito dal driver è troppo piccolo.
La routine potrebbe restituire altri valori NTSTATUS.
Commenti
Per ottenere informazioni sui moduli immagine caricati dal sistema operativo, un driver deve:
- Chiamare AuxKlibQueryModuleInformation con un puntatoreNULLQueryInfo . Dopo che AuxKlibQueryModuleInformation restituisce , il percorso a cui punta il parametro BufferSize conterrà il numero di byte che il driver dovrà allocare per la matrice.
- Chiamare una routine di allocazione della memoria, ad esempio ExAllocatePoolWithTag, per allocare un buffer per la matrice.
- Chiamare di nuovo AuxKlibQueryModuleInformation . Questa volta, il puntatore QueryInfo deve contenere l'indirizzo del buffer allocato. Dopo aver restituito AuxKlibQueryModuleInformation , il buffer contiene una matrice di informazioni sul modulo.
Se una chiamata a AuxKlibQueryModuleInformation ha esito positivo, la routine scrive un valore ImageBase in ogni elemento della matrice QueryInfo . Ogni valore imageBase è un puntatore alla base di un'immagine del driver caricata. Questo puntatore rimane valido solo mentre il driver rimane caricato. Il chiamante deve presumere che il driver possa essere scaricato in qualsiasi momento, a meno che il chiamante non possa garantire altrimenti. Ad esempio, un driver potrebbe essere scaricato tra una chiamata a AuxKlibQueryModuleInformation che ottiene un puntatore all'immagine del driver e una chiamata a AuxKlibGetImageExportDirectory che usa questo puntatore.
I driver devono chiamare AuxKlibInitialize prima di chiamare AuxKlibQueryModuleInformation.
Esempio
Nell'esempio di codice seguente vengono illustrati i passaggi elencati nella sezione Osservazioni precedenti.
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;
}
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Supportato a partire da Windows 2000. |
Piattaforma di destinazione | Universale |
Intestazione | aux_klib.h (includere Aux_klib.h) |
Libreria | Aux_Klib.lib |
IRQL | PASSIVE_LEVEL |
Vedi anche
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per