Compartilhar via


Função VerifyVersionInfoA (winbase.h)

Compara um conjunto de requisitos de versão do sistema operacional com os valores correspondentes para a versão atualmente em execução do sistema. Essa função está sujeita a um comportamento baseado em manifesto. Para obter mais informações, consulte a seção Comentários.

Observação: Essa função foi preterida para o Windows 10. Consulte direcionando seus aplicativos para o Windows para obter mais informações.

Sintaxe

BOOL VerifyVersionInfoA(
  [in] LPOSVERSIONINFOEXA lpVersionInformation,
  [in] DWORD              dwTypeMask,
  [in] DWORDLONG          dwlConditionMask
);

Parâmetros

[in] lpVersionInformation

Um ponteiro para uma estrutura OSVERSIONINFOEX que contém os requisitos de versão do sistema operacional a serem comparados. O parâmetro dwTypeMask indica os membros dessa estrutura que contêm informações a serem comparadas.

Você deve definir o membro dwOSVersionInfoSize dessa estrutura para . Você também deve especificar dados válidos para os membros indicados por dwTypeMask. A função ignora os membros da estrutura para os quais o dwTypeMask correspondente bit não está definido.

[in] dwTypeMask

Uma máscara que indica os membros da estrutura OSVERSIONINFOEX a ser testada. Esse parâmetro pode ser um ou mais dos valores a seguir.

Valor Significado
VER_BUILDNUMBER
0x0000004
dwBuildNumber
VER_MAJORVERSION
0x0000002
dwMajorVersion

Se você estiver testando a versão principal, também deverá testar a versão secundária e as versões principais e secundárias do service pack.

VER_MINORVERSION
0x0000001
dwMinorVersion
VER_PLATFORMID
0x0000008
dwPlatformId
VER_SERVICEPACKMAJOR
0x0000020
wServicePackMajor
VER_SERVICEPACKMINOR
0x0000010
wServicePackMinor
VER_SUITENAME
0x0000040
wSuiteMask
VER_PRODUCT_TYPE
0x0000080
wProductType

[in] dwlConditionMask

O tipo de comparação a ser usado para cada membro lpVersionInfo sendo comparado. Para criar esse valor, chame a função VerSetConditionMask ou a macro VER_SET_CONDITION uma vez para cada membro OSVERSIONINFOEX sendo comparado.

Valor de retorno

Se o sistema operacional em execução atender aos requisitos especificados, o valor retornado será um valor diferente de zero.

Se o sistema atual não atender aos requisitos, o valor retornado será zero e GetLastError retornará ERROR_OLD_WIN_VERSION.

Se a função falhar, o valor retornado será zero e GetLastError retornará um código de erro diferente de ERROR_OLD_WIN_VERSION.

Observações

A função VerifyVersionInfo recupera informações de versão sobre o sistema operacional em execução no momento e compara-o com os membros válidos da estrutura de lpVersionInfo. Isso permite que você determine facilmente a presença de um conjunto necessário de condições de versão do sistema operacional. É preferível usar VerifyVersionInfo em vez de chamar a função GetVersionEx para executar suas próprias comparações.

Normalmente, VerifyVersionInfo retornará um valor diferente de zero somente se todos os testes especificados forem bem-sucedidos. No entanto, as versões principais, secundárias e de service pack são testadas de maneira hierárquica porque a versão do sistema operacional é uma combinação desses valores. Se houver uma condição para a versão principal, ela substituirá as condições especificadas para a versão secundária e a versão do service pack. (Não é possível testar a versão principal maior que 5 e a versão secundária menor ou igual a 1. Se você especificar esse teste, a função alterará a solicitação para testar uma versão secundária maior que 1, pois ela está executando uma operação maior que a da versão principal.)

