Fungsi RtlDeleteElementGenericTable (ntddk.h)

Rutinitas RtlDeleteElementGenericTable menghapus elemen dari tabel generik.

Sintaks

NTSYSAPI BOOLEAN RtlDeleteElementGenericTable(
  [in] PRTL_GENERIC_TABLE Table,
  [in] PVOID              Buffer
);

Parameter

[in] Table

Penunjuk ke tabel generik (RTL_GENERIC_TABLE). Tabel harus telah diinisialisasi dengan memanggil RtlInitializeGenericTable.

[in] Buffer

Penunjuk ke buffer yang dialokasikan penelepon yang berisi nilai yang secara unik mengidentifikasi elemen yang akan dihapus.

Nilai kembali

RtlDeleteElementGenericTable mengembalikan TRUE jika elemen berhasil dihapus, FALSE jika tidak.

Keterangan

RtlDeleteElementGenericTable memanggil CompareRoutine dan FreeRoutine yang terdaftar dalam panggilan ke RtlInitializeGenericTable.

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 RTL_USE_AVL_TABLES tidak ditentukan, Anda harus menggunakan formulir AVL dari rutinitas tabel generik. Misalnya, gunakan rutinitas RtlDeleteElementGenericTableAvl alih-alih RtlDeleteElementGenericTable. Dalam panggilan ke RtlDeleteElementGenericTableAvl, pemanggil harus meneruskan struktur tabel RTL_AVL_TABLE daripada RTL_GENERIC_TABLE.

Penelepon RtlDeleteElementGenericTable harus berjalan di IRQL < DISPATCH_LEVEL jika salah satu kondisi berikut berlaku:

  • Memori yang dialokasikan pemanggil di Tabel atau di Buffer dapat di-pageable.
  • CompareRoutine atau FreeRoutine 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 Lihat bagian Keterangan.

Lihat juga

RtlInitializeGenericTable

RtlInsertElementGenericTable