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.
[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).
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 |