Partager via


Manifeste d’application

Plateformes affectées

clients - Windows 7
serveurs - Windows Server 2008 R2

Impact sur les fonctionnalités

de gravité - Faible
fréquence - Faible

Description

Windows 7 introduit une nouvelle section dans le manifeste de l’application appelé « Compatibilité ». Cette section aide Windows à déterminer les versions de Windows qu’une application a été conçue pour cibler et permet à Windows de fournir le comportement attendu par l’application en fonction de la version de Windows ciblée par l’application.

La section Compatibilité permet à Windows de fournir un nouveau comportement aux nouveaux logiciels créés par les développeurs tout en conservant la compatibilité pour les logiciels existants. Cette section permet également à Windows de fournir une plus grande compatibilité dans les futures versions de Windows. Par exemple, une application déclarant la prise en charge uniquement pour Windows 7 dans la section Compatibilité continuera de recevoir le comportement de Windows 7 dans la prochaine version de Windows.

Manifestation de changement

Les applications sans section compatibilité de leur manifeste recevront par défaut le comportement de Windows Vista sur Windows 7 et les futures versions de Windows. Notez que Windows XP et Windows Vista ignorent cette section de manifeste et qu’il n’a aucun impact sur eux.

Les composants Windows suivants fournissent un comportement divergent en fonction de la section Compatibilité dans Windows 7 :

pool de threads RPC par défaut

  • Windows 7 : Pour améliorer la scalabilité et réduire le nombre de threads, RPC est passé au pool de threads NT (pool par défaut). Pour Windows Vista, RPC a utilisé un pool de threads privés.
    • Pour les fichiers binaires compilés pour Win7, le pool par défaut est utilisé
    • Si I_RpcMgmtEnableDedicatedThreadPool est appelée avant qu’une API RPC soit appelée, le pool de threads privés est utilisé (comportement Vista)
    • Si I_RpcMgmtEnableDedicatedThreadPool est appelée après un appel RPC, le pool par défaut est utilisé, I_RpcMgmtEnableDedicatedThreadPool retourne l’erreur 1764 et l’opération demandée n’est pas prise en charge.
  • Windows Vista (valeur par défaut) : pour les fichiers binaires compilés pour Windows Vista et ci-dessous, le pool privé est utilisé.

directDraw Lock

  • Windows 7 : applications manifestes pour Windows 7 ne peuvent pas appeler l’API de verrouillage dans DDRAW pour verrouiller la mémoire tampon vidéo de bureau principale. Cela entraîne une erreur et pointeur de NULL pour le serveur principal est retourné. Ce comportement est appliqué même si la composition du Gestionnaire de fenêtres de bureau n’est pas activée. Les applications compatibles Windows 7 ne doivent pas verrouiller la mémoire tampon vidéo principale à afficher.
  • Windows Vista (par défaut) : applications pourront acquérir un verrou sur la mémoire tampon vidéo principale, car les applications héritées dépendent de ce comportement. L’exécution de l’application désactive desktop Window Manager.

DirectDraw Bit Block Transfer (Blt) vers primary sans découpage de fenêtre

  • Windows 7 : applications manifestes pour Windows 7 ne peuvent pas exécuter Blt vers la mémoire tampon vidéo de bureau principale sans fenêtre de découpage. Cela entraîne une erreur et la zone Blt ne sera pas rendue. Windows applique ce comportement même si vous n’activez pas la composition du Gestionnaire de fenêtres de bureau. Les applications compatibles Windows 7 doivent blt vers une fenêtre de découpage.
  • Windows Vista (valeur par défaut) : Applications doivent être en mesure d’accéder au serveur principal sans fenêtre de découpage, car les applications héritées dépendent de ce comportement. L’exécution de cette application désactive le Gestionnaire de fenêtres de bureau.

