Función GetVersionExA (sysinfoapi.h)

GetVersionExA puede modificarse o no estar disponible para las versiones después de Windows 8.1. En su lugar, use las funciones auxiliares de versión. Para obtener Windows 10 aplicaciones, consulte Segmentación de aplicaciones para Windows.

Con la versión de Windows 8.1, el comportamiento de la API 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 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). 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 futuras versiones. 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 , establezca el miembro dwOSVersionInfoSize 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 la función no se realiza correctamente, 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 miembro dwOSVersionInfoSize de la estructura OSVERSIONINFOA o OSVERSIONINFOEXA .

Comentarios

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 la plataforma del sistema operativo o el número de versión, 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 Parámetro
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 Win32_OperatingSystem clase WMI o la propiedad OperatingSystem de la interfaz 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 la compatibilidad de aplicaciones.

Ejemplos

Al usar la función GetVersionEx para determinar si la aplicación se ejecuta en una versión determinada del sistema operativo, compruebe si los números de versión son 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, consulte Obtención de 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 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 [aplicaciones de escritorio | Aplicaciones para UWP]
Servidor mínimo compatible Windows 2000 Server [aplicaciones de escritorio | Aplicaciones para UWP]
Plataforma de destino Windows
Encabezado sysinfoapi.h (incluya Windows.h)
Library Kernel32.lib
Archivo DLL Kernel32.dll

Vea también

GetVersion

OSVERSIONINFOA

OSVERSIONINFOEXA

Versión del sistema operativo

Funciones de información del sistema

VerifyVersionInfo

Funciones auxiliares de versiones