Requisitos de informações de versão para drivers NDIS
As estruturas NDIS que fornecem informações de versão têm um membro Header definido como uma estrutura NDIS_OBJECT_HEADER e os drivers NDIS devem fornecer suporte para essas informações de versão.
O NDIS pode dar suporte a drivers que dão suporte a uma versão NDIS superior ou inferior à versão atual do NDIS (ou seja, a versão do NDIS com suporte na versão do sistema operacional em que um computador está em execução). Além disso, a versão do NDIS registrada (ou seja, a versão que o driver relatou durante a inicialização) do driver pode ser menor do que a versão mais alta compatível com o driver. Por exemplo, um driver NDIS 5.1 ou um driver NDIS 6.1 pode ser executado em uma versão do sistema operacional que está executando o NDIS 6.0. O driver NDIS 5.1 simplesmente se registra como um driver NDIS 5.1 durante a inicialização. No entanto, o driver NDIS 6.1 deve marcar a versão atual do NDIS e deve se registrar como um driver que dê suporte ao nível mais alto de NDIS disponível (neste exemplo, NDIS 6.0). Para obter mais informações sobre como obter a versão atual do NDIS, consulte Obtendo a versão do NDIS.
Nota Um driver não é necessário para dar suporte a todos os recursos em uma revisão posterior de uma estrutura. Por exemplo, um driver de miniporto pode criar uma estrutura versão 2 e fornecer valores apropriados para uma estrutura de versão 1.
Para acessar os membros em estruturas que têm informações de versão, os drivers NDIS devem concluir o seguinte processo:
Verifique os membros Header.Revision e Header.Size antes de acessar os membros na estrutura.
Para estruturas de versão anteriores (ou seja, estruturas que têm um número de revisão menor do que o número associado à versão do NDIS compatível com o driver):
- O driver deve verificar se o valor Header.Size está correto para o valor Header.Revision . Por exemplo, o valor de NDIS_SIZEOF_Xxx_REVISION_1 está correto para Xxx_REVISION_1 mas é muito pequeno para Xxx_REVISION_2.
- O valor Header.Size deve ser igual ou maior que NDIS_SIZEOF_Xxx_REVISION_Nn (em que Nn é o número de revisão da estrutura que o driver está usando) e o driver deve manipular corretamente as informações na estrutura, conforme apropriado para essa revisão.
Para estruturas de versão posteriores (ou seja, estruturas que têm um número de revisão maior do que o número associado à versão do NDIS compatível com o driver), o driver pode usar a estrutura como se fosse uma revisão mais antiga da estrutura. A estrutura de versão superior é sempre compatível com a versão mais antiga.
Os drivers devem usar a revisão correta de uma estrutura para a versão NDIS registrada do driver. Por exemplo, um driver NDIS 6.1 deve relatar seus recursos de descarregamento em estruturas de NDIS_OFFLOAD definindo os membros na estrutura NDIS_OBJECT_HEADER para indicar NDIS_OFFLOAD_REVISION_2. No entanto, o driver não precisa dar suporte a todos os recursos incluídos no NDIS_OFFLOAD_REVISION_2.
Um driver que lida com êxito com uma solicitação de conjunto de OID deve definir o membro SupportedRevision na estrutura NDIS_OID_REQUEST após o retorno da solicitação de conjunto de OID. O membro SupportedRevision notifica o iniciador da solicitação da revisão com suporte do driver. Por exemplo, um driver de miniporte pode criar uma estrutura Xxx_REVISION_2, fornecer valores apropriados para uma estrutura Xxx_REVISION_1 e preencher o restante da estrutura com zeros. O driver de miniporte relataria Xxx_REVISION_1 no membro SupportedRevision . Nesse caso, um driver de protocolo que pode dar suporte a um Xxx_REVISION_2 usará Xxx_REVISION_1 informações compatíveis com o driver de miniporte.
Para determinar quais informações foram tratadas com êxito por um driver subjacente, os drivers sobrepostos que emitem solicitações OID devem marcar o valor no membro SupportedRevision na estrutura NDIS_OID_REQUEST após o retorno da solicitação OID.