Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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) |