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.
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.
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.
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) |