Compartilhar via


Macro ExInterlockedPushEntrySList (wdm.h)

A rotina ExInterlockedPushEntrySList insere atomicamente uma entrada no início de uma lista vinculada sequenciada.

Sintaxe

NTKERNELAPI
PSLIST_ENTRY
FASTCALL
ExInterlockedPushEntrySList (
    _Inout_ PSLIST_HEADER ListHead,
    _Inout_ __drv_aliasesMem PSLIST_ENTRY ListEntry,
    _Inout_opt_ _Requires_lock_not_held_(*_Curr_) PKSPIN_LOCK Lock
    );

Parâmetros

ListHead

Um ponteiro para a estrutura SLIST_HEADER que serve como o cabeçalho da lista vinculada sequenciada. ListHead deve ter sido inicializado chamando ExInitializeSListHead.

ListEntry

Um ponteiro para a entrada alocada pelo chamador a ser inserida.

[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

Se houver entradas na lista especificada, ExInterlockedPushEntrySList retornará um ponteiro para o primeiro SLIST_ENTRY estrutura que era uma entrada na lista; caso contrário, retornará NULL.

Comentários

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

No Windows 2000, os drivers devem usar a opção -D_WIN2K_COMPAT_SLIST_USAGE para vincular com êxito o código que usa ExInterlockedPushEntrySList.

A rotina ExInterlockedPushEntrySList 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)

Confira também

ExInitializeSListHead

ExInterlockedInsertTailList

ExInterlockedPopEntrySList

ExQueryDepthSList

KeInitializeSpinLock