Compartir a través de


Función NdisInitializeNPagedLookasideList (ndis.h)

La función NdisInitializeNPagedLookasideList inicializa una lista de lookaside. Después de una inicialización correcta, los bloques de tamaño fijo no paginados se pueden asignar desde y liberarse a la lista de lookaside.

Sintaxis

void NdisInitializeNPagedLookasideList(
  [in]           PNPAGED_LOOKASIDE_LIST Lookaside,
  [in, optional] PALLOCATE_FUNCTION     Allocate,
  [in, optional] PFREE_FUNCTION         Free,
  [in]           ULONG                  Flags,
  [in]           SIZE_T                 Size,
  [in]           ULONG                  Tag,
  [in]           USHORT                 Depth
);

Parámetros

[in] Lookaside

Puntero a una estructura de NPAGED_LOOKASIDE_LIST que contiene el encabezado de lista de lookaside proporcionado por el autor de la llamada que se va a inicializar. La estructura debe estar alineada con 16 bytes en plataformas de 64 bits. El controlador debe proporcionar un encabezado de lista que sea residente, es decir, en el espacio del sistema no paginado.

[in, optional] Allocate

Un punto de entrada de función que es NULL o especifica el punto de entrada de una función de proporcionada por el autor de la llamada que asignará una entrada del tamaño especificado en el Size miembro siempre que se llame a él. Si Asignar es null, función NdisAllocateFromNPagedLookasideList asigna posteriormente entradas en nombre del autor de la llamada. Si el autor de la llamada proporciona una función Asignar, también debe proporcionar una función Free.

[in, optional] Free

Punto de entrada de función que es NULL o especifica el punto de entrada de una función de gratuita proporcionada por el autor de la llamada que liberará una entrada del tamaño especificado en el Size miembro cada vez que se llame a él. Si gratis es null, NdisFreeToNPagedLookasideList función libera posteriormente entradas en nombre del autor de la llamada.

[in] Flags

Debe ser cero. Este parámetro está reservado.

[in] Size

Tamaño, en bytes, de cada entrada que se va a asignar posteriormente desde la lista lookaside.

[in] Tag

Una etiqueta de grupo proporcionada por el autor de la llamada para las entradas de la lista lookaside. El Tag es una cadena de cuatro caracteres delimitada por comillas simples (por ejemplo, "derF"). Normalmente, los caracteres se especifican en orden inverso, por lo que son más fáciles de leer al volcar el uso del grupo o del grupo de seguimiento en el depurador.

[in] Depth

Debe ser cero. Este parámetro también está reservado.

Valor devuelto

Ninguno

Observaciones

NdisInitializeNPagedLookasideList inicializa el encabezado de lista proporcionado por el autor de la llamada, pero no asigna memoria para las entradas de lista. Las entradas iniciales se asignan según sea necesario, ya sea con llamadas a . función NdisAllocateFromNPagedLookasideList o por la función de devolución de llamada proporcionada por el controlador en el parámetro Allocate. La lista se rellena a medida que el controlador libera entradas a la lista con el función NdisFreeToNPagedLookasideList. Las entradas se recopilan en la lista hasta que se alcanza un límite de tamaño dinámico pero determinado por el sistema. A continuación, las entradas sobrantes de la lista de lookaside se devuelven al grupo no paginado, ya sea mediante NdisFreeToNPagedLookasideList o con llamadas a la función de devolución de llamada free proporcionada por el controlador en el parámetro Free.

Todas las entradas de la lista lookaside tienen el mismo tamaño, que se especifica en el parámetro Size. Una lista de aspecto es especialmente útil para los controladores que deben asignar dinámicamente y liberar áreas de contexto de tamaño fijo en las que mantener el estado en tiempo de ejecución sobre sus operaciones de E/S pendientes. Por ejemplo, es probable que los controladores NDIS orientados a la conexión encuentren listas de lookaside especialmente útiles porque estos controladores suelen mantener un conjunto dinámico de áreas de contexto para realizar un seguimiento de las llamadas salientes y entrantes.

Es más eficaz para que un controlador permita el NdisAllocateFromNPagedLookasideList y funciones de NdisFreeToNPagedLookasideList para administrar la asignación y desasignación de entradas (consulte las funciones ExAllocatePoolWithTag y ExFreePool). Sin embargo, un controlador que realiza un seguimiento del estado internamente sobre su uso de memoria podría proporcionar Asignar y funciones de gratis para NdisInitializeNPagedLookasideList.

Los autores de llamadas de NdisInitializeNPagedLookasideList deben ejecutarse en IRQL <= DISPATCH_LEVEL, pero normalmente se ejecutan en PASSIVE_LEVEL.

Requisitos

Requisito Valor
cliente mínimo admitido Compatible con los controladores NDIS 6.0 y NDIS 5.1 (consulte NdisInitializeNPagedLookasideList (NDIS 5.1)) en Windows Vista. Compatible con controladores NDIS 5.1 (consulte NdisInitializeNPagedLookasideList (NDIS 5.1)) en Windows XP.
de la plataforma de destino de Escritorio
encabezado de ndis.h (incluya Ndis.h)
irQL <= DISPATCH_LEVEL (consulte la sección Comentarios)
reglas de cumplimiento de DDI Irql_Miscellaneous_Function(ndis)

Consulte también

ExAllocatePoolWithTag

ExFreePool

NPAGED_LOOKASIDE_LIST

NdisAllocateFromNPagedLookasideList NdisDeleteNPagedLookasideList NdisFreeToNPagedLookasideList