Função ExInterlockedInsertTailList (wdm.h)

A rotina ExInterlockedInsertTailList insere atomicamente uma entrada no final de uma lista duplamente vinculada de estruturas LIST_ENTRY .

Sintaxe

PLIST_ENTRY ExInterlockedInsertTailList(
  [in, out] PLIST_ENTRY                  ListHead,
  [in, out] __drv_aliasesMem PLIST_ENTRY ListEntry,
  [in, out] PKSPIN_LOCK                  Lock
);

Parâmetros

[in, out] ListHead

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

[in, out] ListEntry

Um ponteiro para a estrutura LIST_ENTRY que representa a entrada a ser inserida na 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

ExInterlockedInsertTailList retorna um ponteiro para a última entrada da lista antes da nova entrada ser inserida. Se a lista estiver vazia, a rotina retornará NULL.

Comentários

ExInterlockedInsertTailList executa a mesma operação que InsertTailList, 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 ExInterlockedInsertTailList pode ser chamada em qualquer IRQL. O armazenamento para o parâmetro ListHead e as entradas de lista devem ser residentes 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)
Regras de conformidade de DDI IoAllocateFree(wdm), IoReuseIrp(wdm), MarkingInterlockedQueuedIrps(wdm), RemoveLockCheck(wdm), RemoveLockForward(wdm), RemoveLockForward2(wdm), RemoveLockForwardDeviceControl(wdm), RemoveLockForwardDeviceControl2(wdm), RemoveLockForwardDeviceControlInternal(wdm), RemoveLockForwardDeviceControlInternal2(wdm), RemoveLockForwardRead(wdm), RemoveLockForwardRead2(wdm), RemoveLockForwardWrite(wdm), RemoveLockForwardWrite2(wdm), RemoveLockRelease2(wdm), RemoveLockReleaseCleanup(wdm), RemoveLockReleaseClose(wdm), RemoveLockReleaseCreate(wdm), RemoveLockReleaseDeviceControl(wdm), RemoveLockReleaseInternalDeviceControl(wdm), RemoveLockReleasePower(wdm), RemoveLockReleaseRead(wdm), RemoveLockReleaseShutdown(wdm), RemoveLockReleaseSystemControl(wdm), RemoveLockReleaseWrite(wdm)

Confira também

ExInterlockedInsertHeadList

InitializeListHead

InsertTailList

KeInitializeSpinLock