Compartilhar via


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

Chame a função NdisAllocateNetBufferPool para alocar um pool de estruturas de 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 obtido durante a inicialização do chamador.

[in] Parameters

Um ponteiro para uma estrutura de 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 de NET_BUFFER_POOL_PARAMETERS. Defina o membro tipo da estrutura que de Cabeçalho especifica para NDIS_OBJECT_TYPE_DEFAULT, o membro de Revisão para NET_BUFFER_POOL_PARAMETERS_REVISION_1 e o membro tamanho para 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 especificadas em ordem inversa. A marca de 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 ele chamar o função NdisAllocateNetBufferMdlAndData. O NDIS usa esse valor para definir o tamanho do buffer de dados que ele aloca para a estrutura de NET_BUFFER. Se o chamador não usar esse recurso, esse valor deverá ser definido como zero.

Valor de retorno

NdisAllocateNetBufferPool retorna um identificador para o pool de estrutura NET_BUFFER alocado pelo NDIS. 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.

Observações

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

NdisAllocateNetBuffer

NdisAllocateNetBufferMdlAndData
ObservaçãoNET_BUFFER e estruturas de NET_BUFFER_LIST 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, MDL e dados são pré-alocados com cada estrutura NET_BUFFER que o chamador aloca do pool. Você deve chamar a função NdisAllocateNetBufferMdlAndData para alocar estruturas NET_BUFFER 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 pools de estrutura NET_BUFFER criados com NdisAllocateNetBufferPool.

Requisitos

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

Consulte também

NET_BUFFER

NET_BUFFER_LIST

NdisAllocateNetBuffer

NdisAllocateNetBufferMdlAndData

NdisFreeNetBuffer

NdisFreeNetBufferPool