Bagikan melalui


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.

Lihat juga

RTL_AVL_TABLE

RTL_GENERIC_TABLE

RtlInitializeGenericTable

RtlIsGenericTableEmpty

RtlNumberGenericTableElements