Estructura OSVERSIONINFOEXA (winnt.h)
Contiene información de versión del sistema operativo. La información incluye números de versión principal y secundaria, un número de compilación, un identificador de plataforma e información sobre los conjuntos de productos y el Service Pack más reciente instalado en el sistema. Esta estructura se usa con las funciones GetVersionEx y VerifyVersionInfo .
Sintaxis
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;
Miembros
dwOSVersionInfoSize
Tamaño de esta estructura de datos, en bytes. Establezca este miembro en sizeof(OSVERSIONINFOEX)
.
dwMajorVersion
Número de versión principal del sistema operativo. Para obtener más información, vea la sección Comentarios.
dwMinorVersion
Número de versión secundaria del sistema operativo. Para obtener más información, vea la sección Comentarios.
dwBuildNumber
Número de compilación del sistema operativo.
dwPlatformId
Plataforma del sistema operativo. Este miembro puede ser VER_PLATFORM_WIN32_NT (2).
szCSDVersion[128]
Cadena terminada en null, como "Service Pack 3", que indica el Service Pack más reciente instalado en el sistema. Si no se ha instalado ningún Service Pack, la cadena está vacía.
wServicePackMajor
Número de versión principal del Service Pack más reciente instalado en el sistema. Por ejemplo, para Service Pack 3, el número de versión principal es 3. Si no se ha instalado ningún Service Pack, el valor es cero.
wServicePackMinor
Número de versión secundaria del Service Pack más reciente instalado en el sistema. Por ejemplo, para Service Pack 3, el número de versión secundaria es 0.
wSuiteMask
Máscara de bits que identifica los conjuntos de productos disponibles en el sistema. Este miembro puede ser una combinación de los valores siguientes.
wProductType
Cualquier información adicional sobre el sistema. Este miembro puede ser uno de los siguientes valores.
wReserved
Reservado para uso futuro.
Comentarios
Confiar en la información de versión no es la mejor manera de probar una característica. En su lugar, consulte la documentación de la característica de interés. Para obtener más información sobre las técnicas comunes para la detección de características, consulte Versión del sistema operativo.
Si necesita un sistema operativo determinado, asegúrese de usarlo como una versión mínima admitida, en lugar de diseñar la prueba para el sistema operativo. De este modo, el código de detección seguirá funcionando en versiones futuras de Windows.
En la tabla siguiente se resumen los valores devueltos por las versiones compatibles de Windows. Use la información de la columna con la etiqueta "Other" para distinguir entre sistemas operativos con números de versión idénticos.
Sistema operativo | Número de la versión | dwMajorVersion | dwMinorVersion | Otros |
---|---|---|---|---|
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 | No aplicable |
Windows 2000 | 5.0 | 5 | 0 | No aplicable |
*Para las aplicaciones que se han manifiesto para Windows 8.1 o Windows 10. Las aplicaciones que no se manifiestan para Windows 8.1 o Windows 10 devolverán el valor de versión del sistema operativo Windows 8 (6.2). Para manifestar las aplicaciones para Windows 8.1 o Windows 10, consulte Selección de destino de la aplicación para Windows. |
No debe confiar solo en la marca VER_SUITE_SMALLBUSINESS para determinar si Small Business Server se ha instalado en el sistema, ya que esta marca y la marca VER_SUITE_SMALLBUSINESS_RESTRICTED se establecen cuando se instala este conjunto de productos. Si actualiza esta instalación a Windows Server, Standard Edition, se borrará la marca VER_SUITE_SMALLBUSINESS_RESTRICTED ; sin embargo, la marca VER_SUITE_SMALLBUSINESS permanecerá establecida. En este caso, esto indica que Small Business Server se instaló una vez en este sistema. Si esta instalación se actualiza aún más a Windows Server, Enterprise Edition, la marca VER_SUITE_SMALLBUSINESS permanecerá establecida.
Si el modo de compatibilidad está en vigor, la estructura OSVERSIONINFOEX contiene información sobre el sistema operativo seleccionado para la compatibilidad de aplicaciones.
Para determinar si una aplicación basada en Win32 se ejecuta en WOW64, llame a la función IsWow64Process . Para determinar si el sistema ejecuta una versión de 64 bits de Windows, llame a la función GetNativeSystemInfo .
La función GetSystemMetrics proporciona la siguiente información adicional sobre el sistema operativo actual.
Producto | Parámetro |
---|---|
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 |
Ejemplos
Para obtener un ejemplo, consulte Obtención de la versión del sistema.
Nota
El encabezado winnt.h define OSVERSIONINFOEX como alias que selecciona automáticamente la versión ANSI o Unicode de esta función en función de la definición de la constante de preprocesador UNICODE. La combinación del uso del alias neutral de codificación con código que no es neutral de codificación puede dar lugar a errores de coincidencia que dan lugar a errores de compilación o tiempo de ejecución. Para obtener más información, vea Convenciones para prototipos de función.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Windows 2000 Professional [solo aplicaciones de escritorio] |
Servidor mínimo compatible | Windows 2000 Server [solo aplicaciones de escritorio] |
Encabezado | winnt.h (incluye Windows.h) |