Compartilhar via


Função NdisSendNetBufferLists (ndis.h)

Os drivers de protocolo chamam a função NdisSendNetBufferLists para enviar dados de rede contidos em uma lista de estruturas de NET_BUFFER_LIST.

Sintaxe

void NdisSendNetBufferLists(
  [in] NDIS_HANDLE                       NdisBindingHandle,
  [in] __drv_aliasesMem PNET_BUFFER_LIST NetBufferLists,
  [in] NDIS_PORT_NUMBER                  PortNumber,
  [in] ULONG                             SendFlags
);

Parâmetros

[in] NdisBindingHandle

Um identificador que identifica o adaptador de destino. Uma chamada anterior para NdisOpenAdapterEx retornou esse identificador.

[in] NetBufferLists

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. O número de porta padrão de um adaptador de miniporto é zero. Os drivers de protocolo que não usam portas de adaptador de miniporto devem especificar a porta padrão.

[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 tem efeito na verificação de loopback ou loop back em outras associações.

Valor de retorno

Nenhum

Observações

Depois que um driver de protocolo chama NdisSendNetBufferLists, o NDIS envia as estruturas de NET_BUFFER_LIST para um driver subjacente função MiniportSendNetBufferLists.

O driver de protocolo deve alocar cada estrutura NET_BUFFER_LIST de um pool chamando uma das seguintes funções:

O driver de protocolo pode pré-alocar estruturas de NET_BUFFER_LIST, por exemplo, em sua rotina de DriverEntry. Como alternativa, o driver pode alocar as estruturas pouco antes de chamar NdisSendNetBufferLists e liberá-las quando a operação de envio for concluída. Quando o NDIS retorna uma estrutura de NET_BUFFER_LIST para ProtocolSendNetBufferListsComplete, o driver de miniporto pode preparar a estrutura NET_BUFFER_LIST e todos os recursos associados para reutilização. Reutilizar as estruturas de NET_BUFFER_LIST pode produzir melhor desempenho do que retornar as estruturas para um pool e, em seguida, reallocá-las para outra operação de envio.

Um driver de protocolo deve definir o membro sourceHandle de cada estrutura NET_BUFFER_LIST com o mesmo valor que ele passa para o parâmetro NdisBindingHandle. O identificador de associação fornece as informações necessárias para que o NDIS retorne a estrutura de NET_BUFFER_LIST ao driver de protocolo após as chamadas do driver de miniporto subjacente NdisMSendNetBufferListsComplete.

Antes de chamar NdisSendNetBufferLists, um driver de protocolo pode definir informações que acompanham a solicitação de envio com a macro NET_BUFFER_LIST_INFO. O driver subjacente pode recuperar essas informações com a macro NET_BUFFER_LIST_INFO.

Antes que um driver de protocolo chame NdisSendNetBufferLists com uma lista de estruturas de NET_BUFFER_LIST, o driver de protocolo deve garantir que as estruturas de NET_BUFFER_LIST sejam configuradas na ordem em que os dados de rede devem ser enviados pela transmissão.

Assim que um driver de protocolo chama NdisSendNetBufferLists, ele abre mão da propriedade das estruturas NET_BUFFER_LIST e de todos os recursos associados. O NDIS chama a função ProtocolSendNetBufferListsComplete para retornar as estruturas e os dados ao driver de protocolo. 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 ProtocolSendNetBufferListsComplete.

Até que o NDIS chame ProtocolSendNetBufferListsComplete, o status atual de um envio iniciado pelo driver de protocolo não está disponível para o driver de protocolo. Um driver de protocolo libera temporariamente a propriedade de todos os recursos alocados para uma solicitação de envio quando chama NdisSendNetBufferLists. Um driver de protocolo nunca deve tentativa de examinar as estruturas de NET_BUFFER_LIST ou quaisquer dados associados depois de chamar NdisSendNetBufferLists.

Requisitos

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

Consulte também

DriverEntry

MiniportSendNetBufferLists

NET_BUFFER

NET_BUFFER_LIST

NET_BUFFER_LIST_INFO

NdisAllocateCloneNetBufferList NdisAllocateNetBufferAndNetBufferList

NdisAllocateNetBufferList

NdisMAllocatePort

NdisMSendNetBufferListsComplete

NdisOpenAdapterEx

ProtocolSendNetBufferListsComplete