EVT_NET_ADAPTER_RETURN_RX_BUFFER função de retorno de chamada (netadapter.h)
Implemente essa função de retorno de chamada opcional para executar a limpeza em um buffer de recebimento NET_FRAGMENT para o qual você especificou anteriormente a alocação e o anexo de fragmento manual.
Sintaxe
EVT_NET_ADAPTER_RETURN_RX_BUFFER EvtNetAdapterReturnRxBuffer;
void EvtNetAdapterReturnRxBuffer(
[_In_] NETADAPTER Adapter,
[_In_] NET_FRAGMENT_RETURN_CONTEXT_HANDLE RxReturnContext
)
{...}
Parâmetros
[_In_] Adapter
O objeto do adaptador de rede que o cliente criou em uma chamada anterior para NetAdapterCreate.
[_In_] RxReturnContext
Um ponteiro para uma estrutura de espaço de contexto alocada pelo driver.
Retornar valor
Nenhum
Comentários
Registre sua implementação dessa função de retorno de chamada definindo o membro apropriado de NET_ADAPTER_RX_CAPABILITIES estrutura e chamando NetAdapterSetDatapathCapabilities. Os drivers de cliente normalmente chamam NetAdapterSetDatapathCapabilities ao iniciar um adaptador de rede, antes de chamar NetAdapterStart.
Essa função de retorno de chamada é opcional, a menos que o driver de cliente do adaptador de rede inicialize sua estrutura NET_ADAPTER_RX_CAPABILITIES usando a função NET_ADAPTER_RX_CAPABILITIES_INIT_DRIVER_MANAGED . Usando essa função de inicialização, o driver informa ao sistema operacional que está gerenciando a alocação e o anexo de NET_FRAGMENT receber buffers manualmente, portanto, ele deve fornecer essa função de retorno de chamada nesse caso para que o sistema operacional invoque assim que o sistema for concluído com o buffer.
Exemplo
Nessa função de retorno de chamada, o driver do cliente pode executar todas as ações de limpeza ou acompanhamento necessárias agora que o sistema operacional terminou com esse buffer de recebimento. No exemplo a seguir, o contexto de retorno contém um membro para acompanhar o número de pacotes indicados, bem como um objeto de memória usado para um buffer lookaside durante o processamento de recebimento. O tratamento de erros foi deixado de fora para maior clareza.
VOID
MyReturnRxBuffer(
_In_ NETADAPTER Adapter,
_In_ NET_FRAGMENT_RETURN_CONTEXT_HANDLE RxReturnContext
)
{
UNREFERENCED_PARAMETER(Adapter);
RxReturnContext->IndicatedPackets--;
// Clean up the lookaside buffer if this is the last packet
if(RxReturnContext->IndicatedPackets == 0)
{
WdfObjectDelete(RxReturnContext->LookasideBufferMemory);
}
}
Requisitos
Requisito | Valor |
---|---|
Plataforma de Destino | Universal |
Versão mínima do KMDF | 1,25 |
Cabeçalho | netadapter.h (inclua netadaptercx.h) |
IRQL | <= DISPATCH_LEVEL |
Confira também
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de