Estrutura OSVERSIONINFOEXA (winnt.h)

Contém informações de versão do sistema operacional. As informações incluem números de versão principal e secundária, um número de build, um identificador de plataforma e informações sobre pacotes de produtos e o Service Pack mais recente instalado no sistema. Essa estrutura é usada com as funções GetVersionEx e VerifyVersionInfo .

Sintaxe

typedef struct _OSVERSIONINFOEXA {
  DWORD dwOSVersionInfoSize;
  DWORD dwMajorVersion;
  DWORD dwMinorVersion;
  DWORD dwBuildNumber;
  DWORD dwPlatformId;
  CHAR  szCSDVersion[128];
  WORD  wServicePackMajor;
  WORD  wServicePackMinor;
  WORD  wSuiteMask;
  BYTE  wProductType;
  BYTE  wReserved;
} OSVERSIONINFOEXA, *POSVERSIONINFOEXA, *LPOSVERSIONINFOEXA;

Membros

dwOSVersionInfoSize

O tamanho dessa estrutura de dados, em bytes. Defina esse membro como sizeof(OSVERSIONINFOEX).

dwMajorVersion

O número de versão principal do sistema operacional. Para obter mais informações, consulte Comentários.

dwMinorVersion

O número de versão secundária do sistema operacional. Para obter mais informações, consulte Comentários.

dwBuildNumber

O número de build do sistema operacional.

dwPlatformId

A plataforma do sistema operacional. Esse membro pode ser VER_PLATFORM_WIN32_NT (2).

szCSDVersion[128]

Uma cadeia de caracteres terminada em nulo, como "Service Pack 3", que indica o Service Pack mais recente instalado no sistema. Se nenhum Service Pack tiver sido instalado, a cadeia de caracteres estará vazia.

wServicePackMajor

O número de versão principal do Service Pack mais recente instalado no sistema. Por exemplo, para o Service Pack 3, o número da versão principal é 3. Se nenhum Service Pack tiver sido instalado, o valor será zero.

wServicePackMinor

O número de versão secundária do Service Pack mais recente instalado no sistema. Por exemplo, para Service Pack 3, o número de versão secundária é 0.

wSuiteMask

Uma máscara de bits que identifica os pacotes de produtos disponíveis no sistema. Esse membro pode ser uma combinação dos valores a seguir.

Valor Significado
VER_SUITE_BACKOFFICE
0x00000004
Os componentes do Microsoft BackOffice estão instalados.
VER_SUITE_BLADE
0x00000400
Windows Server 2003, Web Edition está instalado.
VER_SUITE_COMPUTE_SERVER
0x00004000
Windows Server 2003, Compute Cluster Edition está instalado.
VER_SUITE_DATACENTER
0x00000080
O Windows Server 2008 Datacenter, Windows Server 2003, Datacenter Edition ou Windows 2000 Datacenter Server está instalado.
VER_SUITE_ENTERPRISE
0x00000002
O Windows Server 2008 Enterprise, Windows Server 2003, Edição Enterprise ou Windows 2000 Advanced Server está instalado. Consulte a seção Comentários para obter mais informações sobre esse sinalizador de bit.
VER_SUITE_EMBEDDEDNT
0x00000040
O Windows XP Embedded está instalado.
VER_SUITE_PERSONAL
0x00000200
O Windows Vista Home Premium, o Windows Vista Home Basic ou o Windows XP Home Edition está instalado.
VER_SUITE_SINGLEUSERTS
0x00000100
Há suporte para Área de Trabalho Remota, mas há suporte apenas para uma sessão interativa. Esse valor é definido, a menos que o sistema esteja em execução no modo de servidor de aplicativos.
VER_SUITE_SMALLBUSINESS
0x00000001
O Microsoft Small Business Server já foi instalado no sistema, mas pode ter sido atualizado para outra versão do Windows. Consulte a seção Comentários para obter mais informações sobre esse sinalizador de bit.
VER_SUITE_SMALLBUSINESS_RESTRICTED
0x00000020
O Microsoft Small Business Server é instalado com a licença de cliente restritiva em vigor. Consulte a seção Comentários para obter mais informações sobre esse sinalizador de bit.
VER_SUITE_STORAGE_SERVER
0x00002000
O Windows Storage Server 2003 R2 ou o Windows Storage Server 2003 está instalado.
VER_SUITE_TERMINAL
0x00000010
Os Serviços de Terminal estão instalados. Esse valor é sempre definido.

Se VER_SUITE_TERMINAL estiver definido , mas VER_SUITE_SINGLEUSERTS não estiver definido, o sistema estará em execução no modo de servidor de aplicativos.

VER_SUITE_WH_SERVER
0x00008000
O Windows Home Server está instalado.
VER_SUITE_MULTIUSERTS
0x00020000
O modo AppServer está habilitado.

wProductType

Qualquer informação adicional sobre o sistema. Esse membro pode ser um dos valores a seguir.

