Função ExInterlockedInsertHeadList (wdm.h)

A rotina ExInterlockedInsertHeadList insere atomicamente uma entrada no início de uma lista duplamente vinculada de estruturas LIST_ENTRY .

Sintaxe

PLIST_ENTRY ExInterlockedInsertHeadList(
  [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 da 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

ExInterlockedInsertHeadList 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

ExInterlockedInsertHeadList executa a mesma operação que InsertHeadList, 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 ExInterlockedInsertHeadList 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

ExInterlockedInsertTailList

ExInterlockedRemoveHeadList

InitializeListHead

InsertHeadList

KeInitializeSpinLock