api GetOverlappedResult

  • Windows 7 : résout une condition de concurrence où une application multithread à l’aide de GetOverlappedResult peut retourner sans réinitialiser l’événement dans la structure superposée, ce qui entraîne le retour prématuré de l’appel suivant à cette fonction.
  • Windows Vista (valeur par défaut) : fournit le comportement avec la condition de concurrence sur laquelle les applications peuvent avoir une dépendance. Les applications souhaitant éviter cette course avant le comportement de Windows 7 doivent attendre l’événement qui se chevauche et lorsqu’elles sont signalées, appelez GetOverlappedResult avec bWait == FALSE.

de l’Assistant compatibilité des programmes (PCA)

  • Windows 7 : applications avec la section Compatibilité n’obtiendra pas l’atténuation pcA.
  • Windows Vista (valeur par défaut) : applications qui ne parviennent pas à s’installer correctement ou se bloquent pendant l’exécution dans certaines circonstances spécifiques obtiendront l’atténuation pcA. Pour plus d’informations, consultez la section de référence.

Tirer parti des fonctionnalités

Mettez à jour le manifeste de l’application avec les dernières informations de compatibilité pour la prise en charge du système d’exploitation. La section décrit les ajouts au manifeste :

  • espace de noms : Compatibility.v1 (xmlns="urn :schemas-microsoft-com :compatibility.v1 »>)

  • nom de la section : compatibilité (nouvelle section)

  • SupportedOS : GUID du système d’exploitation pris en charge : les GUID mappés aux systèmes d’exploitation pris en charge sont les suivants :

    • {e2011457-1546-43c5-a5fe-008deee3d3f0} pour Windows Vista : il s’agit de la valeur par défaut du contexte de basculement.
    • {35138b9a-5d96-4fbd-8e2d-a2440225f93a} pour Windows 7 : les applications qui définissent cette valeur dans le manifeste de l’application obtiennent le comportement de Windows 7.

    Note

    Microsoft génère et publie des GUID pour les futures versions de Windows en fonction des besoins.

     

Voici un exemple de manifeste mis à jour.

Note

Les noms d’attribut et de balise dans le manifeste de l’application respectent la casse.

 

<?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>

La valeur de l’ajout de GUID pour les deux systèmes d’exploitation dans l’exemple ci-dessus consiste à fournir une prise en charge de bas niveau. Les applications qui prennent en charge les deux plateformes n’ont pas besoin de manifestes distincts pour chaque plateforme.

Tests de compatibilité, de performances, de fiabilité et d’utilisation

  1. Testez l’application avec la nouvelle section de compatibilité et SupportedOS ID ={35138b9a-5d96-4fbd-8e2d-a2440225f93a} pour vous assurer que l’application fonctionne correctement à l’aide du dernier comportement de Windows 7
  2. Testez l’application avec la nouvelle section de compatibilité et SupportedOS ID ={e2011457-1546-43c5-a5fe-008deee3d3f0} (ou sans cette section entièrement) pour vous assurer que l’application fonctionne correctement à l’aide des comportements Windows Vista sur Windows 7

Problèmes connus

incompatibilité de contexte Une application s’exécute dans un contexte Windows Vista au lieu d’un contexte Windows 7 sur un ordinateur exécutant une édition x64 de Windows 7 ou Windows Server 2008 R2.

Solution Mises à jour sont disponibles pour corriger cela pour toutes les versions x64 prises en charge de Windows 7 et Windows Server 2008 R2, ainsi que pour toutes les versions Itanium prises en charge de Windows Server 2008 R2. Accédez à la page support Microsoft pour Base de connaissances 978637 : une application s’exécute dans un contexte Windows Vista au lieu d’un contexte Windows 7 sur un ordinateur exécutant une édition x64 de Windows 7 ou de Windows Server 2008 R2 pour plus d’informations et pour télécharger la version correcte pour votre système.

diagnostic de vidage sur incident bloqué

Solution accédez à la page support Microsoft pour la base de connaissances 976038 : les exceptions levées à partir d’une application qui s’exécute dans une version 64 bits de Windows sont ignorées pour plus d’informations.