Conceitos e definições de NDIS remotos
Esta seção apresenta uma visão geral dos requisitos do NDIS Remoto no canal de comunicação e dos drivers de camada inferior que são usados para se comunicar entre o host e o dispositivo NDIS remoto. Transições de estado do dispositivo e operações principais, como inicialização, parada e redefinição, também são descritas nesta seção.
Canal de Controle
O canal de controle deve ser confiável e garantir a entrega sequenciada. Ele é usado para toda a comunicação, exceto para a transmissão de pacotes de dados de rede. Todas as mensagens de controle necessárias, exceto REMOTE_NDIS_HALT_MSG e REMOTE_NDIS_INDICATE_STATUS_MSG, são trocas de solicitação e resposta iniciadas pelo host. O dispositivo deve responder dentro do período de tempo limite, conforme especificado para cada barramento.
Canal de Dados
O canal de dados é usado exclusivamente para a transmissão de pacotes de dados de rede. Ele pode consistir em vários subcanais (por exemplo, para qualidade variável de serviço) conforme definido para o barramento apropriado.
Inicialização e desarmessão
Os canais de dados e controle são inicializados e configurados conforme especificado para o barramento apropriado. O host envia uma mensagem REMOTE_NDIS_INITIALIZE_MSG para o dispositivo NDIS Remoto. O dispositivo NDIS Remoto fornece informações sobre seu tipo (sem conexão ou orientado à conexão), meio com suporte e versão na mensagem de resposta REMOTE_NDIS_INITIALIZE_CMPLT.
O host ou o dispositivo NDIS remoto podem derrubar o canal de comunicação por meio da mensagem REMOTE_NDIS_HALT_MSG . Todas as solicitações e pacotes pendentes são descartados no recebimento desta mensagem.
Definições de estado do dispositivo
Após a inicialização no nível do barramento, diz-se que o dispositivo está no estado não inicializado do RNDIS. Ao receber um REMOTE_NDIS_INITIALIZE_MSG e responder com um REMOTE_NDIS_INITIALIZE_CMPLT com um status de RNDIS_STATUS_SUCCESS, o dispositivo entra no estado inicializado por RNDIS.
Ao receber REMOTE_NDIS_SET_MSG especificar um valor de filtro diferente de zero para OID_GEN_CURRENT_PACKET_FILTER, o dispositivo entra no estado inicializado por dados RNDIS.
Quando no estado RNDIS-data-initialized, a recepção de um REMOTE_NDIS_SET_MSG especificando um valor de filtro zero para OID_GEN_CURRENT_PACKET_FILTER força o dispositivo de volta ao estado inicializado por RNDIS.
A recepção de REMOTE_NDIS_HALT_MSG ou uma desconexão no nível do barramento ou uma redefinição forçada a qualquer momento força o dispositivo ao estado não inicializado do RNDIS.
Parar
A qualquer momento em que o dispositivo estiver no estado inicializado por RNDIS ou RNDIS inicializado, o computador host poderá encerrar a funcionalidade NDIS remota do dispositivo enviando REMOTE_NDIS_HALT_MSG para o dispositivo.
Redefinindo o canal de comunicação
O canal de comunicação é redefinido quando ocorre um erro, como o tempo limite da mensagem. O host pode iniciar uma redefinição a qualquer momento quando o dispositivo estiver no estado inicializado por RNDIS enviando a mensagem REMOTE_NDIS_RESET_MSG para o dispositivo e o dispositivo deverá enviar uma mensagem de resposta quando tiver concluído a redefinição. Por exemplo, o host pode iniciar uma redefinição quando ocorreu um erro, como um tempo limite de mensagem.
Observe que essa é uma redefinição reversível no sentido de que todos os identificadores (por exemplo, VCs para dispositivos orientados a conexão) continuam válidos após a redefinição. O dispositivo NDIS Remoto descarta todas as solicitações e pacotes pendentes como parte do processo de redefinição. O dispositivo remoto pode redefinir alguns de seus componentes de hardware, mas mantém o canal de comunicação intacto.
Se o dispositivo NDIS Remoto executar uma reinicialização, esse evento será equivalente a "Remover" seguido por "Adicionar" Plug and Play eventos. O driver de miniporto NDIS do host será interrompido e removido e uma nova instância será adicionada e iniciada. Toda a inicialização de NDIS remoto e de nível de barramento será executada novamente. Um dispositivo NDIS remoto pode ser reiniciado em caso de falha crítica do dispositivo.
Controle de fluxo
O dispositivo NDIS Remoto pode precisar exercer o controle de fluxo para evitar que o host transborde seus buffers de dados com pacotes. Quaisquer provisionamentos ou requisitos de controle de fluxo são específicos do barramento.
Ordenação de bytes numéricos
Todos os valores numéricos em mensagens NDIS remotas devem ser codificados no formato little-endian (byte menos significativo primeiro).
Encapsulamento de mensagens do NDIS
Não há nenhuma especificação de NDIS remoto para a maneira como as mensagens NDIS são encapsuladas em mensagens de barramento nativas ou primitivas.