Bagikan melalui


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)

Lihat juga

RtlInitializeGenericTableAvl

RtlIsGenericTableEmptyAvl

RtlNumberGenericTableElementsAvl