Condividi tramite


Funzione ExInterlockedPushEntryList (wdm.h)

La routine ExInterlockedPushEntryList inserisce una voce all'inizio di un elenco collegato singly di strutture SINGLE_LIST_ENTRY .

Sintassi

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

Parametri

[in, out] ListHead

Puntatore alla struttura SINGLE_LIST_ENTRY che funge da intestazione elenco. L'archiviazione per ListHead deve essere residente in tutti i file IRQLs.

[in, out] ListEntry

Puntatore alla struttura SINGLE_LIST_ENTRY che rappresenta la voce da inserire nell'elenco. L'archiviazione per ListEntry deve essere residente in tutti i file IRQLs.

[in, out] Lock

Puntatore a una struttura KSPIN_LOCK che funge da blocco di rotazione usato per sincronizzare l'accesso all'elenco. L'archiviazione per il blocco spin deve essere residente e deve essere stata inizializzata chiamando KeInitializeSpinLock. È necessario usare questo blocco di spin solo con le routine Di elencoXxxexInterlocked .

Valore restituito

ExInterlockedPushEntryList restituisce un puntatore alla prima voce dell'elenco prima dell'inserimento della nuova voce. Se l'elenco è vuoto, la routine restituisce NULL.

Commenti

ExInterlockedPushEntryList esegue la stessa operazione di PushEntryList, ma atomicamente. Non combinare chiamate atomiche e non atomiche nello stesso elenco.

Per altre informazioni sull'uso di questa routine per implementare un elenco collegato singly, vedere Singly e Doubly Linked Elenchi.

La routine ExInterlockedPushEntryList può essere chiamata in qualsiasi IRQL. L'archiviazione per il parametro ListHead e le voci dell'elenco devono essere residenti in tutti gli ELENCHI di integrazione.

Requisiti

Requisito Valore
Client minimo supportato Disponibile a partire da Windows 2000.
Piattaforma di destinazione Universale
Intestazione wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
Libreria NtosKrnl.lib
DLL NtosKrnl.exe
IRQL Qualsiasi livello (vedere la sezione Osservazioni)
Regole di conformità 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)

Vedi anche

ExInitializeSListHead

ExInterlockedInsertTailList

ExInterlockedPopEntryList

ExInterlockedPushEntrySList

KeInitializeSpinLock

PushEntryList