Fungsi AuxKlibQueryModuleInformation (aux_klib.h)
Rutinitas AuxKlibQueryModuleInformation mengambil informasi tentang modul gambar yang telah dimuat sistem operasi.
Sintaks
NTSTATUS AuxKlibQueryModuleInformation(
[in, out] PULONG BufferSize,
[in] ULONG ElementSize,
[out, optional] PVOID QueryInfo
);
Parameter
[in, out] BufferSize
Penunjuk ke lokasi yang berisi atau menerima ukuran buffer, dalam byte. Jika QueryInfoADALAH NULL, lokasi menerima jumlah byte yang harus dialokasikan driver untuk array yang menerima informasi yang diambil. Jika QueryInfo bukan NULL, lokasi harus berisi jumlah byte yang ditentukan.
[in] ElementSize
Ukuran, dalam byte, dari setiap elemen array yang dituju queryInfo . Nilai ini harus sizeof(AUX_MODULE_BASIC_INFO) atau sizeof(AUX_MODULE_EXTENDED_INFO).
[out, optional] QueryInfo
Penunjuk ke array struktur AUX_MODULE_BASIC_INFO atau AUX_MODULE_EXTENDED_INFO yang menerima informasi tentang modul gambar yang dimuat. Jika pointer ini NULL, AuxKlibQueryModuleInformation menulis ukuran buffer yang diperlukan ke lokasi yang ditunjuk bufferSize .
Menampilkan nilai
AuxKlibQueryModuleInformation mengembalikan STATUS_SUCCESS jika operasi berhasil. AuxKlibQueryModuleInformation mengembalikan STATUS_BUFFER_TOO_SMALL jika penunjuk QueryInfo bukan NULL dan nilai BufferSize yang disediakan driver terlalu kecil.
Rutinitas mungkin mengembalikan nilai NTSTATUS lainnya.
Keterangan
Untuk mendapatkan informasi tentang modul gambar yang dimuat sistem operasi, driver harus:
- Panggil AuxKlibQueryModuleInformation dengan penunjuk QueryInfoNULL. Setelah AuxKlibQueryModuleInformation kembali, lokasi yang dituju parameter BufferSize akan berisi jumlah byte yang harus dialokasikan driver untuk array.
- Panggil rutinitas alokasi memori, seperti ExAllocatePoolWithTag, untuk mengalokasikan buffer untuk array.
- Panggil AuxKlibQueryModuleInformation lagi. Kali ini, penunjuk QueryInfo harus berisi alamat buffer yang dialokasikan. Setelah AuxKlibQueryModuleInformation kembali, buffer berisi array informasi modul.
Jika panggilan ke AuxKlibQueryModuleInformation berhasil, rutin menulis nilai ImageBase ke setiap elemen dalam array QueryInfo . Setiap nilai ImageBase adalah penunjuk ke dasar gambar driver yang dimuat. Penunjuk ini tetap valid hanya saat driver tetap dimuat. Pemanggil harus mengasumsikan bahwa driver dapat dibongkar kapan saja kecuali pemanggil dapat menjamin sebaliknya. Misalnya, driver mungkin dibongkar antara panggilan ke AuxKlibQueryModuleInformation yang mendapatkan penunjuk ke gambar driver dan panggilan ke AuxKlibGetImageExportDirectory yang menggunakan pointer ini.
Driver harus memanggil AuxKlibInitialize sebelum memanggil AuxKlibQueryModuleInformation.
Contoh
Contoh kode berikut mengilustrasikan langkah-langkah yang tercantum di bagian Keterangan sebelumnya.
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;
}
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Didukung dimulai dengan Windows 2000. |
Target Platform | Universal |
Header | aux_klib.h (termasuk Aux_klib.h) |
Pustaka | Aux_Klib.lib |
IRQL | PASSIVE_LEVEL |
Lihat juga
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk