Partilhar via


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 que é definido como uma estrutura NDIS_OBJECT_HEADER e os drivers NDIS devem fornecer suporte para essas informações de versão.

O NDIS pode suportar drivers que suportam uma versão NDIS maior ou menor do que a versão atual do NDIS (ou seja, a versão do NDIS que é suportada na versão do sistema operacional que um computador está executando). Além disso, a versão 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 que o driver suporta. 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 verificar a versão atual do NDIS e deve se registrar como um driver que suporta o nível mais alto de NDIS que está 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.

Observação Um driver não é necessário para suportar todos os recursos em uma revisão posterior de uma estrutura. Por exemplo, um driver de miniporta pode criar uma estrutura da versão 2 e fornecer valores apropriados para uma estrutura da versão 1.

Para acessar os membros em estruturas que possuem informações de versão, os drivers NDIS devem concluir o seguinte processo:

  • Verifique os membros Header.Revision e Header.Size antes de acessar qualquer membro na estrutura.

  • Para estruturas de versões anteriores (ou seja, estruturas que têm um número de revisão menor do que o número associado à versão NDIS suportada pelo 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 (onde Nn é o número de revisão da estrutura que o driver está usando) e o driver deve lidar corretamente com as informações na estrutura conforme apropriado para essa revisão.
  • Para estruturas de versão posterior (ou seja, estruturas que têm um número de revisão maior do que o número associado à versão NDIS suportada pelo driver), o driver pode usar a estrutura como se fosse uma revisão mais antiga da estrutura. A estrutura da versão superior é sempre compatível com a versão mais antiga.

  • Os controladores precisam utilizar a versão correta de uma estrutura para a versão NDIS registada do controlador. Por exemplo, um driver NDIS 6.1 deve relatar seus recursos de descarga em estruturas NDIS_OFFLOAD definindo os membros na estrutura NDIS_OBJECT_HEADER para indicar NDIS_OFFLOAD_REVISION_2. No entanto, o driver não precisa suportar todos os recursos que estão incluídos com NDIS_OFFLOAD_REVISION_2.

  • Um driver que lida com êxito com uma solicitação de conjunto OID deve definir o membro SupportedRevision na estrutura NDIS_OID_REQUEST após o retorno da solicitação de conjunto OID. O membro SupportedRevision notifica o iniciador da solicitação da revisão suportada pelo driver. Por exemplo, um driver de miniporta pode criar uma estrutura de Xxx_REVISION_2, fornecer valores apropriados para uma estrutura de Xxx_REVISION_1 e preencher o restante da estrutura com zeros. O driver de miniporta reportaria Xxx_REVISION_1 no membro SupportedRevision. Nesse caso, um driver de protocolo que pode suportar o Xxx_REVISION_2 usará as informações do Xxx_REVISION_1 que o driver de miniporta suportava.

  • Para determinar quais informações foram processadas com sucesso por um driver subjacente, os drivers sobrepostos que emitem solicitações OID devem verificar o valor no membro SupportedRevision na estrutura NDIS_OID_REQUEST após o retorno da solicitação OID.

Visão geral das versões do NDIS

Especificando informações de versão do NDIS