Compartir a través de


Función GetVersionExA (sysinfoapi.h)

GetVersionExA puede modificarse o no estar disponible para versiones posteriores a Windows 8.1. En su lugar, use las funciones del asistente de versiones de . Para las aplicaciones de Windows 10, consulta Destino de tus aplicaciones para Windows.

Con el lanzamiento de Windows 8.1, el comportamiento de la API de GetVersionEx ha cambiado en el valor que devolverá para la versión del sistema operativo. El valor devuelto por la función GetVersionEx ahora depende de cómo se manifiesta la aplicación.

Las aplicaciones no manifestadas para Windows 8.1 o Windows 10 devolverán el valor de la versión del sistema operativo Windows 8 (6.2). Una vez que se manifiesta una aplicación para una versión de sistema operativo determinada, GetVersionEx siempre devolverá la versión para la que se manifiesta la aplicación en versiones futuras. Para manifestar las aplicaciones para Windows 8.1 o Windows 10, consulte Destino de la aplicación para Windows.

Sintaxis

NOT_BUILD_WINDOWS_DEPRECATE BOOL GetVersionExA(
  [in, out] LPOSVERSIONINFOA lpVersionInformation
);

Parámetros

[in, out] lpVersionInformation

Estructura OSVERSIONINFOA o OSVERSIONINFOEXA que recibe la información del sistema operativo.

Antes de llamar a la función getVersionEx de , establezca el dwOSVersionInfoSize miembro de la estructura según corresponda para indicar qué estructura de datos se pasa a esta función.

Valor devuelto

Si la función se ejecuta correctamente, el valor devuelto es un valor distinto de cero.

Si se produce un error en la función, el valor devuelto es cero. Para obtener información de error extendida, llame a GetLastError. Se produce un error en la función si especifica un valor no válido para el dwOSVersionInfoSize miembro de la OSVERSIONINFOA o OSVERSIONINFOEXA estructura.

Observaciones

La identificación del sistema operativo actual no suele ser la mejor manera de determinar si existe una característica de sistema operativo determinada. Esto se debe a que el sistema operativo puede haber tenido nuevas características agregadas en un archivo DLL redistribuible. En lugar de usar getVersionEx para determinar el número de versión o la plataforma del sistema operativo, pruebe la presencia de la propia característica. Para obtener más información, vea versión del sistema operativo.

La función GetSystemMetrics proporciona información adicional sobre el sistema operativo actual.

Producto Ajuste
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 comprobar si hay sistemas operativos específicos o características del sistema operativo, use la función IsOS. La función GetProductInfo recupera el tipo de producto.

Para recuperar información del sistema operativo en un equipo remoto, use la función NetWkstaGetInfo, la clase WMI de Win32_OperatingSystem o la propiedad OperatingSystem de la interfaz de IADsComputer.

Para comparar la versión actual del sistema con una versión necesaria, use la función VerifyVersionInfo en lugar de usar GetVersionEx para realizar la comparación usted mismo.

Si el modo de compatibilidad está en vigor, la función GetVersionEx notifica el sistema operativo tal como se identifica, que puede no ser el sistema operativo instalado. Por ejemplo, si el modo de compatibilidad está en vigor, GetVersionEx notifica el sistema operativo seleccionado para compatibilidad de aplicaciones.

Ejemplos

Al usar la función GetVersionEx de para determinar si la aplicación se ejecuta en una versión determinada del sistema operativo, compruebe si hay números de versión mayores o iguales que los números de versión deseados. Esto garantiza que la prueba se realice correctamente para versiones posteriores del sistema operativo. Por ejemplo, si la aplicación requiere Windows XP o posterior, use la prueba siguiente.

#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 obtener un ejemplo que identifique el sistema operativo actual, vea Obtener la versión del sistema.

Nota

El encabezado sysinfoapi.h define GetVersionEx 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 Conventions for Function Prototypes.

Requisitos

Requisito Valor
cliente mínimo admitido Windows 2000 Professional [aplicaciones de escritorio | Aplicaciones para UWP]
servidor mínimo admitido Windows 2000 Server [aplicaciones de escritorio | Aplicaciones para UWP]
de la plataforma de destino de Windows
encabezado de sysinfoapi.h (incluya Windows.h)
biblioteca de Kernel32.lib
DLL de Kernel32.dll

Consulte también

GetVersion

de OSVERSIONINFOA de

OSVERSIONINFOEXA

de la versión del sistema operativo

funciones de información del sistema

verifyVersionInfo

funciones del asistente de versiones de