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) |