Fungsi RtlLookupElementGenericTable (ntddk.h)
Rutinitas RtlLookupElementGenericTable mencari tabel generik untuk elemen yang cocok dengan data yang ditentukan.
Sintaks
NTSYSAPI PVOID RtlLookupElementGenericTable(
PRTL_GENERIC_TABLE Table,
PVOID Buffer
);
Parameter
Table
Penunjuk ke tabel generik (RTL_GENERIC_TABLE). Tabel harus telah diinisialisasi dengan memanggil RtlInitializeGenericTable.
Buffer
Buffer data pencarian untuk diteruskan ke CompareRoutine yang terdaftar ketika RtlInitializeGenericTable menginisialisasi tabel generik. Untuk informasi selengkapnya, lihat deskripsi RtlInitializeGenericTable.
Nilai kembali
RtlLookupElementGenericTable mengembalikan penunjuk ke data yang disediakan pemanggil untuk elemen yang diinginkan dalam tabel generik. Ini mengembalikan NULL jika tabel generik saat ini tidak memiliki elemen atau jika tidak ada elemen yang cocok yang ditemukan.
Keterangan
Jika elemen yang cocok ditemukan, RtlLookupElementGenericTable menyeimbangkan kembali pohon splay tabel generik.
Penelepon Rtl.. Rutinitas GenericTable 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. 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 tabel generik yang lebih seimbang dan dangkal 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 Anda tidak menentukan RTL_USE_AVL_TABLES seperti yang ditentukan di atas, Anda harus menggunakan formulir AVL dari rutinitas tabel generik. Misalnya, gunakan rutinitas RtlLookupElementGenericTableAvl alih-alih RtlLookupElementGenericTable. Dalam panggilan ke RtlLookupElementGenericTableAvl, pemanggil harus meneruskan struktur tabel RTL_AVL_TABLE daripada RTL_GENERIC_TABLE.
Penelepon RtlLookupElementGenericTable harus berjalan di IRQL < DISPATCH_LEVEL jika salah satu kondisi berikut ini berlaku:
Memori yang dialokasikan pemanggil di Tabel atau di Buffer dapat di-pageable.
CompareRoutine yang disediakan penelepon berisi kode yang dapat dipaginasi.
Jika tidak, penelepon RtlLookupElementGenericTable dapat berjalan di IRQL <= DISPATCH_LEVEL saat menggunakan memori atau kode non-halaman.
Persyaratan
Persyaratan | Nilai |
---|---|
Target Platform | Universal |
Header | ntddk.h (termasuk Ntddk.h, Ntifs.h) |
Pustaka | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | Lihat bagian Keterangan. |