Compartilhar via


Função NdisCoSendNetBufferLists (ndis.h)

A função NdisCoSendNetBufferLists de envia dados de rede contidos em uma lista especificada de estruturas de NET_BUFFER_LIST.

Sintaxe

void NdisCoSendNetBufferLists(
  [in] NDIS_HANDLE      NdisVcHandle,
  [in] PNET_BUFFER_LIST NetBufferLists,
  [in] ULONG            SendFlags
);

Parâmetros

[in] NdisVcHandle

Um identificador para uma VC (conexão virtual) que identifica o destino da solicitação de envio.

[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] SendFlags

Sinalizadores que definem atributos para a operação de envio. Os sinalizadores podem ser combinados com uma operação OR bit a bit. Para limpar todos os sinalizadores, defina esse parâmetro como zero. NdisCoSendNetBufferLists dá suporte aos seguintes sinalizadores:

NDIS_SEND_FLAGS_DISPATCH_LEVEL

O IRQL atual é DISPATCH_LEVEL. Para obter mais informações sobre esse sinalizador, consulte de Acompanhamento de IRQL de Expedição.

NDIS_SEND_FLAGS_CHECK_FOR_LOOPBACK

O NDIS deve verificar se há 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 sobressoante pode substituir esse comportamento definindo NDIS_SEND_FLAGS_CHECK_FOR_LOOPBACK. 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.

Valor de retorno

Nenhum

Observações

Depois que um driver de protocolo CoNDIS chama NdisCoSendNetBufferLists, o NDIS envia as estruturas de NET_BUFFER_LIST que o parâmetro NetBufferLists especifica a um driver subjacente função MiniportCoSendNetBufferLists.

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 de protocolo pode alocar as estruturas imediatamente antes de chamar NdisCoSendNetBufferLists e, em seguida, pode liberá-las quando a operação de envio for concluída. Quando o NDIS retorna uma estrutura de NET_BUFFER_LIST para o função ProtocolCoSendNetBufferListsComplete, o driver de protocolo pode preparar a estrutura NET_BUFFER_LIST e quaisquer recursos associados para reutilização. Se você reutilizar as estruturas de NET_BUFFER_LIST, poderá obter 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 SourceHandle membro de cada estrutura NET_BUFFER_LIST com o mesmo valor que ele passa no parâmetro NdisVcHandle. O identificador de origem fornece as informações necessárias para que o NDIS retorne a estrutura de NET_BUFFER_LIST para o driver de protocolo depois que o driver de miniporto subjacente chama o função de NdisMCoSendNetBufferListsComplete.

Antes que um driver de protocolo chame NdisCoSendNetBufferLists, o driver 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 NdisCoSendNetBufferLists 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.

Assim que um driver de protocolo chama NdisCoSendNetBufferLists, ele não é mais proprietário das estruturas de NET_BUFFER_LIST e todos os recursos associados. O NDIS chama a função ProtocolCoSendNetBufferListsComplete para retornar as estruturas e os dados para o 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 ProtocolCoSendNetBufferListsComplete.

Até que o NDIS chame ProtocolCoSendNetBufferListsComplete, 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 NdisCoSendNetBufferLists. Um driver de protocolo nunca deve tentar examinar as estruturas de NET_BUFFER_LIST ou quaisquer dados associados depois que o driver chama NdisCoSendNetBufferLists.

Requisitos

Requisito Valor
de cliente com suporte mínimo Com suporte para drivers NDIS 6.0 no Windows Vista.
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_Connection_Function(ndis)

Consulte também

DriverEntry

MiniportCoSendNetBufferLists

NET_BUFFER

NET_BUFFER_LIST

NET_BUFFER_LIST_INFO

NdisAllocateCloneNetBufferList NdisAllocateNetBufferAndNetBufferList

NdisAllocateNetBufferList

NdisMCoSendNetBufferListsComplete ProtocolCoSendNetBufferListsComplete