Função GetVersionExA (sysinfoapi.h)

GetVersionExA pode ser alterado ou indisponível para versões após Windows 8.1. Em vez disso, use as funções auxiliares de versão. Para Windows 10 aplicativos, consulte Direcionando seus aplicativos para Windows.

Com o lançamento de Windows 8.1, o comportamento da API GetVersionEx foi alterado no valor que retornará para a versão do sistema operacional. O valor retornado pela função GetVersionEx agora depende de como o aplicativo é manifestado.

Os aplicativos não manifestados para Windows 8.1 ou Windows 10 retornarão o valor de versão do sistema operacional Windows 8 (6.2). Depois que um aplicativo for manifestado para uma determinada versão do sistema operacional, o GetVersionEx sempre retornará a versão para a qual o aplicativo se manifestará em versões futuras. Para manifestar seus aplicativos para Windows 8.1 ou Windows 10, consulte Direcionando seu aplicativo para Windows.

Sintaxe

NOT_BUILD_WINDOWS_DEPRECATE BOOL GetVersionExA(
  [in, out] LPOSVERSIONINFOA lpVersionInformation
);

Parâmetros

[in, out] lpVersionInformation

Uma estrutura OSVERSIONINFOA ou OSVERSIONINFOEXA que recebe as informações do sistema operacional.

Antes de chamar a função GetVersionEx , defina o membro dwOSVersionInfoSize da estrutura conforme apropriado para indicar qual estrutura de dados está sendo passada para essa função.

Retornar valor

Se a função for bem-sucedida, o valor retornado será um valor diferente de zero.

Se a função falhar, o valor retornado será zero. Para obter informações de erro estendidas, chame GetLastError. A função falhará se você especificar um valor inválido para o membro dwOSVersionInfoSize da estrutura OSVERSIONINFOA ou OSVERSIONINFOEXA .

Comentários

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.

A função GetSystemMetrics fornece informações adicionais sobre o sistema operacional atual.

Produto Configuração
Windows XP Media Center Edition SM_MEDIACENTER
Windows XP Starter Edition SM_STARTER
Windows XP Tablet PC Edition SM_TABLETPC
Windows Server 2003 R2 SM_SERVERR2
 

Para marcar para sistemas operacionais específicos ou recursos do sistema operacional, use a função IsOS. A função GetProductInfo recupera o tipo de produto.

Para recuperar informações para o sistema operacional em um computador remoto, use a função NetWkstaGetInfo , a classe WMI Win32_OperatingSystem ou a propriedade OperatingSystem da interface IADsComputer .

Para comparar a versão atual do sistema com uma versão necessária, use a função VerifyVersionInfo em vez de usar GetVersionEx para executar a comparação por conta própria.

Se o modo de compatibilidade estiver em vigor, a função GetVersionEx relatará o sistema operacional conforme ele se identifica, que pode não ser o sistema operacional instalado. Por exemplo, se o modo de compatibilidade estiver em vigor, GetVersionEx relatará o sistema operacional selecionado para compatibilidade do aplicativo.

Exemplos

Ao usar a função GetVersionEx para determinar se o aplicativo está em execução em uma versão específica do sistema operacional, marcar para números de versão maiores ou iguais aos números de versão desejados. Isso garante que o teste seja bem-sucedido para versões posteriores do sistema operacional. Por exemplo, se o aplicativo exigir o Windows XP ou posterior, use o teste a seguir.

#include <windows.h>
#include <stdio.h>

void main()
{
    OSVERSIONINFO osvi;
    BOOL bIsWindowsXPorLater;

    ZeroMemory(&osvi, sizeof(OSVERSIONINFO));
    osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);

    GetVersionEx(&osvi);

    bIsWindowsXPorLater = 
       ( (osvi.dwMajorVersion > 5) ||
       ( (osvi.dwMajorVersion == 5) && (osvi.dwMinorVersion >= 1) ));

    if(bIsWindowsXPorLater)
        printf("The system meets the requirements.\n");
    else printf("The system does not meet the requirements.\n");
}

Para obter um exemplo que identifica o sistema operacional atual, consulte Obtendo a versão do sistema.

Observação

O cabeçalho sysinfoapi.h define GetVersionEx 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 [aplicativos da área de trabalho | Aplicativos UWP]
Servidor mínimo com suporte Windows 2000 Server [aplicativos da área de trabalho | Aplicativos UWP]
Plataforma de Destino Windows
Cabeçalho sysinfoapi.h (inclua Windows.h)
Biblioteca Kernel32.lib
DLL Kernel32.dll

Confira também

GetVersion

OSVERSIONINFOA

OSVERSIONINFOEXA

Versão do sistema operacional

Funções de informações do sistema

VerifyVersionInfo

Funções auxiliares de versão