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 em execução no momento do sistema. Essa função está sujeita ao comportamento baseado em manifesto. Para obter mais informações, consulte a seção Comentários.

Nota: Essa função foi preterida para Windows 10. Consulte Direcionando seus aplicativos para 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 como sizeof(OSVERSIONINFOEX). Você também deve especificar dados válidos para os membros indicados por dwTypeMask. A função ignora membros de estrutura para os quais o bit dwTypeMask correspondente não está definido.

[in] dwTypeMask

Uma máscara que indica os membros da estrutura OSVERSIONINFOEX a ser testada. Esse parâmetro pode usar um 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 principal e secundária 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 que está sendo comparado. Para criar esse valor, chame a função VerSetConditionMask ou a macro VER_SET_CONDITION uma vez para cada membro OSVERSIONINFOEX que está sendo comparado.

Retornar valor

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.

Comentários

A função VerifyVersionInfo recupera informações de versão sobre o sistema operacional em execução no momento e a compara com os membros válidos da estrutura 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 existir 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 porque está executando uma operação maior que na 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 para quando um dos valores não atende à condição especificada. Por exemplo, se você testar um sistema maior ou igual à versão 5.1 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 à versão 5.1 service pack 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 à versão 5.1 service pack 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, primeiro chame VerifyVersionInfo para testar se a versão principal é 5 e a versão secundária é maior que 0 e, 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 adicionado novos recursos 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 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 Windows 8.1 ou Windows 10, mesmo quando o sistema operacional atual version é 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 Windows 8 (6.2).
  • Se o aplicativo tiver um manifesto que contenha o GUID que corresponde a Windows 8.1, VerifyVersionInfo se comportará como se a versão do sistema operacional fosse Windows 8.1 (6.3).
  • Se o aplicativo tiver um manifesto que contém o GUID que corresponde a Windows 10, VerifyVersionInfo se comportará como se a versão do sistema operacional fosse Windows 10 (10.0).
As funções Auxiliar de Versão usam a função VerifyVersionInfo , portanto, o comportamento IsWindows8Point1OrGreater e IsWindows10OrGreater são afetados da mesma forma pela presença e pelo 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.

Observação

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 de pré-processador UNICODE. Misturar o uso do alias neutro de codificação com código que não seja neutro em codificação pode levar a incompatibilidades que resultam em erros de compilação ou de runtime. Para obter mais informações, consulte Convenções para protótipos de função.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 2000 Professional [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows 2000 Server [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho winbase.h (incluir Windows.h)
Biblioteca Kernel32.lib
DLL Kernel32.dll

Confira também

Getversionex

OSVERSIONINFOEX

Versão do sistema operacional

Funções de informações do sistema

VER_SET_CONDITION

VerSetConditionMask