Fungsi RtlLookupFirstMatchingElementGenericTableAvl (ntddk.h)
Rutinitas RtlLookupFirstMatchingElementGenericTableAvl menemukan elemen paling kiri di pohon yang cocok dengan data yang ditunjukkan.
Sintaks
NTSYSAPI PVOID RtlLookupFirstMatchingElementGenericTableAvl(
[in] PRTL_AVL_TABLE Table,
[in] PVOID Buffer,
[out] PVOID *RestartKey
);
Parameter
[in] Table
Penunjuk ke tabel Adelson-Velsky/Landis (AVL) generik (RTL_AVL_TABLE).
[in] Buffer
Buffer yang berisi data pencarian.
[out] RestartKey
Pada output, berisi konteks pencarian untuk digunakan dengan rutinitas enumerasi, seperti RtlEnumerateGenericTableWithoutSplayingAvl.
Nilai kembali
Rutinitas RtlLookupFirstMatchingElementGenericTableAvlmengembalikan penunjuk ke data yang cocok, atau NULL jika tidak ada kecocokan yang ditemukan.
Keterangan
Pohon yang mengimplementasikan tabel generik mungkin berisi beberapa nama file yang hanya berbeda dalam kasus. Algoritma pencarian dapat menggunakan rutinitas ini untuk menemukan kecocokan pertama, tanpa referensi ke kasus, dan menggunakan rutinitas enumerasi, seperti RtlEnumerateGenericTableWithoutSplayingAvl, untuk mengembalikan setiap kecocokan berikutnya.
Secara default, sistem operasi menggunakan pohon splay untuk mengimplementasikan tabel generik, tetapi rutinitas RtlLookupFirstMatchingElementGenericTableAvlhanya berfungsi dengan pohon Adelson-Velsky/Landis (AVL). Dalam beberapa keadaan, operasi pada pohon splay akan membuat pohon dalam dan sempit dan bahkan mungkin mengubahnya menjadi garis lurus. Pohon yang sangat dalam menurunkan performa pencarian. Anda dapat memastikan implementasi pohon yang lebih seimbang dan dangkal dari tabel generik dengan menggunakan pohon Adelson-Velsky/Landis (AVL). Jika Anda ingin 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.
Pemanggil RtlLookupFirstMatchingElementGenericTableAvl harus berjalan pada <= APC_LEVEL jika salah satu kondisi berikut berlaku:
- Memori yang dialokasikan penelepon di Tabel atau di Buffer dapat di-pageable.
- CompareRoutine yang disediakan penelepon berisi kode yang dapat dipaginasi.
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Tersedia dimulai dengan Windows Vista. |
Target Platform | Universal |
Header | ntddk.h (termasuk FltKernel.h, Ntifs.h, Ntddk.h) |
Pustaka | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= APC_LEVEL (lihat bagian Keterangan) |