A função testa esses valores nesta ordem: versão principal, versão secundária e versão do service pack. A função continua testando valores enquanto eles são iguais e é interrompida quando um dos valores não atende à condição especificada. Por exemplo, se você testar um sistema maior ou igual à versão 5.1 do service pack 1, o teste terá êxito se a versão atual for 6.0. (A versão principal é maior que a versão especificada, portanto, o teste é interrompido.) Da mesma forma, se você testar um sistema maior ou igual ao service pack 1 da versão 5.1, o teste terá êxito se a versão atual for 5.2. (A versão secundária é maior que as versões especificadas, portanto, o teste é interrompido.) No entanto, se você testar um sistema maior ou igual ao service pack 1 da versão 5.1, o teste falhará se a versão atual for 5.0 service pack 2. (A versão secundária não é maior que a versão especificada, portanto, o teste é interrompido.)

Para verificar um intervalo de versões do sistema, você deve chamar VerifyVersionInfo duas vezes. Por exemplo, para verificar se a versão do sistema é maior que 5.0, mas menor ou igual a 5.1, primeira chamada VerifyVersionInfo para testar se a versão principal é 5 e a versão secundária é maior que 0, em seguida, chame VerifyVersionInfo novamente para testar se a versão principal é 5 e a versão secundária é menor ou igual a 1.

Identificar o sistema operacional atual geralmente não é a melhor maneira de determinar se um recurso específico do sistema operacional está presente. Isso ocorre porque o sistema operacional pode ter tido novos recursos adicionados em uma DLL redistribuível. Em vez de usar GetVersionEx para determinar a plataforma do sistema operacional ou o número de versão, teste a presença do próprio recurso. Para obter mais informações, consulte de versão do sistema operacional.

Para verificar se o sistema operacional atual é a versão central de mídia ou tablet do Windows, chame GetSystemMetrics.

Windows 10: VerifyVersionInfo retorna false quando chamado por aplicativos que não têm um manifesto de compatibilidade para Windows 8.1 ou Windows 10 se o parâmetro lpVersionInfo estiver definido para que ele especifique o Windows 8.1 ou Windows 10, mesmo quando a versão atual do sistema operacional for Windows 8.1 ou Windows 10. Especificamente, VerifyVersionInfo tem o seguinte comportamento:

  • Se o aplicativo não tiver manifesto, VerifyVersionInfo se comportará como se a versão do sistema operacional fosse o Windows 8 (6.2).
  • Se o aplicativo tiver um manifesto que contenha o GUID que corresponde ao Windows 8.1, VerifyVersionInfo se comportará como se a versão do sistema operacional fosse o Windows 8.1 (6.3).
  • Se o aplicativo tiver um manifesto que contenha o GUID que corresponde ao Windows 10, VerifyVersionInfo se comportará como se a versão do sistema operacional fosse o Windows 10 (10.0).
As funções auxiliares de versão usam a função VerifyVersionInfo, de modo que o comportamento IsWindows8Point1OrGreater e IsWindows10OrGreater são afetados da mesma forma pela presença e conteúdo do manifesto.

Para manifestar seus aplicativos para Windows 8.1 ou Windows 10, consulte Direcionando seu aplicativo para Windows.

Exemplos

Para obter um exemplo, consulte Verificando a versão do sistema.

Nota

O cabeçalho winbase.h define VerifyVersionInfo como um alias que seleciona automaticamente a versão ANSI ou Unicode dessa função com base na definição da constante do pré-processador UNICODE. A combinação do uso do alias neutro de codificação com código que não é neutro em codificação pode levar a incompatibilidades que resultam em erros de compilação ou de runtime. Para obter mais informações, consulte Conventions for Function Prototypes.

Requisitos

Requisito Valor
de cliente com suporte mínimo Windows 2000 Professional [somente aplicativos da área de trabalho]
servidor com suporte mínimo Windows 2000 Server [somente aplicativos da área de trabalho]
da Plataforma de Destino Windows
cabeçalho winbase.h (inclua Windows.h)
biblioteca Kernel32.lib
de DLL Kernel32.dll

Consulte também

GetVersionEx

OSVERSIONINFOEX

de versão do sistema operacional

Funções de informações do sistema

VER_SET_CONDITION

VerSetConditionMask