Estructura OSVERSIONINFOEXW (winnt.h)

Contiene información de la versión del sistema operativo. La información incluye números de versión principales y secundarias, 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 _OSVERSIONINFOEXW {
  DWORD dwOSVersionInfoSize;
  DWORD dwMajorVersion;
  DWORD dwMinorVersion;
  DWORD dwBuildNumber;
  DWORD dwPlatformId;
  WCHAR szCSDVersion[128];
  WORD  wServicePackMajor;
  WORD  wServicePackMinor;
  WORD  wSuiteMask;
  BYTE  wProductType;
  BYTE  wReserved;
} OSVERSIONINFOEXW, *POSVERSIONINFOEXW, *LPOSVERSIONINFOEXW, RTL_OSVERSIONINFOEXW, *PRTL_OSVERSIONINFOEXW;

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

La 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.

Valor Significado
VER_SUITE_BACKOFFICE
0x00000004
Se instalan los componentes de Microsoft BackOffice.
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
Windows Server 2008 Datacenter, Windows Server 2003, Datacenter Edition o Windows 2000 Datacenter Server está instalado.
VER_SUITE_ENTERPRISE
0x00000002
Windows Server 2008 Enterprise, Windows Server 2003, Enterprise Edition o Windows 2000 Advanced Server está instalado. Consulte la sección Comentarios para obtener más información sobre esta marca de bits.
VER_SUITE_EMBEDDEDNT
0x00000040
Windows XP Embedded está instalado.
VER_SUITE_PERSONAL
0x00000200
Windows Vista Home Premium, Windows Vista Home Basic o Windows XP Home Edition está instalado.
VER_SUITE_SINGLEUSERTS
0x00000100
Escritorio remoto es compatible, pero solo se admite una sesión interactiva. Este valor se establece a menos que el sistema se ejecute en modo de servidor de aplicaciones.
VER_SUITE_SMALLBUSINESS
0x00000001
Microsoft Small Business Server se instaló una vez en el sistema, pero es posible que se haya actualizado a otra versión de Windows. Consulte la sección Comentarios para obtener más información sobre esta marca de bits.
VER_SUITE_SMALLBUSINESS_RESTRICTED
0x00000020
Microsoft Small Business Server se instala con la licencia de cliente restrictiva en vigor. Consulte la sección Comentarios para obtener más información sobre esta marca de bits.
VER_SUITE_STORAGE_SERVER
0x00002000
Windows Storage Server 2003 R2 o Windows Storage Server 2003is instalado.
VER_SUITE_TERMINAL
0x00000010
Terminal Services está instalado. Este valor siempre se establece.

Si se establece VER_SUITE_TERMINAL pero no se establece VER_SUITE_SINGLEUSERTS , el sistema se ejecuta en modo de servidor de aplicaciones.

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

wProductType

Cualquier información adicional sobre el sistema. Este miembro puede ser uno de los valores siguientes.

Valor Significado
VER_NT_DOMAIN_CONTROLLER
0x0000002
El sistema es un controlador de dominio y el sistema operativo es Windows Server 2012 , Windows Server 2008 R2, Windows Server 2008, Windows Server 2003 o Windows 2000 Server.
VER_NT_SERVER
0x0000003
El sistema operativo es Windows Server 2012, Windows Server 2008 R2, Windows Server 2008, Windows Server 2003 o Windows 2000 Server.

Tenga en cuenta que un servidor que también es un controlador de dominio se notifica como VER_NT_DOMAIN_CONTROLLER, no VER_NT_SERVER.

VER_NT_WORKSTATION
0x0000001
El sistema operativo es Windows 8, Windows 7, Windows Vista, Windows XP Professional, Windows XP Home Edition o Windows 2000 Professional.

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 un 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 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 de 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 de VER_SUITE_SMALLBUSINESS_RESTRICTED ; sin embargo, la marca de 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 neutro de codificación con código que no es neutral de codificación puede provocar discrepancias que dan lugar a errores de compilación o en 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 (incluya Windows.h)

Consulte también

IsWow64Process

OSVERSIONINFO

API del asistente de versiones