Bagikan melalui


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)

Lihat juga

RtlEnumerateGenericTableWithoutSplayingAvl