Função ExInterlockedPushEntryList (wdm.h)

A rotina ExInterlockedPushEntryList insere atomicamente uma entrada no início de uma lista vinculada de estruturas SINGLE_LIST_ENTRY .

Sintaxe

PSINGLE_LIST_ENTRY ExInterlockedPushEntryList(
  [in, out] PSINGLE_LIST_ENTRY                  ListHead,
  [in, out] __drv_aliasesMem PSINGLE_LIST_ENTRY ListEntry,
  [in, out] PKSPIN_LOCK                         Lock
);

Parâmetros

[in, out] ListHead

Um ponteiro para a estrutura SINGLE_LIST_ENTRY que serve como o cabeçalho da lista. O armazenamento para ListHead deve ser residente em todas as IRQLs.

[in, out] ListEntry

Um ponteiro para a estrutura SINGLE_LIST_ENTRY que representa a entrada a ser inserida na lista. O armazenamento para ListEntry deve ser residente em todas as IRQLs.

[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

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

Comentários

ExInterlockedPushEntryList executa a mesma operação que PushEntryList, 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 vinculada, consulte Singly e Doubly Linked Listas.

A rotina ExInterlockedPushEntryList 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 da 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

ExInitializeSListHead

ExInterlockedInsertTailList

ExInterlockedPopEntryList

ExInterlockedPushEntrySList

KeInitializeSpinLock

PushEntryList