Compartilhar via


Função ExInterlockedRemoveHeadList (wdm.h)

A rotina ExInterlockedRemoveHeadList remove uma entrada do início de uma lista duplamente vinculada de estruturas LIST_ENTRY .

Sintaxe

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

Parâmetros

[in, out] ListHead

Um ponteiro para a estrutura LIST_ENTRY que serve como o cabeçalho da lista.

[in, out] Lock

Um ponteiro para uma estrutura KSPIN_LOCK que serve como o bloqueio de rotação usado para sincronizar o acesso à lista. O armazenamento do bloqueio de rotação deve ser residente e deve ter sido inicializado chamando KeInitializeSpinLock. Você deve usar esse bloqueio de rotação somente com as rotinas da ListaXxxExInterlocked .

Retornar valor

ExInterlockedRemoveHeadList retorna um ponteiro para a estrutura LIST_ENTRY removida da lista. Se a lista estiver vazia, a rotina retornará NULL.

Comentários

ExInterlockedRemoveHeadList executa uma operação semelhante a RemoveHeadList, mas atomicamente. Não misture chamadas atômicas e não atômicas na mesma lista.

Para obter mais informações sobre como usar essa rotina para implementar uma lista duplamente vinculada, consulte Singly e Doubly Linked Listas.

A rotina ExInterlockedRemoveHeadList pode ser chamada em qualquer IRQL. O armazenamento do parâmetro ListHead deve ser residente em todas as IRQLs.

Requisitos

Requisito Valor
Cliente mínimo com suporte Disponível a partir do Windows 2000.
Plataforma de Destino Universal
Cabeçalho wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
Biblioteca NtosKrnl.lib
DLL NtosKrnl.exe
IRQL Qualquer nível (consulte a seção Comentários)

Confira também

ExInterlockedInsertHeadList

ExInterlockedInsertTailList

InitializeListHead

KeInitializeSpinLock

RemoveHeadList