Macro NdisInterlockedInsertTailList (ndis.h)
La función NdisInterlockedInsertTailList inserta una entrada, normalmente un paquete, en la cola de una lista vinculada doblemente para que el acceso a la lista se sincronice de forma segura para varios procesadores.
Sintaxis
void NdisInterlockedInsertTailList(
[in] _ListHead,
[in] _ListEntry,
[in] _SpinLock
);
Parámetros
[in] _ListHead
Puntero al encabezado de la lista vinculada doblemente en la que se va a insertar una entrada.
[in] _ListEntry
Puntero a la entrada que se va a insertar al final de la lista.
[in] _SpinLock
Puntero a un bloqueo de número proporcionado por el autor de la llamada, que se usa para sincronizar el acceso a la lista.
Valor devuelto
None
Observaciones
Antes de llamar a NdisInterlockedInsertTailList, un controlador debe inicializar la variable en ListHead con la función NdisInitializeListHead y la variable en SpinLock con la función NdisAllocateSpinLock . El controlador también debe proporcionar almacenamiento residente para estas variables y para su cola interna.
El bloqueo de número proporcionado por el autor de la llamada impide que cualquier otra función acceda a la cola interna del controlador mientras NdisInterlockedInsertTailList inserta la entrada especificada, incluso cuando el controlador se ejecuta en una máquina multiprocesador.
NdisInterlockedInsertTailList genera irQL para DISPATCH_LEVEL cuando adquiere el bloqueo de número especificado y restaura el IRQL original antes de devolver el control. Por lo tanto, cualquier función de controlador que llame a NdisInterlockedInsertTailList no puede ser código paginable.
Para convertir un valor devuelto en la dirección de la entrada insertada, un controlador puede usar la macro CONTAINING_RECORD .
Si se llama a NdisInterlockedInsertTailList en IRQL >= DISPATCH_LEVEL, el almacenamiento para el parámetro ListHead y las entradas de lista deben estar residentes.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Compatible con los controladores NDIS 6.0 y NDIS 5.1 (consulta NdisInterlockedInsertTailList (NDIS 5.1)) en Windows Vista. Compatible con los controladores NDIS 5.1 (consulte NdisInterlockedInsertTailList (NDIS 5.1)) en Windows XP. |
Plataforma de destino | Universal |
Encabezado | ndis.h (incluya Ndis.h) |
Library | Ndis.lib |
IRQL | Cualquier nivel |