Partilhar via


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.