Manifeste d’application

Plateformes affectées

Clients - Windows 7
Serveurs - Windows Server 2008 R2

Impact sur les fonctionnalités

Gravité - Faible
Fréquence - Faible

Description

Windows 7 introduit une nouvelle section dans le manifeste de l’application appelée « 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 d’offrir une meilleure compatibilité dans les futures versions de Windows. Par exemple, une application déclarant la prise en charge uniquement de Windows 7 dans la section Compatibilité continuera à recevoir le comportement de Windows 7 dans la version ultérieure de Windows.

Manifestation du changement

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

Les composants Windows suivants fournissent un comportement divergent basé sur la section Compatibilité de Windows 7 :

Pool de threads RPC par défaut

  • Windows 7 : Pour améliorer la scalabilité et réduire le nombre de threads, RPC a basculé vers le pool de threads NT (pool par défaut). Pour Windows Vista, RPC utilisait un pool de threads privé.
    • Pour les fichiers binaires compilés pour Win7, le pool par défaut est utilisé
    • Si I_RpcMgmtEnableDedicatedThreadPool est appelé avant l’appel d’une API RPC, le pool de threads privé est utilisé (comportement Vista)
    • Si I_RpcMgmtEnableDedicatedThreadPool est appelé 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 (par défaut) : Pour les fichiers binaires compilés pour Windows Vista et versions antérieures, le pool privé est utilisé.

DirectDraw Lock

  • Windows 7 : Les applications manifestes pour Windows 7 ne peuvent pas appeler l’API de verrouillage dans DDRAW pour verrouiller la mémoire tampon vidéo du bureau principal. Cela entraîne une erreur et le pointeur NULL pour le principal est retourné. Ce comportement est appliqué même si la composition du Gestionnaire de fenêtres du bureau n’est pas activée. Les applications compatibles windows 7 ne doivent pas verrouiller la mémoire tampon vidéo principale pour le rendu.
  • Windows Vista (par défaut) : Les 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) to Primary sans fenêtre de découpage

  • Windows 7 : Les applications manifestées pour Windows 7 ne peuvent pas exécuter blt’s sur la mémoire tampon vidéo du bureau principale sans fenêtre de découpage. Cela entraîne une erreur et la zone Blt ne sera pas affichée. Windows applique ce comportement même si vous n’activez pas la composition du Gestionnaire de fenêtres du bureau. Les applications compatibles Windows 7 doivent être blt dans une fenêtre de découpage.
  • Windows Vista (par défaut) : Les applications doivent pouvoir 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 du bureau.

GetOverlappedResult API

  • Windows 7 : Résout une condition de concurrence dans laquelle 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 (par défaut) : Fournit le comportement avec la condition de concurrence sur laquelle les applications peuvent avoir une dépendance. Les applications qui souhaitent éviter cette course avant le comportement de Windows 7 doivent attendre l’événement qui se chevauche et, lorsqu’elles sont signalées, appellent GetOverlappedResult avec bWait == FALSE.

Assistant Compatibilité des programmes (PCA)

  • Windows 7 : La section Applications avec compatibilité n’obtient pas l’atténuation du PCA.
  • Windows Vista (par défaut) : Les applications qui ne parviennent pas à s’installer correctement ou qui se bloquent pendant l’exécution dans certaines circonstances spécifiques bénéficieront de l’atténuation du 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 :

  • 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 Windows 7.

    Notes

    Microsoft générera et publiera des GUID pour les futures versions de Windows en fonction des besoins.

     

Voici un exemple de manifeste mis à jour.

Notes

Les noms d’attributs et d’étiquettes 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 est de 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} assurez-vous 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 plutôt que dans un contexte Windows 7 sur un ordinateur qui exécute une édition x64 de Windows 7 ou Windows Server 2008 R2.

La solution Mises à jour sont disponibles pour corriger ce problème 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 de la base de connaissances 978637 : une application s’exécute dans un contexte Windows Vista plutôt que dans un contexte Windows 7 sur un ordinateur qui exécute une édition x64 de Windows 7 ou de Windows Server 2008 R2 pour plus d’informations et pour télécharger la version appropriée pour votre système.

Diagnostic de vidage sur incident bloqué

Solution Accédez à la page Support Microsoft de 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.