Compartilhar via


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

O NDIS chama a função FilterSendNetBufferListsComplete para concluir uma solicitação de envio iniciada por um driver de filtro chamando o Função NdisFSendNetBufferLists .

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

Sintaxe

FILTER_SEND_NET_BUFFER_LISTS_COMPLETE FilterSendNetBufferListsComplete;

void FilterSendNetBufferListsComplete(
  [in] NDIS_HANDLE FilterModuleContext,
       PNET_BUFFER_LIST NetBufferList,
  [in] ULONG SendCompleteFlags
)
{...}

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 .

NetBufferList

Um ponteiro para uma lista vinculada de estruturas de NET_BUFFER_LIST para as quais o driver de filtro passou NdisFSendNetBufferLists.

[in] SendCompleteFlags

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_SEND_COMPLETE_FLAGS_DISPATCH_LEVEL

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

NDIS_SEND_COMPLETE_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 NET_BUFFER_LIST usar a mesma porta de origem, a extensão deverá definir o sinalizador NDIS_SEND_FLAGS_SWITCH_SINGLE_SOURCE no parâmetro SendFlags de SendNetBufferLists quando enviar a solicitação.
 
Nota Esse sinalizador está disponível no NDIS 6.30 e posterior.
 

Retornar valor

Nenhum

Comentários

FilterSendNetBufferListsComplete é uma função opcional. Se um driver de filtro não filtrar solicitações de envio, 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 FilterSendNetBufferListsComplete para um módulo de filtro.

Nota Um driver de filtro que não fornece uma função FilterSendNetBufferListsComplete não pode chamar a função NdisFSendNetBufferLists .
 
Quando o NDIS chama FilterSendNetBufferListsComplete, o driver de filtro recupera a propriedade das estruturas de NET_BUFFER_LIST e dos dados associados.

Se um driver sobreposto iniciou a solicitação de envio, o driver de filtro deverá chamar a função NdisFSendNetBufferListsComplete para concluir a solicitação de envio.

Se o driver de filtro originou a solicitação de envio, FilterSendNetBufferListsComplete poderá liberar as estruturas de NET_BUFFER_LIST e os dados associados ou prepará-los para reutilização em uma chamada subsequente para NdisFSendNetBufferLists.

Nota Um driver de filtro deve acompanhar as solicitações de envio iniciadas e garantir que ele não chame NdisFSendNetBufferListsComplete quando o NDIS chamar FilterSendNetBufferListsComplete para essas solicitações.
 
O NDIS chama FilterSendNetBufferListsComplete em IRQL <= DISPATCH_LEVEL.

Exemplos

Para definir uma função FilterSendNetBufferListsComplete , 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 FilterSendNetBufferListsComplete chamada "MySendNetBufferListsComplete", use o tipo FILTER_SEND_NET_BUFFER_LISTS_COMPLETE conforme mostrado neste exemplo de código:

FILTER_SEND_NET_BUFFER_LISTS_COMPLETE MySendNetBufferListsComplete;

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

_Use_decl_annotations_
VOID
 MySendNetBufferListsComplete(
    NDIS_HANDLE  FilterModuleContext,
    PNET_BUFFER_LIST  NetBufferLists,
    ULONG  SendCompleteFlags
    )
  {...}

O tipo de função FILTER_SEND_NET_BUFFER_LISTS_COMPLETE é 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_SEND_NET_BUFFER_LISTS_COMPLETE 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

NET_BUFFER

NET_BUFFER_LIST

NdisFRegisterFilterDriver

NdisFSendNetBufferLists

NdisFSendNetBufferListsComplete

NdisSetOptionalHandlers