Valor Significado
VER_NT_DOMAIN_CONTROLLER
0x0000002
O sistema é um controlador de domínio e o sistema operacional é Windows Server 2012 , Windows Server 2008 R2, Windows Server 2008, Windows Server 2003 ou Windows 2000 Server.
VER_NT_SERVER
0x0000003
O sistema operacional é Windows Server 2012, Windows Server 2008 R2, Windows Server 2008, Windows Server 2003 ou Windows 2000 Server.

Observe que um servidor que também é um controlador de domínio é relatado como VER_NT_DOMAIN_CONTROLLER, não VER_NT_SERVER.

VER_NT_WORKSTATION
0x0000001
O sistema operacional é Windows 8, Windows 7, Windows Vista, Windows XP Professional, Windows XP Home Edition ou Windows 2000 Professional.

wReserved

Reservado para uso futuro.

Comentários

Confiar em informações de versão não é a melhor maneira de testar um recurso. Em vez disso, consulte a documentação do recurso de interesse. Para obter mais informações sobre técnicas comuns para detecção de recursos, consulte Versão do sistema operacional.

Se você precisar de um sistema operacional específico, use-o como uma versão mínima com suporte, em vez de projetar o teste para um sistema operacional. Dessa forma, seu código de detecção continuará funcionando em versões futuras do Windows.

A tabela a seguir resume os valores retornados por versões com suporte do Windows. Use as informações na coluna rotulada como "Outros" para distinguir entre sistemas operacionais com números de versão idênticos.

Sistema operacional Número de versão dwMajorVersion dwMinorVersion Outro
Windows 10 10.0* 10 0 OSVERSIONINFOEX.wProductType == VER_NT_WORKSTATION
Windows Server 2016 10.0* 10 0 OSVERSIONINFOEX.wProductType != VER_NT_WORKSTATION
Windows 8.1 6.3* 6 3 OSVERSIONINFOEX.wProductType == VER_NT_WORKSTATION
Windows Server 2012 R2 6.3* 6 3 OSVERSIONINFOEX.wProductType != VER_NT_WORKSTATION
Windows 8 6.2 6 2 OSVERSIONINFOEX.wProductType == VER_NT_WORKSTATION
Windows Server 2012 6.2 6 2 OSVERSIONINFOEX.wProductType != VER_NT_WORKSTATION
Windows 7 6.1 6 1 OSVERSIONINFOEX.wProductType == VER_NT_WORKSTATION
Windows Server 2008 R2 6.1 6 1 OSVERSIONINFOEX.wProductType != VER_NT_WORKSTATION
Windows Server 2008 6,0 6 0 OSVERSIONINFOEX.wProductType != VER_NT_WORKSTATION
Windows Vista 6,0 6 0 OSVERSIONINFOEX.wProductType == VER_NT_WORKSTATION
Windows Server 2003 R2 5.2 5 2 GetSystemMetrics(SM_SERVERR2) != 0
Windows Home Server 5.2 5 2 OSVERSIONINFOEX.wSuiteMask & VER_SUITE_WH_SERVER
Windows Server 2003 5.2 5 2 GetSystemMetrics(SM_SERVERR2) == 0
Windows XP Professional x64 Edition 5.2 5 2 (OSVERSIONINFOEX.wProductType == VER_NT_WORKSTATION) && (SYSTEM_INFO.wProcessorArchitecture==PROCESSOR_ARCHITECTURE_AMD64)
Windows XP 5.1 5 1 Não aplicável
Windows 2000 5.0 5 0 Não aplicável
*Para aplicativos que foram manifestados para Windows 8.1 ou Windows 10. 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). Para manifestar seus aplicativos para Windows 8.1 ou Windows 10, consulte Direcionando seu aplicativo para Windows.
 

Você não deve contar apenas com o sinalizador VER_SUITE_SMALLBUSINESS para determinar se o Small Business Server foi instalado no sistema, pois esse sinalizador e o sinalizador VER_SUITE_SMALLBUSINESS_RESTRICTED são definidos quando este pacote de produtos é instalado. Se você atualizar essa instalação para o Windows Server, Standard Edition, o sinalizador VER_SUITE_SMALLBUSINESS_RESTRICTED será limpo. No entanto, o sinalizador VER_SUITE_SMALLBUSINESS permanecerá definido. Nesse caso, isso indica que o Small Business Server já foi instalado nesse sistema. Se essa instalação for atualizada para o Windows Server, Edição Enterprise, o sinalizador VER_SUITE_SMALLBUSINESS permanecerá definido.

Se o modo de compatibilidade estiver em vigor, a estrutura OSVERSIONINFOEX conterá informações sobre o sistema operacional selecionado para compatibilidade do aplicativo.

Para determinar se um aplicativo baseado em Win32 está em execução no WOW64, chame a função IsWow64Process . Para determinar se o sistema está executando uma versão de 64 bits do Windows, chame a função GetNativeSystemInfo .

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

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

Exemplos

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

Observação

O cabeçalho winnt.h define OSVERSIONINFOEX 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]
Cabeçalho winnt.h (inclua Windows.h)

Confira também

IsWow64Process

OSVERSIONINFO

APIs auxiliares de versão