Manifiesto de aplicación

Plataformas afectadas

Clientes : Windows 7
Servidores : Windows Server 2008 R2

Impacto en las características

Gravedad : baja
Frecuencia : baja

Descripción

Windows 7 presenta una nueva sección en el manifiesto de aplicación denominado "Compatibilidad". Esta sección ayuda a Windows a determinar las versiones de Windows a las que se diseñó una aplicación de destino y permite a Windows proporcionar el comportamiento que espera la aplicación en función de la versión de Windows a la que se dirige la aplicación.

La sección Compatibilidad permite a Windows proporcionar un nuevo comportamiento al nuevo software creado por el desarrollador, a la vez que mantiene la compatibilidad con el software existente. Esta sección también ayuda a Windows a ofrecer una mayor compatibilidad en versiones futuras de Windows. Por ejemplo, una aplicación que declara compatibilidad solo para Windows 7 en la sección Compatibilidad seguirá recibiendo el comportamiento de Windows 7 en la versión futura de Windows.

Manifestación del cambio

Las aplicaciones sin una sección Compatibilidad de su manifiesto recibirán el comportamiento de Windows Vista de forma predeterminada en Windows 7 y versiones futuras de Windows. Tenga en cuenta que Windows XP y Windows Vista omiten esta sección de manifiesto y no tienen ningún impacto en ellos.

Los siguientes componentes de Windows proporcionan un comportamiento divergente en función de la sección Compatibilidad de Windows 7:

Grupo de subprocesos predeterminado de RPC

  • Windows 7: Para mejorar la escalabilidad y reducir los recuentos de subprocesos, RPC cambió al grupo de subprocesos NT (grupo predeterminado). Para Windows Vista, RPC usó un grupo de subprocesos privados.
    • En el caso de los archivos binarios compilados para Win7, se usa el grupo predeterminado.
    • Si se llama a I_RpcMgmtEnableDedicatedThreadPool antes de llamar a cualquier API rpc, se usa el grupo de subprocesos privados (comportamiento de Vista).
    • Si se llama a I_RpcMgmtEnableDedicatedThreadPool después de una llamada RPC, se usa el grupo predeterminado, I_RpcMgmtEnableDedicatedThreadPool devuelve el error 1764 y no se admite la operación solicitada.
  • Windows Vista (valor predeterminado): En el caso de los archivos binarios compilados para Windows Vista y versiones posteriores, se usa el grupo privado.

Bloqueo de DirectDraw

  • Windows 7: Las aplicaciones manifestadas para Windows 7 no pueden llamar a Lock API en DDRAW para bloquear el búfer de vídeo principal de Escritorio. Si lo hace, se producirá un error y se devolverá el puntero NULL para la réplica principal. Este comportamiento se aplica incluso si la composición del Administrador de ventanas de escritorio no está activada. Las aplicaciones compatibles con Windows 7 no deben bloquear el búfer de vídeo principal para representarse.
  • Windows Vista (valor predeterminado): Las aplicaciones podrán adquirir un bloqueo en el búfer de vídeo principal, ya que las aplicaciones heredadas dependen de este comportamiento. Al ejecutar la aplicación, se desactiva el Administrador de ventanas de escritorio.

Transferencia de bloques de bits de DirectDraw (Blt) a principal sin ventana de recorte

  • Windows 7: Las aplicaciones que se manifiestan para Windows 7 no pueden realizar Blt en el búfer de vídeo de escritorio principal sin una ventana de recorte. Si lo hace, se producirá un error y el área Blt no se representará. Windows aplica este comportamiento incluso si no activa la Composición del Administrador de ventanas de escritorio. Las aplicaciones compatibles con Windows 7 deben Blt en una ventana de recorte.
  • Windows Vista (valor predeterminado): Las aplicaciones deben ser capaces de conectarse a la base de datos principal sin una ventana de recorte, ya que las aplicaciones heredadas dependen de este comportamiento. Al ejecutar esta aplicación, se desactiva el Administrador de ventanas de escritorio.

