Bagikan melalui


Fungsi RtlLookupElementGenericTableAvl (ntddk.h)

Rutinitas RtlLookupElementGenericTableAvl mencari tabel generik untuk elemen yang cocok dengan data yang ditentukan.

Sintaks

NTSYSAPI PVOID RtlLookupElementGenericTableAvl(
  [in] PRTL_AVL_TABLE Table,
  [in] PVOID          Buffer
);

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.

Nilai kembali

RtlLookupElementGenericTableAvl mengembalikan penunjuk ke data pengguna yang terkait dengan elemen pencocokan 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 RtlLookupElementGenericTableAvl 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 RtlLookupElementGenericTableAvl alih-alih RtlLookupElementGenericTable. Dalam panggilan ke RtlLookupElementGenericTableAvl, 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 RtlLookupElementGenericTableAvl harus berjalan di IRQL < DISPATCH_LEVEL jika salah satu kondisi berikut ini 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
Target Platform Universal
Header ntddk.h (termasuk Ntddk.h, Ntifs.h)
Pustaka NtosKrnl.lib
DLL NtosKrnl.exe
IRQL DISPATCH_LEVEL IRQL < (lihat bagian Keterangan)

Lihat juga

RtlInitializeGenericTableAvl

RtlIsGenericTableEmptyAvl

RtlNumberGenericTableElementsAvl