Fungsi RtlGetElementGenericTableAvl (ntddk.h)
Rutinitas RtlGetElementGenericTableAvl mengembalikan pointer ke data yang disediakan penelepon untuk elemen tabel Adelson-Velsky/Landis (AVL) generik tertentu.
Sintaks
NTSYSAPI PVOID RtlGetElementGenericTableAvl(
[in] PRTL_AVL_TABLE Table,
[in] ULONG I
);
Parameter
[in] Table
Penunjuk ke tabel AVL generik (RTL_AVL_TABLE) tempat elemen Ith akan diambil. Tabel harus diinisialisasi dengan memanggil RtlInitializeGenericTableAvl.
[in] I
Indeks elemen yang dipilih. Nilai ini berbasis nol, sehingga indeks elemen terakhir yang disisipkan saat ini dalam Tabel selalu kurang dari nilai yang dikembalikan oleh RtlNumberGenericTableElementsAvl.
Nilai kembali
RtlGetElementGenericTableAvl mengembalikan pointer ke data yang disediakan pemanggil untuk elemen Ith dalam tabel AVL generik. Ini mengembalikan NULL jika saya yang diberikan terlalu besar atau jika tabel AVL generik saat ini tidak memiliki elemen.
Keterangan
RtlGetElementGenericTableAvl mengembalikan elemen Ith yang disisipkan dalam tabel AVL generik. Untuk mengambil elemen pertama, atur I ke nol. Untuk mengambil elemen terakhir, atur I ke (RtlNumberGenericTableElementsAvl(Table)-1). Perhatikan bahwa jika elemen dihapus dari tabel generik, indeks semua elemen yang disisipkan setelah elemen yang dihapus dikurangi. Dengan demikian indeks elemen mungkin berubah dari waktu ke waktu.
RtlGetElementGenericTableAvl lebih efisien daripada RtlLookupElementGenericTableAvl jika penelepon dapat menyediakan indeks elemen tertentu yang pemanggilnya membutuhkan akses ke data terkait. Namun, memanggil RtlGetElementGenericTableAvl berulang kali untuk menguji elemen tersebut kurang efisien daripada memanggil RtlLookupElementGenericTableAvl untuk menemukannya.
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 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. Misalnya, gunakan rutinitas RtlGetElementGenericTableAvl alih-alih RtlGetElementGenericTable. Dalam panggilan ke RtlGetElementGenericTableAvl, pemanggil harus melewati struktur tabel RTL_AVL_TABLE daripada RTL_GENERIC_TABLE.
Pemanggil RtlGetElementGenericTableAvl harus berjalan di IRQL < DISPATCH_LEVEL jika memori yang dialokasikan pemanggil untuk tabel generik dapat dipaginasi.
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Tersedia dengan Windows XP. |
Target Platform | Universal |
Header | ntddk.h (termasuk Ntddk.h, Ntifs.h) |
Pustaka | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | Tingkat apa pun (Lihat Komentar) |
Lihat juga
RtlDeleteElementGenericTableAvl
RtlEnumerateGenericTableWithoutSplayingAvl
RtlInsertElementGenericTableAvl