Fungsi RtlEnumerateGenericTableWithoutSplayingAvl (ntddk.h)
Rutinitas RtlEnumerateGenericTableWithoutSplayingAvl digunakan untuk menghitung elemen dalam tabel generik.
Sintaks
NTSYSAPI PVOID RtlEnumerateGenericTableWithoutSplayingAvl(
[in] PRTL_AVL_TABLE Table,
[in, out] PVOID *RestartKey
);
Parameter
[in] Table
Penunjuk ke tabel generik (RTL_AVL_TABLE). Tabel harus telah diinisialisasi dengan memanggil RtlInitializeGenericTableAvl.
[in, out] RestartKey
Alamat elemen yang dikembalikan oleh panggilan sebelumnya ke RtlEnumerateGenericTableWithoutSplayingAvl. Harus diatur ke NULL jika enumerasi dimulai pada elemen pertama dalam tabel.
Untuk menghitung semua elemen dalam tabel, gunakan RtlEnumerateGenericTableWithoutSplayingAvl sebagai berikut:
RestartKey = NULL;
for (ptr = RtlEnumerateGenericTableWithoutSplayingAvl(Table, &RestartKey);
ptr != NULL;
ptr = RtlEnumerateGenericTableWithoutSplayingAvl(Table, &RestartKey)) {
// Process the element pointed to by ptr
}
Nilai kembali
RtlEnumerateGenericTableWithoutSplayingAvl mengembalikan penunjuk ke struktur yang ditentukan pemanggil yang terkait dengan elemen . Ini mengembalikan NULL jika RestartKeyadalah NULL dan tabel tidak memiliki elemen atau jika RestartKey adalah penunjuk yang dikembalikan dan tidak ada elemen berikutnya.
Keterangan
Rutinitas RtlEnumerateGenericTableWithoutSplayingAvl sebenarnya tidak berfungsi dengan pohon splay tetapi menyediakan rutinitas bernama analog untuk RtlEnumerateGenericTableWithoutSplayingAvl.
RtlEnumerateGenericTableWithoutSplayingAvl dapat dipanggil berulang kali untuk memproses data pemanggil di setiap elemen tabel generik.
Secara default, sistem operasi menggunakan pohon splay untuk mengimplementasikan tabel generik, tetapi rutinitas RtlLookupElementGenericTableFullAvl 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 formulir AVL dari rutinitas tabel generik. Misalnya, gunakan rutinitas RtlEnumerateGenericTableWithoutSplayingAvl alih-alih RtlEnumerateGenericTableWithoutSplaying. Dalam panggilan ke RtlEnumerateGenericTableWithoutSplayingAvl, pemanggil harus melewati struktur tabel RTL_AVL_TABLE daripada RTL_GENERIC_TABLE.
Penelepon dari* 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.
Penelepon RtlEnumerateGenericTableWithoutSplayingAvl 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) |
Pustaka | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | Lihat bagian Keterangan. |
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