Compartir a través de


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

Consulte también

CONTAINING_RECORD

NdisAllocateSpinLock

NdisInitializeListHead

NdisInterlockedInsertHeadList NdisInterlockedRemoveHeadList