Ler em inglês

Compartilhar via


Função NdisInitializeNPagedLookasideList (ndis.h)

A função NdisInitializeNPagedLookasideList inicializa uma lista lookaside. Após uma inicialização bem-sucedida, blocos de tamanho fixo nãopagados podem ser alocados e liberados para a lista lookaside.

Sintaxe

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

Um ponteiro para uma estrutura NPAGED_LOOKASIDE_LIST que contém a cabeça da lista lookaside fornecida pelo chamador a ser inicializada. A estrutura deve estar alinhada a 16 bytes em plataformas de 64 bits. O driver deve fornecer um cabeçalho de lista que seja residente, ou seja, no espaço do sistema nãopagado.

[in, optional] Allocate

Um ponto de entrada de função que é NULL ou especifica o ponto de entrada de uma função Allocate fornecida pelo chamador que alocará uma entrada do tamanho especificado no membro tamanho do sempre que for chamado. Se Alocar for NULL, o função NdisAllocateFromNPagedLookasideList aloca posteriormente entradas em nome do chamador. Se o chamador fornecer uma função Allocate, ele também deverá fornecer uma função Free.

[in, optional] Free

Um ponto de entrada de função que é NULL ou especifica o ponto de entrada de uma função Free fornecida pelo chamador que liberará uma entrada do tamanho especificado no membro tamanho do sempre que for chamado. Se Gratuito for NULL, o função NdisFreeToNPagedLookasideList posteriormente libera entradas em nome do chamador.

[in] Flags

Deve ser zero. Esse parâmetro é reservado.

[in] Size

O tamanho, em bytes, de cada entrada a ser alocada posteriormente da lista lookaside.

[in] Tag

Uma marca de pool fornecida pelo chamador para entradas de lista lookaside. O de Marca de é uma cadeia de caracteres de quatro caracteres delimitada por aspas simples (por exemplo, 'derF'). Os caracteres geralmente são especificados em ordem inversa para que sejam mais fáceis de ler ao despejar o pool ou acompanhar o uso do pool no depurador.

[in] Depth

Deve ser zero. Esse parâmetro também é reservado.

Valor de retorno

Nenhum

Observações

NdisInitializeNPagedLookasideList inicializa o cabeçalho da lista fornecida pelo chamador, mas não aloca memória para entradas de lista. As entradas iniciais são alocadas conforme o necessário com chamadas para o função NdisAllocateFromNPagedLookasideList ou pela função de retorno de chamada Allocate fornecida pelo driver no parâmetro Allocate. A lista é preenchida à medida que o driver libera entradas de volta para a lista com o função NdisFreeToNPagedLookasideList. As entradas são coletadas na lista até que um limite determinado pelo sistema, mas dimensionado dinamicamente, seja atingido. Em seguida, todas as entradas excedentes na lista lookaside são retornadas ao pool nãopagado, seja por NdisFreeToNPagedLookasideList ou com chamadas para a função de retorno de chamada Free fornecida pelo driver no parâmetro Free.

Todas as entradas na lista lookaside são do mesmo tamanho, que é especificada no parâmetro Size. Uma lista lookaside é particularmente útil para drivers que devem alocar dinamicamente e áreas de contexto de tamanho fixo livre nas quais manter o estado de tempo de execução sobre suas operações de E/S pendentes. Por exemplo, os drivers NDIS orientados à conexão provavelmente encontrarão listas lookaside particularmente úteis porque esses drivers geralmente mantêm um conjunto dinâmico de áreas de contexto para acompanhar chamadas de saída e entrada.

É mais eficiente para um driver permitir o NdisAllocateFromNPagedLookasideList e funções NdisFreeToNPagedLookasideList para gerenciar a alocação e desalocação de entradas (consulte as funções ExAllocatePoolWithTag e exFreePool). No entanto, um driver que rastreia o estado internamente sobre seu uso de memória pode fornecer alocar e funções de gratuito para NdisInitializeNPagedLookasideList.

Os chamadores de NdisInitializeNPagedLookasideList devem estar em execução no IRQL <= DISPATCH_LEVEL, mas geralmente são executados em PASSIVE_LEVEL.

Requisitos

Requisito Valor
de cliente com suporte mínimo Com suporte para drivers NDIS 6.0 e NDIS 5.1 (consulte NdisInitializeNPagedLookasideList (NDIS 5.1)) no Windows Vista. Com suporte para drivers NDIS 5.1 (consulte NdisInitializeNPagedLookasideList (NDIS 5.1)) no Windows XP.
da Plataforma de Destino Área de trabalho
cabeçalho ndis.h (inclua Ndis.h)
IRQL <= DISPATCH_LEVEL (consulte a seção Comentários)
regras de conformidade de DDI Irql_Miscellaneous_Function(ndis)

Consulte também

ExAllocatePoolWithTag

ExFreePool

NPAGED_LOOKASIDE_LIST

NdisAllocateFromNPagedLookasideList NdisDeleteNPagedLookasideList NdisFreeToNPagedLookasideList