Compartir a través de


Manifiesto de aplicación

Plataformas afectadas

Clientes: Windows 7
servidores de: Windows Server 2008 R2

Impacto en las características

de gravedad de: 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 que una aplicación se diseñó para tener como 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 la compatibilidad solo para Windows 7 en la sección Compatibilidad seguirá recibiendo el comportamiento de Windows 7 en futuras versiones 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 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): Para archivos binarios compilados para Windows Vista y a continuación, se usa el grupo privado.

de bloqueo de DirectDraw

  • Windows 7: las aplicaciones de manifiestos para Windows 7 no pueden llamar a lock API en DDRAW para bloquear el búfer de vídeo de escritorio principal. Si lo hace, se producirá un error y se devolverá puntero NULL para el servidor 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 representar.
  • Windows Vista (valor predeterminado): 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 recortar ventana

  • Windows 7: las aplicaciones de manifiestos para Windows 7 no pueden realizar Blt en el búfer de vídeo principal de escritorio 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 de deben ser capaces de Blt en la 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.

api GetOverlappedResult

  • 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 al evento superpuesto y, cuando se señale, llame a GetOverlappedResult con bWait == FALSE.

asistente de compatibilidad del programa (PCA) de

  • Windows 7: la sección Aplicaciones con compatibilidad no obtendrá la mitigación de PCA.
  • Windows Vista (valor predeterminado): 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 obtener 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:

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

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

  • SupportedOS: GUID del sistema operativo compatible: los GUID que se asignan a los sistemas operativos admitidos 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 completamente) 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.

Solución Actualizaciones están disponibles para corregir esto 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 soporte técnico de Microsoft para 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 detalles adicionales y descargar la versión correcta para el sistema.

diagnóstico de volcado de memoria bloqueado

solución Ir a la página soporte técnico de Microsoft para KB 976038: las excepciones que se producen desde una aplicación que se ejecuta en una versión de 64 bits de Windows se omiten para obtener más detalles.