Condividi tramite


Funzione ExInterlockedRemoveHeadList (wdm.h)

La routine ExInterlockedRemoveHeadList rimuove una voce dall'inizio di un elenco doubly collegato di strutture LIST_ENTRY .

Sintassi

PLIST_ENTRY ExInterlockedRemoveHeadList(
  [in, out] PLIST_ENTRY ListHead,
  [in, out] PKSPIN_LOCK Lock
);

Parametri

[in, out] ListHead

Puntatore alla struttura LIST_ENTRY che funge da intestazione dell'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

ExInterlockedRemoveHeadList restituisce un puntatore alla struttura LIST_ENTRY rimossa dall'elenco. Se l'elenco è vuoto, la routine restituisce NULL.

Commenti

ExInterlockedRemoveHeadList esegue un'operazione simile a RemoveHeadList, 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 ExInterlockedRemoveHeadList può essere chiamata in qualsiasi IRQL. Lo spazio di archiviazione per il parametro ListHead deve risiedere in tutti i valori IRQLs.

Requisiti

Requisito Valore
Client minimo supportato Disponibile a partire da Windows 2000.
Piattaforma di destinazione Universale
Intestazione wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
Libreria NtosKrnl.lib
DLL NtosKrnl.exe
IRQL Qualsiasi livello (vedere la sezione Osservazioni)

Vedi anche

ExInterlockedInsertHeadList

ExInterlockedInsertTailList

InitializeListHead

KeInitializeSpinLock

RemoveHeadList