Función ExInterlockedPushEntryList (wdm.h)
La rutina ExInterlockedPushEntryList inserta de forma atómica una entrada al principio de una lista vinculada singly de estructuras de SINGLE_LIST_ENTRY .
Sintaxis
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
Puntero a la estructura SINGLE_LIST_ENTRY que actúa como encabezado de lista. El almacenamiento de ListHead debe estar residente en todos los IRQL.
[in, out] ListEntry
Puntero a la estructura SINGLE_LIST_ENTRY que representa la entrada que se va a insertar en la lista. El almacenamiento de ListEntry debe estar residente en todos los IRQLs.
[in, out] Lock
Puntero a una estructura de KSPIN_LOCK que actúa como bloqueo de número usado para sincronizar el acceso a la lista. El almacenamiento del bloqueo de número debe ser residente y debe haberse inicializado llamando a KeInitializeSpinLock. Debe usar este bloqueo de número solo con las rutinas ExInterlockedXxxList .
Valor devuelto
ExInterlockedPushEntryList devuelve un puntero a la primera entrada de la lista antes de insertar la nueva entrada. Si la lista estaba vacía, la rutina devuelve NULL.
Comentarios
ExInterlockedPushEntryList realiza la misma operación que PushEntryList, pero atómicamente. No mezcle llamadas atómicas y no atómicas en la misma lista.
Para obtener más información sobre cómo usar esta rutina para implementar una lista vinculada singly, consulte Singly and Duplicay Linked Listas.
Se puede llamar a la rutina ExInterlockedPushEntryList en cualquier IRQL. El almacenamiento para el parámetro ListHead y las entradas de lista deben residir en todos los IRQL.