Función VerifyVersionInfoW (winbase.h)

Compara un conjunto de requisitos de versión del sistema operativo con los valores correspondientes de la versión que se está ejecutando actualmente del sistema. Esta función está sujeta al comportamiento basado en manifiestos. Para obtener más información, vea la sección Comentarios.

Nota: Esta función ha quedado en desuso para Windows 10. Para obtener más información, consulte Selección de destino de las aplicaciones para Windows .

Sintaxis

BOOL VerifyVersionInfoW(
  [in] LPOSVERSIONINFOEXW lpVersionInformation,
  [in] DWORD              dwTypeMask,
  [in] DWORDLONG          dwlConditionMask
);

Parámetros

[in] lpVersionInformation

Puntero a una estructura OSVERSIONINFOEX que contiene los requisitos de versión del sistema operativo que se van a comparar. El parámetro dwTypeMask indica los miembros de esta estructura que contienen información que se va a comparar.

Debe establecer el miembro dwOSVersionInfoSize de esta estructura en sizeof(OSVERSIONINFOEX). También debe especificar datos válidos para los miembros indicados por dwTypeMask. La función omite los miembros de estructura para los que no se establece el bit dwTypeMask correspondiente.

[in] dwTypeMask

Máscara que indica los miembros de la estructura OSVERSIONINFOEX que se van a probar. Este parámetro puede ser uno o más de los siguientes valores.

Valor Significado
VER_BUILDNUMBER
0x0000004
dwBuildNumber
VER_MAJORVERSION
0x0000002
dwMajorVersion

Si va a probar la versión principal, también debe probar la versión secundaria y las versiones principales y secundarias del Service Pack.

VER_MINORVERSION
0x0000001
dwMinorVersion
VER_PLATFORMID
0x0000008
dwPlatformId
VER_SERVICEPACKMAJOR
0x0000020
wServicePackMajor
VER_SERVICEPACKMINOR
0x0000010
wServicePackMinor
VER_SUITENAME
0x0000040
wSuiteMask
VER_PRODUCT_TYPE
0x0000080
wProductType

[in] dwlConditionMask

Tipo de comparación que se va a usar para cada miembro lpVersionInfo que se va a comparar. Para compilar este valor, llame a la función VerSetConditionMask o a la macro VER_SET_CONDITION una vez para cada miembro OSVERSIONINFOEX que se va a comparar.

Valor devuelto

Si el sistema operativo que se ejecuta actualmente cumple los requisitos especificados, el valor devuelto es un valor distinto de cero.

Si el sistema actual no cumple los requisitos, el valor devuelto es cero y GetLastError devuelve ERROR_OLD_WIN_VERSION.

Si se produce un error en la función, el valor devuelto es cero y GetLastError devuelve un código de error distinto de ERROR_OLD_WIN_VERSION.

Comentarios

La función VerifyVersionInfo recupera información de versión sobre el sistema operativo que se está ejecutando actualmente y la compara con los miembros válidos de la estructura lpVersionInfo . Esto le permite determinar fácilmente la presencia de un conjunto necesario de condiciones de versión del sistema operativo. Es preferible usar VerifyVersionInfo en lugar de llamar a la función GetVersionEx para realizar sus propias comparaciones.

Normalmente, VerifyVersionInfo devuelve un valor distinto de cero solo si todas las pruebas especificadas se realizan correctamente. Sin embargo, las versiones principales, secundarias y service pack se prueban de forma jerárquica porque la versión del sistema operativo es una combinación de estos valores. Si existe una condición para la versión principal, reemplaza las condiciones especificadas para la versión secundaria y la versión del Service Pack. (No se puede probar la versión principal mayor que 5 y la versión secundaria menor o igual que 1. Si especifica esta prueba, la función cambiará la solicitud para probar una versión secundaria mayor que 1 porque está realizando una operación mayor que en la versión principal).

La función prueba estos valores en este orden: versión principal, versión secundaria y versión de Service Pack. La función continúa probando los valores mientras son iguales y se detiene cuando uno de los valores no cumple la condición especificada. Por ejemplo, si prueba un sistema mayor o igual que la versión 5.1 de Service Pack 1, la prueba se realiza correctamente si la versión actual es 6.0. (La versión principal es mayor que la versión especificada, por lo que la prueba se detiene). De la misma manera, si prueba para un sistema mayor o igual que la versión 5.1 de Service Pack 1, la prueba se realiza correctamente si la versión actual es 5.2. (La versión secundaria es mayor que las versiones especificadas, por lo que la prueba se detiene). Sin embargo, si prueba para un sistema mayor o igual que la versión 5.1 de Service Pack 1, se produce un error en la prueba si la versión actual es 5.0 Service Pack 2. (La versión secundaria no es mayor que la versión especificada, por lo que la prueba se detiene).

Para comprobar un intervalo de versiones del sistema, debe llamar a VerifyVersionInfo dos veces. Por ejemplo, para comprobar que la versión del sistema es mayor que 5.0, pero menor o igual que 5.1, primero llame a VerifyVersionInfo para comprobar que la versión principal es 5 y la versión secundaria es mayor que 0 y, a continuación, llame a VerifyVersionInfo de nuevo para probar que la versión principal es 5 y la versión secundaria es menor o igual que 1.

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.

Para comprobar si el sistema operativo actual es la versión de Media Center o Tablet PC de Windows, llame a GetSystemMetrics.

Windows 10: VerifyVersionInfo devuelve false cuando lo llaman las aplicaciones que no tienen un manifiesto de compatibilidad para Windows 8.1 o Windows 10 si se establece el parámetro lpVersionInfo para que especifique Windows 8.1 o Windows 10, incluso cuando el sistema operativo actual la versión es Windows 8.1 o Windows 10. En concreto, VerifyVersionInfo tiene el siguiente comportamiento:

  • Si la aplicación no tiene ningún manifiesto, VerifyVersionInfo se comporta como si la versión del sistema operativo se Windows 8 (6.2).
  • Si la aplicación tiene un manifiesto que contiene el GUID que corresponde a Windows 8.1, VerifyVersionInfo se comporta como si la versión del sistema operativo se Windows 8.1 (6.3).
  • Si la aplicación tiene un manifiesto que contiene el GUID que corresponde a Windows 10, VerifyVersionInfo se comporta como si la versión del sistema operativo se Windows 10 (10.0).
Las funciones auxiliares de versión usan la función VerifyVersionInfo , por lo que el comportamiento IsWindows8Point1OrGreater e IsWindows10OrGreater se ven afectados de forma similar por la presencia y el contenido del manifiesto.

Para manifestar las aplicaciones para Windows 8.1 o Windows 10, consulte Selección de destino de la aplicación para Windows.

Ejemplos

Para obtener un ejemplo, vea Comprobar la versión del sistema.

Nota

El encabezado winbase.h define VerifyVersionInfo 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]
Plataforma de destino Windows
Encabezado winbase.h (incluye Windows.h)
Library Kernel32.lib
Archivo DLL Kernel32.dll

Vea también

GetVersionEx

OSVERSIONINFOEX

Versión del sistema operativo

Funciones de información del sistema

VER_SET_CONDITION

VerSetConditionMask