Condividi tramite


Manifesto dell'applicazione

Piattaforme interessate

Client - Windows 7
Server - Windows Server 2008 R2

Impatto sulle funzionalità

Gravità - Basso
Frequenza - Bassa

Descrizione

Windows 7 introduce una nuova sezione nel manifesto dell'applicazione denominato "Compatibilità". Questa sezione consente a Windows di determinare le versioni di Windows progettate per la destinazione di un'applicazione e consente a Windows di fornire il comportamento previsto dall'applicazione in base alla versione di Windows destinata all'applicazione.

La sezione Compatibilità consente a Windows di fornire un nuovo comportamento al nuovo software creato dallo sviluppatore mantenendo la compatibilità per il software esistente. Questa sezione consente anche a Windows di offrire maggiore compatibilità nelle versioni future di Windows. Ad esempio, un'applicazione che dichiara il supporto solo per Windows 7 nella sezione Compatibilità continuerà a ricevere il comportamento di Windows 7 nella versione futura di Windows.

Manifestazione del cambiamento

Le applicazioni senza una sezione Compatibilità nel manifesto riceveranno il comportamento di Windows Vista per impostazione predefinita nelle versioni di Windows 7 e delle versioni future di Windows. Si noti che Windows XP e Windows Vista ignorano questa sezione del manifesto e non ha alcun impatto su di essi.

I componenti di Windows seguenti forniscono un comportamento divergente in base alla sezione Compatibilità in Windows 7:

Pool di thread predefinito RPC

  • Windows 7: Per migliorare la scalabilità e ridurre i conteggi dei thread, RPC passa al pool di thread NT (pool predefinito). Per Windows Vista, RPC ha usato un pool di thread privato.
    • Per i file binari compilati per Win7 viene usato il pool predefinito
    • Se I_RpcMgmtEnableDedicatedThreadPool viene chiamato prima che venga chiamata qualsiasi API RPC, viene usato il pool di thread privati (comportamento vista)
    • Se I_RpcMgmtEnableDedicatedThreadPool viene chiamato dopo una chiamata RPC, viene usato il pool predefinito, I_RpcMgmtEnableDedicatedThreadPool restituisce l'errore 1764 e l'operazione richiesta non è supportata
  • Windows Vista (impostazione predefinita): Per i file binari compilati per Windows Vista e versioni successive, viene usato il pool privato.

Blocco DirectDraw

  • Windows 7: Le applicazioni manifeste per Windows 7 non possono chiamare L'API Lock in DDRAW per bloccare il buffer video desktop primario. In questo modo verrà restituito un errore e il puntatore NULL per il primario verrà restituito. Questo comportamento viene applicato anche se La composizione di Desktop Window Manager non è attivata. Le applicazioni compatibili con Windows 7 non devono bloccare il buffer video primario per il rendering.
  • Windows Vista (impostazione predefinita): Le applicazioni potranno acquisire un blocco nel buffer video primario come applicazioni legacy dipendono da questo comportamento. L'esecuzione dell'applicazione disattiva Gestione finestre desktop.

Trasferimento in blocchi di bit DirectDraw (Blt) a primario senza ritaglio finestra

  • Windows 7: Le applicazioni manifestate per Windows 7 non possono eseguire Blt nel buffer video desktop primario senza una finestra di ritaglio. In questo modo verrà generato un errore e l'area Blt non verrà eseguito il rendering. Windows applica questo comportamento anche se non si attiva La composizione di Desktop Window Manager. Le applicazioni compatibili con Windows 7 devono essere Blt a una finestra di ritaglio.
  • Windows Vista (impostazione predefinita): Le applicazioni devono essere in grado di eseguire blt al primario senza una finestra di ritaglio come applicazioni legacy dipendono da questo comportamento. L'esecuzione di questa applicazione disattiva Gestione finestre desktop.

