Design do driver GNSS (Global Navigation Satellite System)
Discute os princípios de design a serem considerados ao desenvolver um driver GNSS (Global Navigation Satellite System) para Windows 10 incluindo estruturas de dados, relatórios de erros e controle de versão do driver.
Estruturas de dados
Para compatibilidade com versões anteriores e extensibilidade futura, todas as estruturas de dados começam com um número de versão e tamanho para acomodar extensões futuras e problemas de compatibilidade com versões anteriores. Como uma proteção adicional, cada estrutura também tem um buffer de preenchimento para manter o tamanho da estrutura estática igual mesmo quando novos campos são adicionados. Isso é para proteger contra drivers GNSS mais antigos usando erroneamente o tamanho de tempo de compilação estático da estrutura (usando sizeof) em vez do tamanho dinâmico da estrutura.
A menos que especificado de outra forma, todos os parâmetros seguirão o SISTEMA Internacional de Unidades (SI):
Parâmetros | Unidades |
---|---|
Distância, limite ou nível | metro |
Tempo limite ou intervalo | second |
Velocidade | medidor/segundo |
Relatório de erros
O DDI do GNSS (Global Navigation Satellite System) espera um NTSTATUS como um valor retornado do driver. O HLOS (sistema operacional de alto nível) atua apenas em casos de êxito e falha com base nessas mensagens de erro e não analisa uma mensagem de erro específica. Ainda assim, é preferível que o driver retorne erros mapeados de perto para a mensagem de erro NTSTATUS correspondente. O driver GNSS pode enviar suas próprias mensagens de erro NTSTATUS personalizadas que podem ser úteis para fins de diagnóstico.
Controle de versão do driver
Cada estrutura especificada para a DDI do GNSS (Global Navigation Satellite System) contém um campo de versão do driver e muitas estruturas contêm um campo de preenchimento. Ambos os componentes são usados para atenuar novas versões da DDI do GNSS, usando as seguintes políticas:
A estrutura e o driver comunicam suas respectivas versões usando o processo de troca de recursos. Essas IOCTLs são consideradas especiais, pois comunicam suas versões usando o campo de versão. Portanto, as implementações em torno da verificação de recursos de dispositivo e plataforma devem marcar explicitamente as versões retornadas primeiro e armazená-la para uso posteriormente. O membro de versão da estrutura GNSS_DEVICE_CAPABILITY comunica o número de versão do driver. O membro de versão da estrutura GNSS_PLATFORM_CAPABILITY comunica o número de versão do adaptador GNSS.
Sempre que um novo campo for adicionado, se a estrutura tiver um campo de preenchimento, o espaço será retirado do preenchimento em vez de adicionar à estrutura, o que manterá a compatibilidade binária
Sempre que um novo campo é adicionado, a versão da DDI do GNSS é considerada incrementada. Isso será refletido em um comentário no próprio cabeçalho DDI do GNSS, mas NÃO exposto como uma constante. O adaptador GNSS e o driver GNSS usarão valores constantes privados para indicar sua versão atual. Isso permite que o adaptador GNSS e o driver sejam codificados em uma versão específica.
O adaptador GNSS deve ser compatível com versões anteriores do driver GNSS. Se uma alteração de protocolo for introduzida em uma nova versão do DDI, um adaptador GNSS em conformidade com a nova DDI GNSS deverá implementar o novo protocolo somente para a nova versão do driver e usar o protocolo antigo para a versão mais antiga do driver.
O driver GNSS deve ser compatível com versões mais recentes do adaptador GNSS e deve tratar versões mais recentes do adaptador GNSS da mesma maneira que a versão atual em que ele está codificado.
Uma versão mais antiga do adaptador GNSS não deve funcionar corretamente com uma versão mais recente do driver GNSS. Para facilitar o co-desenvolvimento do adaptador GNSS e do driver GNSS em relação a uma nova versão do DDI, nenhuma versão estrita marcar existirá no adaptador GNSS para bloquear drivers GNSS mais recentes. No entanto, um driver GNSS implementado em relação a uma versão mais recente do DDI não será enviado para dispositivos de varejo que contenham um adaptador GNSS implementado em uma versão mais antiga da DDI do GNSS.
Nenhum Windows 8.1 ou drivers de sensor GNSS mais antigos não terá suporte pelo adaptador GNSS. Esses drivers continuariam a funcionar em Windows 10 por meio da pilha herdada. Na presença de outro driver GNSS Windows 10, o uso do driver de sensor GNSS herdado é indefinido.