Compartilhar via


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 que o driver de protocolo iniciou com uma chamada para o 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 identificador para uma área de contexto alocada pelo driver de protocolo na qual esse driver mantém as informações de estado de tempo de execução por conexão virtual (VC). Um cliente ou um gerenciador de chamadas autônomo forneceu esse identificador quando chamou a função NdisCoCreateVc ou de sua função ProtocolCoCreateVc .

[in] NetBufferLists

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

[in] SendCompleteFlags

Sinalizadores NDIS que podem ser combinados com uma operação OR bit a bit. Para limpar todos os sinalizadores, defina 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.

Retornar valor

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 que o driver enviasse os dados de rede que a operação de envio foi concluída.

O NDIS chama ProtocolCoSendNetBufferListsComplete depois que o driver de miniporto subjacente chama o Função NdisMCoSendNetBufferListsComplete . Uma operação de envio completa não implica necessariamente que um driver de miniporta subjacente tenha transmitido os dados de rede especificados. Por exemplo, um driver de miniporto pode indicar que uma operação de envio foi concluída assim que transfere os dados de rede para o hardware nic (cartão de interface de rede).

Quando o NDIS chama ProtocolCoSendNetBufferListsComplete, o driver de protocolo recupera a propriedade de todos os recursos associados às estruturas de 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 o NDIS para enviar dados de rede em ordem FIFO (primeiro a entrar, primeiro a sair) para o driver subjacente. No entanto, os drivers de protocolo não podem depender do driver subjacente para chamar NdisMCoSendNetBufferListsComplete na mesma ordem.

O NDIS chama ProtocolCoSendNetBufferListsComplete em IRQL<= DISPATCH_LEVEL.

Exemplos

Para definir uma função ProtocolCoSendNetBufferListsComplete , primeiro você deve fornecer uma declaração de função que identifique o tipo de função que você está definindo. O Windows fornece um conjunto de tipos de função para drivers. Declarar uma função usando os tipos de função ajuda a Análise de Código para 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 maneira:

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

O tipo de função PROTOCOL_CO_SEND_NET_BUFFER_LISTS_COMPLETE é definido no arquivo de cabeçalho Ndis.h. Para identificar erros com mais precisão ao executar as ferramentas de análise de código, adicione a anotação Use_decl_annotations à sua definição de função. A anotação Use_decl_annotations garante que as anotações aplicadas ao tipo de função PROTOCOL_CO_SEND_NET_BUFFER_LISTS_COMPLETE no arquivo de cabeçalho 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

Requisito Valor
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 do driver de protocolo CoNDIS

NET_BUFFER_LIST

NdisCoCreateVc

NdisCoSendNetBufferLists

NdisMCoSendNetBufferListsComplete

ProtocolCoCreateVc

ProtocolCoReceiveNetBufferLists