Compartilhar via


Função NdisAllocateNetBufferPool (ndis/nblapi.h)

Chame a função NdisAllocateNetBufferPool para alocar um pool de estruturas NET_BUFFER .

Sintaxe

NDIS_EXPORTED_ROUTINE NDIS_HANDLE NdisAllocateNetBufferPool(
  [in, optional] NDIS_HANDLE                      NdisHandle,
  [in]           NET_BUFFER_POOL_PARAMETERS const *Parameters
);

Parâmetros

[in, optional] NdisHandle

Um identificador NDIS que foi obtido durante a inicialização do chamador.

[in] Parameters

Um ponteiro para uma estrutura NET_BUFFER_POOL_PARAMETERS que define os parâmetros para o pool. A estrutura é definida da seguinte maneira:

typedef struct _NET_BUFFER_POOL_PARAMETERS {
  NDIS_OBJECT_HEADER  Header;
  ULONG  PoolTag;
  ULONG  DataSize;
} NET_BUFFER_POOL_PARAMETERS, *PNET_BUFFER_POOL_PARAMETERS;

Essa estrutura inclui os seguintes membros:

A estrutura NDIS_OBJECT_HEADER para a estrutura NET_BUFFER_POOL_PARAMETERS. Defina o membro Type da estrutura especificada por Header como NDIS_OBJECT_TYPE_DEFAULT, o membro Revision como NET_BUFFER_POOL_PARAMETERS_REVISION_1 e o membro Size como NDIS_SIZEOF_NET_BUFFER_POOL_PARAMETERS_REVISION_1.

PoolTag

Uma marca de pool de kernel que o chamador usa quando aloca NET_BUFFER estruturas desse pool. A marca é uma cadeia de caracteres, delimitada por aspas simples, com até quatro caracteres, geralmente especificados na ordem inversa. A marca do pool de kernel ajuda o NDIS a identificar o proprietário das estruturas de NET_BUFFER alocadas desse pool.

DataSize

O tamanho de dados padrão para buffers de dados associados a esse pool. O chamador deve definir esse valor se chamar o Função NdisAllocateNetBufferMdlAndData . O NDIS usa esse valor para definir o tamanho do buffer de dados alocado para a estrutura NET_BUFFER. Se o chamador não usar esse recurso, esse valor deverá ser definido como zero.

Retornar valor

NdisAllocateNetBufferPool retorna um identificador para o pool de estrutura NET_BUFFER que o NDIS aloca. Se a alocação não tiver sido bem-sucedida, esse identificador será NULL. Esse identificador é um parâmetro necessário em chamadas subsequentes para funções NDIS que alocam e liberam estruturas de NET_BUFFER desse pool.

Comentários

Chame as funções a seguir para alocar estruturas NET_BUFFER do pool de estrutura NET_BUFFER.

NdisAllocateNetBuffer

NdisAllocateNetBufferMdlAndData
ObserveNET_BUFFER e NET_BUFFER_LIST estruturas devem ser alocadas de um pool de buffers NDIS. Um driver não deve alocar e inicializar uma estrutura NET_BUFFER ou NET_BUFFER_LIST de seu pool de memória privada ou da pilha.
 
Você pode chamar NdisAllocateNetBufferPool e definir o valor DataSize ao criar um pool de estrutura NET_BUFFER. Nesse caso, o MDL e os dados são pré-alocados com cada estrutura NET_BUFFER alocada pelo chamador do pool. Você deve chamar a função NdisAllocateNetBufferMdlAndData para alocar NET_BUFFER estruturas desse pool.

O MDL e os buffers de dados alocados com NdisAllocateNetBufferMdlAndData não devem ser liberados separados da estrutura NET_BUFFER. Essas estruturas são liberadas com a estrutura NET_BUFFER quando você chama a função NdisFreeNetBuffer .

Chame a função NdisFreeNetBufferPool para liberar NET_BUFFER pools de estrutura criados com NdisAllocateNetBufferPool.

Requisitos

Requisito Valor
Cliente mínimo com suporte Com suporte no NDIS 6.0 e posterior.
Plataforma de Destino Universal
Cabeçalho ndis/nblapi.h (inclua ndis.h)
Biblioteca Ndis.lib
IRQL <= DISPATCH_LEVEL
Regras de conformidade da DDI Irql_NetBuffer_Function(ndis), NdisAllocateNetBufferPool(ndis), NdisAllocateNetBufferPool_InitFail(ndis)

Confira também

NET_BUFFER

NET_BUFFER_LIST

NdisAllocateNetBuffer

NdisAllocateNetBufferMdlAndData

NdisFreeNetBuffer

NdisFreeNetBufferPool