Función ExInterlockedInsertTailList (wdm.h)
El ExInterlockedInsertTailList rutina inserta de forma atómica una entrada al final de una lista doblemente vinculada de estructuras de LIST_ENTRY.
Sintaxis
PLIST_ENTRY ExInterlockedInsertTailList(
[in, out] PLIST_ENTRY ListHead,
[in, out] __drv_aliasesMem PLIST_ENTRY ListEntry,
[in, out] PKSPIN_LOCK Lock
);
Parámetros
[in, out] ListHead
Puntero a la estructura LIST_ENTRY que actúa como encabezado de lista.
[in, out] ListEntry
Puntero a la estructura LIST_ENTRY que representa la entrada que se va a insertar en la lista.
[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 estar residente y debe haberse inicializado llamando a KeInitializeSpinLock. Debe usar este bloqueo de giro solo con las rutinas deXxxList ExInterlocked.
Valor devuelto
ExInterlockedInsertTailList devuelve un puntero a la última entrada de la lista antes de se insertó la nueva entrada. Si la lista estaba vacía, la rutina devuelve NULL.
Observaciones
ExInterlockedInsertTailList realiza la misma operación que InsertTailList, pero atómicamente. No combine llamadas atómicas y no atómicas en la misma lista.
Para obtener más información sobre el uso de esta rutina para implementar una lista vinculada doble, consulte listas vinculadas duplicadas y duplicadas.
Se puede llamar a la rutina ExInterlockedInsertTailList en cualquier IRQL. El almacenamiento del parámetro ListHead de y las entradas de lista deben estar residentes en todos los IRQL.