Fungsi RtlLookupElementGenericTableFullAvl (ntddk.h)
Rutinitas RtlLookupElementGenericTableFullAvl mencari tabel generik untuk elemen yang cocok dengan data yang ditentukan.
Sintaks
NTSYSAPI PVOID RtlLookupElementGenericTableFullAvl(
[in] PRTL_AVL_TABLE Table,
[in] PVOID Buffer,
[out] PVOID *NodeOrParent,
[out] TABLE_SEARCH_RESULT *SearchResult
);
Parameter
[in] Table
Penunjuk ke tabel Adelson-Velsky/Landis (AVL) generik (RTL_AVL_TABLE). Tabel harus diinisialisasi dengan memanggil RtlInitializeGenericTableAvl.
[in] Buffer
Buffer data pencarian untuk diteruskan ke CompareRoutine yang terdaftar ketika RtlInitializeGenericTableAvl menginisialisasi tabel generik. Untuk informasi selengkapnya, lihat deskripsi RtlInitializeGenericTableAvl.
[out] NodeOrParent
Pada output, nilai yang menjelaskan hubungan NodeOrParent dengan entri tabel (simpul) yang dicari RtlLookupElementGenericTableFullAvl . Parameter SearchResult dapat memiliki salah satu nilai berikut:
TableEmptyTree
Pohonnya kosong. Isi NodeOrParentbelum diubah.
TableFoundNode
Rutinitas RtlLookupElementGenericTableFullAvl menemukan entri tabel yang kuncinya cocok dengan data di Buffer. NodeOrParent berisi penunjuk ke entri yang cocok.
TableInsertAsLeft
Rutinitas RtlLookupElementGenericTableFullAvltidakmenemukan entri tabel yang kuncinya cocok dengan data di Buffer. Sayatidakf entri yang dicari RtlLookupElementGenericTableFullAvl berada di tabel, itu akan menjadi anak kiri dari entri yang ditunjuk NodeOrParent .
TableInsertAsRight
Rutinitas RtlLookupElementGenericTableFullAvltidakmenemukan entri tabel yang kuncinya cocok dengan data di Buffer. Jika entri yang dicari RtlLookupElementGenericTableFullAvl berada dalam tabel, itu akan menjadi anak yang tepat dari entri yang ditunjuk NodeOrParent .
[out] SearchResult
Penunjuk ke entri tabel. Jika rutinitas RtlLookupElementGenericTableFullAvl cocok dengan entri, NodeOrParentmenunjuk ke entri yang cocok. Jika rutinitas RtlLookupElementGenericTableFullAvl gagal menemukan kecocokan, NodeOrParent menunjuk ke entri yang akan menjadi induk entri yang dicari rutinitas RtlLookupElementGenericTableFullAvl .
Nilai kembali
RtlLookupElementGenericTableFullAvl mengembalikan penunjuk ke data pengguna yang terkait dengan elemen yang cocok dalam tabel generik, atau NULL jika tabel generik saat ini tidak memiliki elemen atau jika tidak ada elemen yang cocok yang ditemukan.
Keterangan
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 bentuk AVL dari rutinitas tabel generik. Misalnya, gunakan rutinitas RtlLookupElementGenericTableFullAvl alih-alihRtlLookupElementGenericTable. Dalam panggilan ke RtlLookupElementGenericTableFullAvl, pemanggil harus melewati struktur tabel RTL_AVL_TABLE daripada RTL_GENERIC_TABLE.
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.
Pemanggil RtlLookupElementGenericTableFullAvl harus berjalan di IRQL < DISPATCH_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 XP. |
Target Platform | Universal |
Header | ntddk.h (termasuk Ntddk.h, Ntifs.h) |
Pustaka | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | < DISPATCH_LEVEL (lihat bagian Keterangan) |