GetOverlappedResult API

  • Windows 7: Resuelve una condición de carrera en la que una aplicación multiproceso mediante GetOverlappedResult puede devolver sin restablecer el evento en la estructura superpuesta, lo que hace que la siguiente llamada a esta función devuelva prematuramente.
  • Windows Vista (valor predeterminado): Proporciona el comportamiento con la condición de carrera en la que las aplicaciones pueden tener una dependencia. Las aplicaciones que deseen evitar esta carrera antes del comportamiento de Windows 7 deben esperar en el evento superpuesto y, cuando se señale, llame a GetOverlappedResult con bWait == FALSE.

Asistente de compatibilidad de programas (PCA)

  • Windows 7: La sección Aplicaciones con compatibilidad no obtendrá la mitigación de PCA.
  • Windows Vista (valor predeterminado): Las aplicaciones que no se instalan correctamente o se bloquean durante el tiempo de ejecución en algunas circunstancias específicas obtendrán la mitigación de PCA. Para más información, consulte la sección de referencia.

Aprovechamiento de las funcionalidades de características

Actualice el manifiesto de aplicación con la información de compatibilidad más reciente para la compatibilidad con el sistema operativo. En la sección se describen las adiciones al manifiesto:

  • Nombres: Compatibility.v1 (xmlns="urn:schemas-microsoft-com:compatibility.v1">)

  • Nombre de sección: Compatibilidad (nueva sección)

  • SupportedOS: GUID del sistema operativo compatible: los GUID que se asignan a los sistemas operativos compatibles son:

    • {e2011457-1546-43c5-a5fe-008deee3d3f0} para Windows Vista: este es el valor predeterminado para el contexto de conmutación.
    • {35138b9a-5d96-4fbd-8e2d-a2440225f93a} para Windows 7: las aplicaciones que establecen este valor en el manifiesto de aplicación obtienen el comportamiento de Windows 7.

    Nota:

    Microsoft generará y publicará GUID para futuras versiones de Windows según sea necesario.

     

A continuación se muestra un ejemplo de un manifiesto actualizado.

Nota:

Los nombres de atributo y etiqueta del manifiesto de aplicación distinguen mayúsculas de minúsculas.

 

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
  <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> 
    <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1"> 
      <application> 
        <!--The ID below indicates application support for Windows Vista --> 
          <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/> 
        <!--The ID below indicates application support for Windows 7 --> 
          <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/> 
      </application> 
    </compatibility>
  </assembly>

El valor de agregar GUID para ambos sistemas operativos en el ejemplo anterior es proporcionar compatibilidad de nivel inferior. Las aplicaciones que admiten ambas plataformas no necesitarían manifiestos independientes para cada plataforma.

Pruebas de compatibilidad, rendimiento, confiabilidad y facilidad de uso

  1. Pruebe la aplicación con la nueva sección de compatibilidad y SupportedOS ID ={35138b9a-5d96-4fbd-8e2d-a2440225f93a} para asegurarse de que la aplicación funciona correctamente con el comportamiento más reciente de Windows 7
  2. Pruebe la aplicación con la nueva sección de compatibilidad y SupportedOS ID ={e2011457-1546-43c5-a5fe-008deee3d3f0} (o sin esta sección por completo) para asegurarse de que la aplicación funciona correctamente con los comportamientos de Windows Vista en Windows 7.

Problemas conocidos

Error de coincidencia de contexto Una aplicación se ejecuta en un contexto de Windows Vista en lugar de en un contexto de Windows 7 en un equipo que ejecuta una edición x64 de Windows 7 o Windows Server 2008 R2.

La solución Novedades está disponible para corregirlo para todas las versiones compatibles basadas en x64 de Windows 7 y Windows Server 2008 R2, así como para todas las versiones compatibles basadas en Itanium de Windows Server 2008 R2. Vaya a la página de Soporte técnico de Microsoft de KB 978637: una aplicación se ejecuta en un contexto de Windows Vista en lugar de en un contexto de Windows 7 en un equipo que ejecuta una edición x64 de Windows 7 o de Windows Server 2008 R2 para obtener más detalles y descargar la versión correcta para el sistema.

Diagnóstico de volcado de memoria bloqueado

Solución Vaya a la página de Soporte técnico de Microsoft de KB 976038: Las excepciones que se inician desde una aplicación que se ejecuta en una versión de 64 bits de Windows se omiten para obtener más detalles.