Função NdisCoSendNetBufferLists (ndis.h)

A função NdisCoSendNetBufferLists 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 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 Dispatch IRQL Tracking.

NDIS_SEND_FLAGS_CHECK_FOR_LOOPBACK

O NDIS deve marcar para loopback. Por padrão, o NDIS não faz o loop de dados de volta para o driver que enviou a solicitação de envio. Um driver overlying 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 para a associação. O NDIS indica NET_BUFFER estruturas que correspondem aos critérios ao driver sobressociado. Esse sinalizador não afeta a verificação de loopback ou loopback em outras associações.

Retornar valor

Nenhum

Comentários

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 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 NET_BUFFER_LIST para oFunção ProtocolCoSendNetBufferListsComplete, o driver de protocolo pode preparar a estrutura NET_BUFFER_LIST e todos os recursos associados para reutilização. Se você reutilizar as estruturas NET_BUFFER_LIST, poderá obter um desempenho melhor do que retornar as estruturas para um pool e, em seguida, realocá-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 no parâmetro NdisVcHandle . O identificador de origem fornece as informações que o NDIS requer para retornar a estrutura NET_BUFFER_LIST para o driver de protocolo depois que o driver de miniporto subjacente chama o Função 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 possui mais as estruturas de NET_BUFFER_LIST e todos os recursos associados. O NDIS chama a função ProtocolCoSendNetBufferListsComplete 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 ProtocolCoSendNetBufferListsComplete.

Até que o NDIS chame ProtocolCoSendNetBufferListsComplete, a status atual de um envio iniciado pelo driver de protocolo não estará 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 chamar NdisCoSendNetBufferLists.

Requisitos

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

Confira também

DriverEntry

MiniportCoSendNetBufferLists

NET_BUFFER

NET_BUFFER_LIST

NET_BUFFER_LIST_INFO

NdisAllocateCloneNetBufferList NdisAllocateNetBufferAndNetBufferList

NdisAllocateNetBufferList

NdisMCoSendNetBufferListsComplete ProtocolCoSendNetBufferListsComplete