GetOverlappedResult API

  • Windows 7: Risolve una condizione di gara in cui un'app multithreaded usando GetOverlappedResult può restituire senza reimpostare l'evento nella struttura sovrapposta, causando la chiamata successiva a questa funzione per restituire prematuramente.
  • Windows Vista (impostazione predefinita): Fornisce il comportamento con la condizione di gara a cui le applicazioni possono avere una dipendenza. Le applicazioni che desiderano evitare questa corsa prima del comportamento di Windows 7 devono attendere l'evento sovrapposto e, quando segnalato, chiamare GetOverlappedResult con bWait == FALSE.

Assistente compatibilità programmi (PCA)

  • Windows 7: La sezione Compatibilità delle applicazioni non otterrà la mitigazione PCA.
  • Windows Vista (impostazione predefinita): Le applicazioni che non riescono a installare correttamente o si arresta in modo anomalo durante il runtime in alcune circostanze specifiche otterranno la mitigazione del PCA. Per altre informazioni, vedere la sezione di riferimento.

Utilizzo delle funzionalità

Aggiornare il manifesto dell'applicazione con le informazioni di compatibilità più recenti per il supporto del sistema operativo. La sezione descrive le aggiunte al manifesto:

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

  • Nome sezione: Compatibilità (nuova sezione)

  • SupportatoOS: GUID del sistema operativo supportato: i GUID mappati ai sistemi operativi supportati sono:

    • {e2011457-1546-43c5-a5fe-008de3d3f0} per Windows Vista: questo è il valore predefinito per il contesto di switchback.
    • {35138b9a-5d96-4fbd-8e2d-a2440225f93a} per Windows 7: le applicazioni che impostano questo valore nel manifesto dell'applicazione ottengono il comportamento di Windows 7.

    Nota

    Microsoft genererà e pubblica i GUID per le versioni future di Windows in base alle esigenze.

     

Di seguito è riportato un esempio di manifesto aggiornato.

Nota

I nomi di attributo e tag nel manifesto dell'applicazione sono distinzione tra maiuscole e minuscole.

 

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

Il valore dell'aggiunta di GUID per entrambi i sistemi operativi nell'esempio precedente consiste nel fornire supporto a livello inferiore. Le applicazioni che supportano entrambe le piattaforme non richiedono manifesti separati per ogni piattaforma.

Compatibilità, prestazioni, affidabilità e test di usabilità

  1. Testare l'applicazione con la nuova sezione di compatibilità e SupportedOS ID ={35138b9a-5d96-4fbd-8e2d-a2440225f93a} assicurarsi che l'applicazione funzioni correttamente usando il comportamento più recente di Windows 7
  2. Testare l'applicazione con la nuova sezione di compatibilità e SupportedOS ID ={e2011457-1546-43c5-a5fe-008deee3d3f0} (o senza completamente) per garantire che l'applicazione funzioni correttamente usando i comportamenti di Windows Vista in Windows 7

Problemi noti

Mancata corrispondenza del contesto Un'applicazione viene eseguita in un contesto di Windows Vista anziché in un contesto di Windows 7 in un computer che esegue un'edizione x64 di Windows 7 o Windows Server 2008 R2.

La soluzione Aggiornamenti è disponibile per correggere questo problema per tutte le versioni basate su x64 supportate di Windows 7 e Windows Server 2008 R2, nonché per tutte le versioni basate su Itanium supportate di Windows Server 2008 R2. Passare alla pagina supporto tecnico Microsoft per kb 978637: un'applicazione viene eseguita in un contesto di Windows Vista anziché in un contesto di Windows 7 in un computer che esegue un'edizione x64 di Windows 7 o di Windows Server 2008 R2 per altri dettagli e per scaricare la versione corretta per il sistema.

Diagnosi di dump di arresto anomalo bloccata

Soluzione Passare alla pagina supporto tecnico Microsoft per kb 976038: le eccezioni generate da un'applicazione eseguita in una versione a 64 bit di Windows vengono ignorate per informazioni aggiuntive.