Fungsi RtlEnumerateGenericTableAvl (ntddk.h)
Rutinitas RtlEnumerateGenericTableAvl digunakan untuk menghitung elemen dalam tabel generik.
Sintaks
NTSYSAPI PVOID RtlEnumerateGenericTableAvl(
[in] PRTL_AVL_TABLE Table,
[in] BOOLEAN Restart
);
Parameter
[in] Table
Penunjuk ke tabel generik (RTL_AVL_TABLE). Tabel harus diinisialisasi dengan memanggil RtlInitializeGenericTableAvl.
[in] Restart
Atur ke TRUE jika enumerasi dimulai pada elemen pertama dalam tabel. Atur ke FALSE jika melanjutkan enumerasi dari panggilan sebelumnya.
Untuk menghitung semua elemen dalam tabel, gunakan RtlEnumerateGenericTableAvl sebagai berikut:
for (p = RtlEnumerateGenericTableAvl ( Table, TRUE );
p != NULL;
p = RtlEnumerateGenericTableAvl ( Table, FALSE )) {
// Process the element pointed to by p
}
Nilai kembali
RtlEnumerateGenericTableAvl mengembalikan pointer ke elemen berikutnya, jika ada. Jika tidak ada lagi elemen dalam tabel, RtlEnumerateGenericTableAvl mengembalikan NULL.
Keterangan
Penelepon Rtl.. Rutinitas GenericTableAvl bertanggung jawab untuk menyinkronkan akses secara eksklusif ke tabel generik. Mutex cepat eksklusif adalah mekanisme sinkronisasi yang paling efisien untuk digunakan untuk tujuan ini.
Secara default, sistem operasi menggunakan pohon splay untuk mengimplementasikan tabel generik, tetapi rutinitas RtlEnumerateGenericTableAvl hanya berfungsi dengan pohon Adelson-Velsky/Landis (AVL). Untuk mengonfigurasi rutinitas tabel generik untuk menggunakan pohon AVL alih-alih pohon splay di driver Anda, masukkan pernyataan definisi berikut dalam file header umum sebelum menyertakan Ntddk.h:
#define RTL_USE_AVL_TABLES 0
Jika RTL_USE_AVL_TABLES tidak ditentukan, Anda harus menggunakan bentuk AVL dari rutinitas tabel generik. Misalnya, gunakan rutinitas RtlEnumerateGenericTableAvl alih-alih RtlEnumerateGenericTable. Dalam panggilan ke RtlEnumerateGenericTableAvl, pemanggil harus melewati struktur tabel RTL_AVL_TABLE daripada RTL_GENERIC_TABLE.
Penelepon RtlEnumerateGenericTableAvl harus berjalan di IRQL < DISPATCH_LEVEL jika memori yang dialokasikan pemanggil untuk tabel generik dapat dipaginasi.
Persyaratan
Persyaratan | Nilai |
---|---|
Target Platform | Universal |
Header | ntddk.h (termasuk Ntddk.h, Ntifs.h, Fltkernel.h) |
Pustaka | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | DISPATCH_LEVEL IRQL < (lihat bagian Keterangan) |