PROTOCOL_CO_SEND_NET_BUFFER_LISTS_COMPLETE função de retorno de chamada (ndis.h)

A função ProtocolCoSendNetBufferListsComplete conclui uma operação de envio iniciada pelo driver de protocolo com uma chamada para a função NdisCoSendNetBufferLists .

Nota Você deve declarar a função usando o tipo PROTOCOL_CO_SEND_NET_BUFFER_LISTS_COMPLETE . Para obter mais informações, consulte a seção Exemplos a seguir.

Sintaxe

PROTOCOL_CO_SEND_NET_BUFFER_LISTS_COMPLETE ProtocolCoSendNetBufferListsComplete;

void ProtocolCoSendNetBufferListsComplete(
  [in] NDIS_HANDLE ProtocolVcContext,
  [in] PNET_BUFFER_LIST NetBufferLists,
  [in] ULONG SendCompleteFlags
)
{...}

Parâmetros

[in] ProtocolVcContext

Um handle para uma área de contexto alocada pelo driver de protocolo na qual esse driver mantém as informações de estado de tempo de run-time de VC (conexão por virtual). Um cliente ou gerenciador de chamadas autônomo forneceu esse manipular quando chamou a função NdisCoCreateVc ou de sua função ProtocolCoCreateVc .

[in] NetBufferLists

Um ponteiro para uma lista de NET_BUFFER_LIST que o driver de protocolo forneceu em uma chamada anterior para a função NdisCoSendNetBufferLists .

[in] SendCompleteFlags

Sinalizadores NDIS que podem ser combinados com uma operação OR bit a bit. Para limpar todos os sinalizadores, de definido esse parâmetro como zero. ProtocolCoSendNetBufferListsComplete dá suporte ao sinalizador NDIS_SEND_COMPLETE_FLAGS_DISPATCH_LEVEL, que; se definido, indica que o IRQL atual está DISPATCH_LEVEL. Para obter mais informações sobre esse sinalizador, consulte Dispatch IRQL Tracking.

Valor retornado

Nenhum

Comentários

A função ProtocolCoSendNetBufferListsComplete é necessária para drivers de protocolo CoNDIS. ProtocolCoSendNetBufferListsComplete executa qualquer pós-processamento necessário para concluir uma operação de envio. Por exemplo, o driver de protocolo pode notificar os clientes que solicitaram ao driver para enviar os dados de rede de que a operação de envio foi concluída.

O NDIS chama ProtocolCoSendNetBufferListsComplete depois que o driver de miniporte subjacente chama a função NdisMCoSendNetBufferListsComplete . Uma operação de envio completa não implica necessariamente que um driver de miniporte subjacente transmitiu os dados de rede especificados. Por exemplo, um driver de miniporte pode indicar que uma operação de envio foi concluída assim que transfere os dados de rede para o hardware de NIC (placa de interface de rede).

Quando o NDIS chama ProtocolCoSendNetBufferListsComplete, o driver de protocolo recupera a propriedade de todos os recursos associados às estruturas NET_BUFFER_LIST especificadas pelo parâmetro NetBufferLists .

O NDIS sempre envia dados de rede fornecidos pelo driver de protocolo para os drivers subjacentes na ordem determinada pelo protocolo que foi passada para NdisCoSendNetBufferLists. No entanto, o driver subjacente pode concluir as solicitações de envio em qualquer ordem. Ou seja, os drivers de protocolo podem contar com NDIS para enviar dados de rede na ordem FIFO (primeiro a entrar, primeiro a sair) para o driver subjacente. No entanto, os drivers de protocolo não podem contar com o driver subjacente para chamar NdisMCoSendNetBufferListsComplete na mesma ordem.

O NDIS chama ProtocolCoSendNetBufferListsComplete em IRQL<= DISPATCH_LEVEL.

Exemplos

Para definir uma função ProtocolCoSendNetBufferListsComplete , primeiro forneça uma declaração de função que identifique o tipo de função que você está definindo. Windows fornece um conjunto de tipos de função para drivers. Declarar uma função usando os tipos de função ajuda Code Analysis drivers, SDV (Verificador de Driver Estático) e outras ferramentas de verificação a encontrar erros e é um requisito para escrever drivers para o sistema operacional Windows.

Por exemplo, para definir uma função ProtocolCoSendNetBufferListsComplete chamada "MyCoSendNetBufferListsComplete", use o tipo PROTOCOL_CO_SEND_NET_BUFFER_LISTS_COMPLETE conforme mostrado neste exemplo de código:

PROTOCOL_CO_SEND_NET_BUFFER_LISTS_COMPLETE MyCoSendNetBufferListsComplete;

Em seguida, implemente sua função da seguinte forma:

_Use_decl_annotations_
VOID
 MyCoSendNetBufferListsComplete(
    NDIS_HANDLE  ProtocolVcContext,
    PNET_BUFFER_LIST  NetBufferLists,
    ULONG  SendCompleteFlags
    )
  {...}

O PROTOCOL_CO_SEND_NET_BUFFER_LISTS_COMPLETE de função é definido no arquivo de header Ndis.h. Para identificar erros com mais precisão ao executar as ferramentas de análise de código, adicione a Use_decl_annotations anotação à sua definição de função. A Use_decl_annotations anotação garante que as anotações aplicadas ao tipo de função PROTOCOL_CO_SEND_NET_BUFFER_LISTS_COMPLETE no arquivo de header sejam usadas. Para obter mais informações sobre os requisitos para declarações de função, consulte Declarando funções usando tipos de função de função para drivers NDIS.

Para obter informações sobre Use_decl_annotations, consulte Anotando o comportamento da função.

Requisitos

   
Cliente mínimo com suporte Com suporte no NDIS 6.0 e posterior.
Plataforma de Destino Windows
Cabeçalho ndis.h (inclua Ndis.h)
IRQL <= DISPATCH_LEVEL

Confira também

Funções de envio e recebimento de driver de protocolo CoNDIS

NET_BUFFER_LIST

NdisCoCreateVc

NdisCoSendNetBufferLists

NdisMCoSendNetBufferListsComplete

ProtocolCoCreateVc

ProtocolCoReceiveNetBufferLists