Compartir a través de


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. Consulte tener como destino las aplicaciones para Windows para obtener más información.

Sintaxis

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

Parámetros

[in] lpVersionInformation

Puntero a una estructura de 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 dwOSVersionInfoSize miembro 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 de dwTypeMask correspondiente.

[in] dwTypeMask

Máscara que indica los miembros de la estructura OSVERSIONINFOEX que se va a probar. Este parámetro puede ser uno o varios 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 de 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 de 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 de que se compara.

Valor devuelto

Si el sistema operativo actualmente en ejecución 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.

Observaciones

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 de 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 de Service Pack. (No se puede probar la versión principal superior a 5 y la versión secundaria menor o igual que 1. Si especifica dicha 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 las pruebas se detienen). De la misma manera, 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 5.2. (La versión secundaria es mayor que las versiones especificadas, por lo que las pruebas se detienen). Sin embargo, si prueba 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 las pruebas se detienen).

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 probar que la versión principal es 5 y la versión secundaria es mayor que 0, luego 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 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.

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 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 la versión actual del sistema operativo sea 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 fuera 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 sea 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 sea Windows 10 (10.0).
Las funciones auxiliares de versión usan la función VerifyVersionInfo, por lo que el comportamiento IsWindows8Point1OrGreater y 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 Destino de la aplicación para Windows.

Ejemplos

Para obtener un ejemplo, vea Comprobación de 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 Conventions for Function Prototypes.

Requisitos

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

Consulte también

GetVersionEx

OSVERSIONINFOEX

de la versión del sistema operativo

funciones de información del sistema

VER_SET_CONDITION

VerSetConditionMask