Partilhar via


Enviando pacotes de um driver de miniporta de WAN CoNDIS

Um driver de camada superior chama NdisCoSendNetBufferLists para enviar pacotes de dados de rede para um driver de miniporta de WAN CoNDIS subjacente em uma lista de estruturas NET_BUFFER_LIST. O driver intermediário NDISWAN encaminha essas estruturas NET_BUFFER_LIST do driver de camada superior. O NDISWAN reempacota as estruturas antes de enviá-las. O NDISWAN encaminha pacotes em novas estruturas NET_BUFFER_LIST.

O driver intermediário NDISWAN chama NDIS para encaminhar as novas estruturas NET_BUFFER_LIST, NDIS chama a função MiniportCoSendNetBufferLists do driver de miniporta WAN.

O driver de miniporta CoNDIS WAN possui as estruturas NET_BUFFER_LIST e os dados associados até que o envio seja concluído. O driver de miniporta deve chamar posteriormente NdisMSendNetBufferListsComplete para concluir a solicitação de envio.

Uma chamada de conclusão não indica necessariamente que os dados da rede foram transmitidos; no entanto, com exceção das NICs inteligentes, os dados da rede geralmente foram transmitidos. Uma chamada de conclusão, no entanto, indica que o driver de miniporta está pronto para liberar a propriedade das estruturas NET_BUFFER_LIST.

Depois que o driver de miniporta de WAN CoNDIS recebe NET_BUFFER_LIST estrutura que contém um pacote de dados de rede, ele deve enviar o pacote em uma conexão virtual ativa (VC).

Um driver de miniporta CoNDIS WAN especifica o número de pacotes pendentes que ele pode ter por VC no membro MaxSendWindow da estrutura NDIS_WAN_CO_INFO. O driver de miniporta fornece essa estrutura quando o driver de miniporta responde à solicitação de OID_WAN_CO_GET_INFO do driver de protocolo. No entanto, o driver de miniporta pode ajustar esse número dinamicamente e por VC usando o membro SendWindow na estrutura WAN_CO_LINKPARAMS . O driver de miniporta passa essa estrutura para a função NdisMCoIndicateStatusEx. NDISWAN usa o valor SendWindow atual como seu limite em envios pendentes. O driver de miniporta pode definir o valor do membro SendWindow como zero para especificar que ele não pode manipular nenhum pacote pendente. Ou seja, se o membro SendWindow estiver definido como zero, a janela de envio será desligada e o NDISWAN interromperá o envio de pacotes para o VC específico.

Os pacotes que um driver de miniporta WAN envia contêm enquadramento PPP HDLC simples se o enquadramento PPP estiver definido. Para enquadramento SLIP ou RAS, os pacotes contêm apenas a parte de dados sem nenhum tipo de enquadramento. Para obter mais informações sobre enquadramento de pacotes WAN, consulte WAN Packet Framing.

Um driver de miniporta WAN não deve tentar fornecer loopback de software ou loopback de modo promíscuo. Ambos os tipos de loopback são totalmente suportados pelo driver NDISWAN.