Compartilhar via


Função NdisFSendNetBufferLists (ndis.h)

Os drivers de filtro chamam a função NdisFSendNetBufferLists para enviar uma lista de buffers de dados de rede.

Sintaxe

void NdisFSendNetBufferLists(
  [in] NDIS_HANDLE                       NdisFilterHandle,
       __drv_aliasesMem PNET_BUFFER_LIST NetBufferList,
  [in] NDIS_PORT_NUMBER                  PortNumber,
  [in] ULONG                             SendFlags
);

Parâmetros

[in] NdisFilterHandle

O identificador NDIS que identifica esse módulo de filtro. O NDIS passou o identificador para o driver de filtro em uma chamada para a função FilterAttach.

NetBufferList

Um ponteiro para uma lista vinculada de estruturas de NET_BUFFER_LIST. Cada estrutura NET_BUFFER_LIST descreve uma lista de estruturas de NET_BUFFER.

[in] PortNumber

Um número de porta que identifica uma porta do adaptador de miniporto. Os números da porta do adaptador de miniport são atribuídos chamando a função NdisMAllocatePort. Um valor zero identifica a porta padrão de um adaptador de miniporto.

[in] SendFlags

Sinalizadores que definem atributos para a operação de envio. Os sinalizadores 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_FLAGS_DISPATCH_LEVEL

Especifica que o IRQL atual está DISPATCH_LEVEL. Para obter mais informações sobre esse sinalizador, consulte de Acompanhamento de IRQL de Expedição.

NDIS_SEND_FLAGS_CHECK_FOR_LOOPBACK

Especifica que o NDIS deve verificar o loopback. Por padrão, o NDIS não faz loop de dados de volta para o driver que enviou a solicitação de envio. Um driver sobressalo pode substituir esse comportamento definindo esse sinalizador. Quando esse sinalizador é definido, o NDIS identifica todas as estruturas de NET_BUFFER que contêm dados que correspondem aos critérios de recebimento da associação. O NDIS indica NET_BUFFER estruturas que correspondem aos critérios com o driver em excesso. Esse sinalizador não afeta a verificação de loopback ou loopback em outras associações.

NDIS_SEND_FLAGS_SWITCH_SINGLE_SOURCE

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

Para obter mais informações, consulte Hyper-V Sinalizadores de Envio e Recebimento Extensíveis do Comutador.

Observação 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_SEND_COMPLETE_FLAGS_SWITCH_SINGLE_SOURCE no parâmetro SendCompleteFlags de NdisFSendNetBufferListsComplete quando concluir a solicitação de envio.
 
Observação Esse sinalizador está disponível no NDIS 6.30 e posterior.
 

NDIS_SEND_FLAGS_SWITCH_DESTINATION_GROUP

Se esse sinalizador for definido, todos os pacotes em uma lista vinculada de estruturas de NET_BUFFER_LIST deverão ser encaminhados para a mesma porta de destino de comutador extensível.

Para obter mais informações, consulte Hyper-V Sinalizadores de Envio e Recebimento Extensíveis do Comutador.

Observação Esse sinalizador está disponível no NDIS 6.30 e posterior.
 

Valor de retorno

Nenhum

Observações

Depois que um driver de filtro chama a função NdisFSendNetBufferLists, o NDIS envia as estruturas de NET_BUFFER_LIST para os drivers subjacentes.

Um driver de filtro pode originar solicitações de envio ou filtrar as solicitações que recebe de drivers em excesso. Se o driver de filtro originar solicitações de envio, o driver deverá alocar pools de buffers. O driver de filtro aloca cada estrutura NET_BUFFER_LIST de um pool.

O driver de filtro pode pré-alocar estruturas NET_BUFFER_LIST ou alocar as estruturas antes de chamar NdisFSendNetBufferLists e liberá-las quando a operação de envio for concluída.

Um driver de filtro deve definir o SourceHandle membro de cada estrutura NET_BUFFER_LIST que se origina para o mesmo valor que ele passa para o parâmetro NdisFilterHandle. O identificador de filtro fornece as informações necessárias para que o NDIS retorne a estrutura NET_BUFFER_LIST para o driver de filtro. O driver de filtro não deve modificar o membro sourceHandle em nenhuma estrutura de NET_BUFFER_LIST que ele não tenha se originado.

Antes de chamar NdisFSendNetBufferLists, um driver de filtro pode definir informações que acompanham a solicitação de envio com a macro NET_BUFFER_LIST_INFO. Os drivers subjacentes podem recuperar essas informações com a macro NET_BUFFER_LIST_INFO.

O NDIS chama um driver de filtro função FilterSendNetBufferLists para transmitir solicitações de envio de drivers em excesso. Um driver de filtro pode passar essas solicitações passando as estruturas T NET_BUFFER_LISTque recebeu em FilterSendNetBufferLists para NdisFSendNetBufferLists.

Assim que um driver de filtro chama a função NdisFSendNetBufferLists, ele abre mão da propriedade das estruturas NET_BUFFER_LIST e de todos os recursos associados. O NDIS chama o função FilterSendNetBufferListsComplete para retornar as estruturas e os dados ao driver de filtro. O NDIS pode coletar as estruturas e os dados de várias solicitações de envio em uma única lista vinculada de estruturas de NET_BUFFER_LIST antes de passar a lista para FilterSendNetBufferListsComplete.

Até que o NDIS chame FilterSendNetBufferListsComplete, o status atual da solicitação de envio não estará disponível para o driver de filtro. Um driver de filtro libera temporariamente a propriedade de todos os recursos associados a uma solicitação de envio quando chama NdisFSendNetBufferLists. Um driver de filtro nunca deve tentar examinar as estruturas de NET_BUFFER_LIST ou quaisquer dados associados depois de chamar NdisFSendNetBufferLists.

Observação Um driver de filtro deve acompanhar as solicitações de envio originadas e certificar-se de que ele não chame o função NdisFSendNetBufferListsComplete quando essas solicitações forem concluídas.
 

Requisitos

Requisito Valor
de cliente com suporte mínimo Com suporte no NDIS 6.0 e posterior.
da Plataforma de Destino Área de trabalho
cabeçalho ndis.h (inclua Ndis.h)
biblioteca Ndis.lib
IRQL <= DISPATCH_LEVEL
regras de conformidade de DDI Irql_Filter_Driver_Function(ndis)

Consulte também

FilterAttach

FilterSendNetBufferLists

FilterSendNetBufferListsComplete

NET_BUFFER

NET_BUFFER_LIST

NET_BUFFER_LIST_INFO

NdisMAllocatePort