FILTER_RETURN_NET_BUFFER_LISTS função de retorno de chamada (ndis.h)

O NDIS chama a função FilterReturnNetBufferLists para retornar uma lista vinculada de estruturas de NET_BUFFER_LIST e dados associados a um driver de filtro.

Nota Você deve declarar a função usando o tipo FILTER_RETURN_NET_BUFFER_LISTS . Para obter mais informações, consulte a seção Exemplos a seguir.
 

Sintaxe

FILTER_RETURN_NET_BUFFER_LISTS FilterReturnNetBufferLists;

void FilterReturnNetBufferLists(
  [in] NDIS_HANDLE FilterModuleContext,
  [in] PNET_BUFFER_LIST NetBufferLists,
  [in] ULONG ReturnFlags
)
{...}

Parâmetros

[in] FilterModuleContext

Um identificador para a área de contexto do módulo de filtro. O driver de filtro criou e inicializou essa área de contexto na função FilterAttach .

[in] NetBufferLists

Uma lista vinculada de estruturas de NET_BUFFER_LIST que o driver de filtro indicou chamando o Função NdisFIndicateReceiveNetBufferLists . A lista pode incluir estruturas de NET_BUFFER_LIST de várias chamadas para NdisFIndicateReceiveNetBufferLists.

[in] ReturnFlags

Sinalizadores NDIS que podem ser combinados com uma operação OR. Para limpar todos os sinalizadores, defina esse membro como zero. Essa função dá suporte aos seguintes sinalizadores:

NDIS_RETURN_FLAGS_DISPATCH_LEVEL

Especifica que o IRQL atual é DISPATCH_LEVEL. Para obter mais informações sobre esse sinalizador, consulte Dispatch IRQL Tracking.

NDIS_RETURN_FLAGS_SWITCH_SINGLE_SOURCE

Se esse sinalizador for definido, todos os pacotes em uma lista vinculada de estruturas de NET_BUFFER_LIST originaram-se da mesma porta de origem do comutador extensível do Hyper-V.

Para obter mais informações, consulte Sinalizadores de envio e recebimento extensíveis do Hyper-V.

Nota Se cada pacote na lista vinculada de estruturas de NET_BUFFER_LIST usar a mesma porta de origem, a extensão deverá definir o sinalizador NDIS_RECEIVE_FLAGS_SWITCH_SINGLE_SOURCE no parâmetro ReceiveFlags de FilterReceiveNetBufferLists quando enviar a solicitação.
 

Retornar valor

Nenhum

Comentários

FilterReturnNetBufferLists é uma função opcional. Se um driver de filtro não filtrar as indicações de recebimento, ele poderá definir o ponto de entrada dessa função como NULL quando chamar o Função NdisFRegisterFilterDriver .

O driver de filtro pode chamar a função NdisSetOptionalHandlers , da função FilterSetModuleOptions , para especificar uma função FilterReturnNetBufferLists para um módulo de filtro.

Nota Um driver de filtro que não fornece uma função FilterReturnNetBufferLists não pode chamar o Função NdisFIndicateReceiveNetBufferLists para iniciar uma indicação de recebimento.
 
Nota Um driver de filtro que fornece uma função FilterReturnNetBufferLists deve fornecer uma função FilterStatus .
 
Quando o NDIS chama FilterReturnNetBufferLists, o driver de filtro recupera a propriedade das estruturas de NET_BUFFER_LIST e dos dados associados.

Se um driver subjacente iniciou a indicação de recebimento, o driver de filtro deverá chamar o Função NdisFReturnNetBufferLists para concluir a indicação de recebimento.

Se o driver de filtro originou a indicação de recebimento, FilterReturnNetBufferLists poderá liberar as estruturas NET_BUFFER_LIST e os dados associados ou prepará-los para reutilização em uma chamada subsequente para NdisFIndicateReceiveNetBufferLists.

Um driver de filtro deve acompanhar as indicações de recebimento iniciadas e garantir que ele não chame NdisFReturnNetBufferLists quando o NDIS chamar FilterReturnNetBufferLists.

O NDIS chama FilterReturnNetBufferLists em IRQL <= DISPATCH_LEVEL.

Exemplos

Para definir uma função FilterReturnNetBufferLists , primeiro você deve fornecer uma declaração de função que identifique o tipo de função que você está definindo. O Windows fornece um conjunto de tipos de função para drivers. Declarar uma função usando os tipos de função ajuda a Análise de Código para Drivers, SDV ( Verificador de Driver Estático ) e outras ferramentas de verificação a encontrar erros e é um requisito para gravar drivers para o sistema operacional Windows.

Por exemplo, para definir uma função FilterReturnNetBufferLists chamada "MyReturnNetBufferLists", use o tipo FILTER_RETURN_NET_BUFFER_LISTS , conforme mostrado neste exemplo de código:

FILTER_RETURN_NET_BUFFER_LISTS MyReturnNetBufferLists;

Em seguida, implemente sua função da seguinte maneira:

_Use_decl_annotations_
VOID
 MyReturnNetBufferLists(
    NDIS_HANDLE  FilterModuleContext,
    PNET_BUFFER_LIST  NetBufferLists,
    ULONG  ReturnFlags
    )
  {...}

O tipo de função FILTER_RETURN_NET_BUFFER_LISTS é definido no arquivo de cabeçalho Ndis.h. Para identificar erros com mais precisão ao executar as ferramentas de análise de código, adicione a anotação Use_decl_annotations à sua definição de função. A anotação Use_decl_annotations garante que as anotações aplicadas ao tipo de função FILTER_RETURN_NET_BUFFER_LISTS no arquivo de cabeçalho sejam usadas. Para obter mais informações sobre os requisitos para declarações de função, consulte Declarando funções usando tipos de função de função para drivers NDIS.

Para obter informações sobre Use_decl_annotations, consulte Anotando o comportamento da função.

Requisitos

Requisito Valor
Cliente mínimo com suporte Com suporte no NDIS 6.0 e posterior.
Plataforma de Destino Windows
Cabeçalho ndis.h (inclua Ndis.h)
IRQL <= DISPATCH_LEVEL

Confira também

FilterAttach

FilterSetModuleOptions

FilterStatus

NET_BUFFER

NET_BUFFER_LIST

NdisFIndicateReceiveNetBufferLists

NdisFRegisterFilterDriver

NdisFReturnNetBufferLists

NdisSetOptionalHandlers