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 o cabeçalho da lista lookaside fornecida pelo chamador a ser inicializado. A estrutura deve estar alinhada a 16 bytes em plataformas de 64 bits. O driver deve fornecer um cabeçalho de lista 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 Size sempre que for chamado. Se Allocate for NULL, oA função NdisAllocateFromNPagedLookasideList aloca subsequentemente entradas em nome do chamador. Se o chamador fornecer uma função Allocate , ele também deverá fornecer uma função Gratuita .
[in, optional] Free
Um ponto de entrada de função que é NULL ou especifica o ponto de entrada de uma função Gratuita fornecida pelo chamador que liberará uma entrada do tamanho especificado no membro Size sempre que for chamado. Se Gratuito for NULL, oA função NdisFreeToNPagedLookasideList libera posteriormente 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 subsequentemente da lista lookaside.
[in] Tag
Uma marca de pool fornecida pelo chamador para entradas de lista lookaside. A Marca é uma cadeia de caracteres de quatro caracteres delimitada por aspas simples (por exemplo, 'derF'). Os caracteres geralmente são especificados na 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.
Retornar valor
Nenhum
Comentários
NdisInitializeNPagedLookasideList inicializa o cabeçalho de lista fornecido pelo chamador, mas não aloca memória para entradas de lista. As entradas iniciais são alocadas conforme necessário, seja 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ãopaged, seja por NdisFreeToNPagedLookasideList ou com chamadas para a função de retorno de chamada gratuita fornecida pelo driver no parâmetro Free .
Todas as entradas na lista lookaside têm o mesmo tamanho, que é especificado no parâmetro Size . Uma lista lookaside é particularmente útil para drivers que devem alocar dinamicamente e liberar áreas de contexto de tamanho fixo 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 a 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 funções Allocate e Free para NdisInitializeNPagedLookasideList.
Os chamadores de NdisInitializeNPagedLookasideList devem estar em execução em IRQL <= DISPATCH_LEVEL, mas geralmente estão em execução em PASSIVE_LEVEL.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | 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. |
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 da DDI | Irql_Miscellaneous_Function(ndis) |