NdisAllocatePacketPool
9/8/2008
Essa função aloca e inicializa um bloco de armazenamento para um pool de pacote descritores.
Syntax
VOID NdisAllocatePacketPool(
PNDIS_STATUS Status,
PNDIS_HANDLE PoolHandle,
UINT NumberOfDescriptors,
UINT ProtocolReservedLength
);
Parameters
- Status
[out] Ponteiro para uma variável Caller-supplied no qual essa função retorna o status de alocação de pool pacote.
- PoolHandle
[out] Identificador para o pool pacote. Esse identificador é exigido um parâmetro para as pacote NDIS funções que o driver chama posteriormente.
- NumberOfDescriptors
[no] Especifica o número de descritores pacote que o pool deve conter.
- ProtocolReservedLength
[no] Especifica o número de bytes a ser alocada para o ProtocolReserved matriz do descritor cada pacote. Para descritores pacote que devem ser usados em receber indicações, este parâmetro pode ter no máximo 16 bytes.
Return Value
A seguinte tabela mostra os valores de retorno possíveis para essa função.
Valor | Descrição |
---|---|
NDIS_STATUS_SUCCESS |
O driver pode fazer chamadas para o NdisAllocatePacket função quando ele precisa descritores pacote para tornar indicações up to drivers de nível mais alto ou para enviar pacotes para Baixo para diminuir-nível drivers. |
NDIS_STATUS_RESOURCES |
A tentativa de alocar uma pacote pool falha, possivelmente devido a uma insuficiência de memória. No entanto, o chamador pode tentar diminuir as NumberOfDescriptors parâmetro e chamar novamente imediatamente. |
Remarks
O chamador deve salvar o identificador retornado por essa função. Geralmente, o driver próximo chamadas a NdisAllocatePacket função uma ou mais vezes com este identificador para alocar um conjunto de pacote descritores. O NumberofDescriptors especificado na chamar para essa função é o limite eficaz em quantas vezes o driver pode chamar NdisAllocatePacket Antes ele deve chamar o NdisFreePacket função para retornar um descritor pacote para o livre lista para o pool pacote.
Porque os pacotes enviados ou indicados são retornados para o driver ao alocar, ele pode reutilizar cada descritor pacote após chamado de NdisReinitializePacket função e configuração ele BACKUP novamente com um encadear de descritores reserva ou o driver pode chamar o NdisFreePacket função para retornar esse pacote para o livre lista. Reinicializando e reutilizando pacotes alocados a partir de pool pacote é muito mais rápido do que liberando e realocá-los. Antes de que chama um driver NdisReinitializePacket Com um descritor pacote, ele deve salvar os ponteiros para descritores reserva que estão conectados ao descritor de pacote, porque NdisReinitializePacket Define o início do encadear reserva para NULL.
Quando o driver não mais precisa o pool pacote, ele chama o NdisFreePacketPool função a versão de armazenamento pool pacote.
O driver deve versão qualquer rotação bloqueio que ele está mantendo antes chamado essa função.
Requirements
Header | ndis.h |
Library | ndis.lib |
Windows Embedded CE | Windows CE .NET 4.0 and later |
See Also
Reference
NdisAllocatePacket
NdisFreePacket
NdisFreePacketPool
NdisMIndicateReceivePacket
NdisReinitializePacket
NdisUnchainBufferAtBack
NdisUnchainBufferAtFront