Compartir a través de


Función ExInterlockedRemoveHeadList (wdm.h)

La rutina ExInterlockedRemoveHeadList quita una entrada desde el principio de una lista doblemente vinculada de estructuras de LIST_ENTRY.

Sintaxis

PLIST_ENTRY ExInterlockedRemoveHeadList(
  [in, out] PLIST_ENTRY ListHead,
  [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] 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

ExInterlockedRemoveHeadList devuelve un puntero a la estructura LIST_ENTRY quitada de la lista. Si la lista estaba vacía, la rutina devuelve NULL.

Observaciones

ExInterlockedRemoveHeadList realiza una operación similar a RemoveHeadList, pero de forma atómica. 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 ExInterlockedRemoveHeadList en cualquier IRQL. El almacenamiento del parámetro ListHead debe estar residente en todos los IRQLs.

Requisitos

Requisito Valor
cliente mínimo admitido Disponible a partir de Windows 2000.
de la plataforma de destino de Universal
encabezado de wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
biblioteca de NtosKrnl.lib
DLL de NtosKrnl.exe
irQL Cualquier nivel (consulte la sección Comentarios)

Consulte también

ExInterlockedInsertHeadList

ExInterlockedInsertTailList

initializeListHead

keInitializeSpinLock

RemoveHeadList