Funzione ExInterlockedInsertHeadList (wdm.h)
La routine ExInterlockedInsertHeadList inserisce atomicamente una voce all'inizio di un elenco collegato doubly di strutture LIST_ENTRY .
Sintassi
PLIST_ENTRY ExInterlockedInsertHeadList(
[in, out] PLIST_ENTRY ListHead,
[in, out] __drv_aliasesMem PLIST_ENTRY ListEntry,
[in, out] PKSPIN_LOCK Lock
);
Parametri
[in, out] ListHead
Puntatore alla struttura LIST_ENTRY che funge da intestazione dell'elenco.
[in, out] ListEntry
Puntatore alla struttura LIST_ENTRY che rappresenta la voce da inserire nell'elenco.
[in, out] Lock
Puntatore a una struttura KSPIN_LOCK che funge da blocco di selezione utilizzato per sincronizzare l'accesso all'elenco. Lo spazio di archiviazione per il blocco di rotazione deve essere residente e deve essere stato inizializzato chiamando KeInitializeSpinLock. È necessario utilizzare questo blocco spin solo con le routine ElencoXxxExInterlocked .
Valore restituito
ExInterlockedInsertHeadList restituisce un puntatore alla prima voce dell'elenco prima dell'inserimento della nuova voce. Se l'elenco è vuoto, la routine restituisce NULL.
Commenti
ExInterlockedInsertHeadList esegue la stessa operazione di InsertHeadList, ma in modo atomico. Non combinare chiamate atomiche e non atomiche nello stesso elenco.
Per altre informazioni sull'uso di questa routine per implementare un elenco collegato doubly, vedere Singly e Doubly Linked Elenchi.
La routine ExInterlockedInsertHeadList può essere chiamata in qualsiasi IRQL. L'archiviazione per il parametro ListHead e le voci dell'elenco devono risiedere in tutti i valori IRQLs.