Compartilhar via


Função GetVersionExA (sysinfoapi.h)

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

Com a versão do 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 se manifesta.

Os aplicativos não manifestados para Windows 8.1 ou Windows 10 retornarão o valor da versão do sistema operacional Windows 8 (6.2). Depois que um aplicativo é manifestado para uma determinada versão do sistema operacional, GetVersionEx sempre retornará a versão para a qual o aplicativo se manifesta 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 dwOSVersionInfoSize membro da estrutura conforme apropriado para indicar qual estrutura de dados está sendo passada para essa função.

Valor de retorno

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 OSVERSIONINFOA ou estrutura de OSVERSIONINFOEXA.

Observações

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.

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

Produto Ambiente
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 verificar se há 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 de 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, verifique se há 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.

Nota

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

Consulte também

getversion

OSVERSIONINFOA

OSVERSIONINFOEXA

de versão do sistema operacional

Funções de informações do sistema

VerifyVersionInfo

Funções auxiliares de versão