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.
wProductType
Qualquer informação adicional sobre o sistema. Esse membro pode ser um dos valores a seguir.
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) |