Funzione RtlDeleteElementGenericTable (ntddk.h)
La routine RtlDeleteElementGenericTable elimina un elemento da una tabella generica.
Sintassi
NTSYSAPI BOOLEAN RtlDeleteElementGenericTable(
[in] PRTL_GENERIC_TABLE Table,
[in] PVOID Buffer
);
Parametri
[in] Table
Puntatore alla tabella generica (RTL_GENERIC_TABLE). La tabella deve essere stata inizializzata chiamando RtlInitializeGenericTable.
[in] Buffer
Puntatore a un buffer allocato dal chiamante contenente un valore che identifica in modo univoco l'elemento da eliminare.
Valore restituito
RtlDeleteElementGenericTable restituisceTRUE se l'elemento è stato eliminato correttamente, FALSE in caso contrario.
Commenti
RtlDeleteElementGenericTable chiama CompareRoutine e FreeRoutine registrati nella chiamata a RtlInitializeGenericTable.
Chiamanti del Rtl.. Le routine GenericTable sono responsabili della sincronizzazione esclusiva dell'accesso alla tabella generica. Un mutex veloce esclusivo è il meccanismo di sincronizzazione più efficiente da usare a questo scopo.
Per impostazione predefinita, il sistema operativo usa alberi splay per implementare tabelle generiche. In alcune circostanze, le operazioni su un albero splay renderanno l'albero profondo e stretto e potrebbe anche trasformarlo in una linea retta. Gli alberi molto profondi riducono le prestazioni delle ricerche. È possibile garantire un'implementazione albero più bilanciata e superficiale di tabelle generiche usando alberi Adelson-Velsky/Landis (AVL). Se si desidera configurare le routine di tabella generiche per l'uso di alberi AVL anziché alberi Splay nel driver, inserire l'istruzione define seguente in un file di intestazione comune prima di includere Ntddk.h:
#define RTL_USE_AVL_TABLES 0
Se RTL_USE_AVL_TABLES non è definito, è necessario utilizzare il formato AVL delle routine di tabella generiche. Ad esempio, utilizzare la routine RtlDeleteElementGenericTableAvl anziché RtlDeleteElementGenericTable. Nella chiamata a RtlDeleteElementGenericTableAvl il chiamante deve passare una struttura di tabella RTL_AVL_TABLE anziché RTL_GENERIC_TABLE.
I chiamanti di RtlDeleteElementGenericTable devono essere in esecuzione in IRQL < DISPATCH_LEVEL se una delle condizioni seguenti contiene:
- La memoria allocata dal chiamante in Table o in Buffer è paging.
- Il chiamante fornito da CompareRoutine o FreeRoutine contiene codice di paging.
Requisiti
Requisito | Valore |
---|---|
Piattaforma di destinazione | Universale |
Intestazione | ntddk.h (include Ntddk.h, Ntifs.h) |
Libreria | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | Vedere la sezione Osservazioni. |