Compartilhar via


ProtocolSendComplete

Windows Mobile Not SupportedWindows Embedded CE Supported

9/8/2008

Essa função é um exigido função driver que conclui o processamento de uma Protocol-INITIATED enviar anteriormente passado para NdisSendPackets Ou NdisSend, que retornaram NDIS_STATUS_PENDING.

Syntax

VOID ProtocolSendComplete(
  NDIS_HANDLE ProtocolBindingContext,
  PNDIS_PACKET Packet,
  NDIS_STATUS Status
);

Parameters

  • ProtocolBindingContext
    [no] Especifica o identificador para uma área Protocol-allocated contexto no qual o driver protocolo mantém por-tempo de execução ligação estado. O driver fornecido este identificador quando ele chamado NdisOpenAdapter.
  • Pacote
    [no] Envia aponta para o descritor Protocol-supplied pacote para o concluída.
  • Status
    [no] Especifica o status final da operação de envio.

Return Value

Nenhum.

Remarks

ProtocolSendComplete executa qualquer pós-processamento é necessária para uma operação transmitir concluídas, such as notificar o cliente que solicitou originalmente o protocolo para enviar dados através de rede.

Conclusão de uma operação de envio geralmente implica que a subjacente driver adaptador rede realmente transmitiu o pacote fornecido através de rede. No entanto, o driver de um adaptador que rede Inteligente pode considerar um envio completo as soon as é feito o download de rede pacote para seu adaptador rede. O subjacente chamar do driver para NdisMSendComplete Ou NdisMWanSendComplete Faz com que NDIS para chamar o ProtocolSendComplete função.

Quando ProtocolSendComplete é chamado, o driver regains a propriedade do seguinte protocolo-alocado recursos:

  • O descritor pacote em Pacote
  • Todos os descritores reserva encadeadas para o descritor pacote que buffers mapa (n.); mapear (v.) contendo a rede dados pacote e qualquer buffers alocados-protocolo mapeados por esses descritores
  • Qualquer out - of - bloco banda associado com descritor de pacote
  • Qualquer reserva Protocol-allocated especificada em de Out - Of - bloco banda no MediaSpecificInformation

Conseqüentemente, ProtocolSendComplete Pode qualquer versão esses recursos ou fim de prepará-los para reutilização em um chamar subseqüente para NdisSend. Como regra geral, reutilizar tais recursos produz um melhor desempenho de sua colocação, exceto, possivelmente, nos períodos de baixo tráfego de rede se o protocolo anteriormente alocado um surplus desses recursos para identificador um período de demanda E/S pesada.

Para preparar a reserva e descritores pacote para reutilização, ProtocolSendComplete deve seguir estas diretrizes:

  • Sempre chamar um NdisUnchainBufferAtXXX função como many times conforme necessário para salvar os ponteiros descritor reserva antes ProtocolSendComplete Chamadas NdisReinitializePacket Com o descritor na Pacote.
  • Caso contrário, NdisReinitializePacket Define o início do encadear reserva para NULL para o protocolo não é possível recuperar os ponteiros para descritores de reserva encadeados para o descritor pacote. Ambos o protocolo perde MDLs Buffers do cliente-fornecido mapeamento ou ele perde um conjunto de descritores reserva o protocolo alocado com NdisAllocateBuffer.
  • Sempre transmitir o ponteiro retornado pelo NDIS_OOB_DATA_FROM_PACKET para NdisZeroMemory Para um associado out - de - banda bloco de dados, Clear Nunca o Pacote ponteiro.
  • Caso contrário, NdisZeroMemory destrói o descritor pacote de protocolo alocado com NdisAllocatePacket, processamento envia inutilizável para especificar subseqüentes.
  • Como um alternativo para limpar o out - of - bloco banda, o protocolo pode reinicializar envia apenas aqueles membros que normalmente define o protocolo up for com o apropriado NDIS_SET_PACKET_XXX As macros.

Até ProtocolSendComplete é chamado, de atual status de um envio Protocol-INITIATED é volátil. Um protocolo temporariamente libera a propriedade de todos os recursos que ele alocados para um envio quando ele chama NdisSend, mesmo se o protocolo fornece out - de - informações banda com descritores de pacote aloca para envia. Em particular, um protocolo deve Nunca Tentar examinar o Status membro do associado out - de - bloco de dados banda quando NdisSend controle retorna.

Requirements

Header ndis.h
Library Ndislib.lib
Windows Embedded CE Windows CE .NET 4.0 and later

See Also

Reference

NdisAllocateBuffer
NdisAllocatePacket
NdisOpenAdapter
NdisMSendComplete
NdisMWanSendComplete
NdisReinitializePacket
NdisZeroMemory
NdisSend
NdisSendPackets
ProtocolStatus
ProtocolStatusComplete