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.
[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).
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 |