Función NdisInitializeNPagedLookasideList (ndis.h)

La función NdisInitializeNPagedLookasideList inicializa una lista de aspecto. 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 búsqueda.

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 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 Allocate proporcionada por el autor de la llamada que asignará una entrada del tamaño especificado en el miembro Size cada vez que se llame a ella. Si Allocate es NULL, La función NdisAllocateFromNPagedLookasideList asigna posteriormente entradas en nombre del autor de la llamada. Si el autor de la llamada proporciona una función Allocate , también debe proporcionar una función Free .

[in, optional] Free

Un punto de entrada de función que es NULL o especifica el punto de entrada de una función Free proporcionada por el autor de la llamada que liberará una entrada del tamaño especificado en el miembro Size cada vez que se llame a ella. Si Free es NULL, La función NdisFreeToNPagedLookasideList 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 de búsqueda.

[in] Tag

Una etiqueta de grupo proporcionada por el autor de la llamada para las entradas de la lista lookaside. La etiqueta 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

None

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 Allocate proporcionada por el controlador en el parámetro Allocate . La lista se rellena cuando el controlador libera las entradas de vuelta a la lista con la 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 por NdisFreeToNPagedLookasideList o con llamadas a la función de devolución de llamada Gratuita proporcionada por el controlador en el parámetro Free .

Todas las entradas de la lista de aspecto 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 búsqueda 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 que un controlador permita el NdisAllocateFromNPagedLookasideList y NdisFreeToNPagedLookasideList funciona 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 funciones Allocate y Free a NdisInitializeNPagedLookasideList.

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

Requisitos

Requisito Value
Cliente mínimo compatible Compatible con controladores NDIS 6.0 y NDIS 5.1 (consulte NdisInitializeNPagedLookasideList (NDIS 5.1)) en Windows Vista. Compatible con los controladores NDIS 5.1 (consulte NdisInitializeNPagedLookasideList (NDIS 5.1)) en Windows XP.
Plataforma de destino Escritorio
Encabezado 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