Manifesto dell'applicazione

Piattaforme interessate

Client - Windows 7
Server - Windows Server 2008 R2

Impatto sulle funzionalità

Gravità - Bassa
frequenza - Bassa

Descrizione

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

La sezione Compatibilità consente a Windows di fornire un nuovo comportamento al nuovo software creato dallo sviluppatore mantenendo al tempo stesso la compatibilità per il software esistente. Questa sezione consente anche a Windows di offrire maggiore compatibilità anche 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 in Windows 7 e nelle 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 usava un pool di thread privati.
    • Per i file binari compilati per Win7 viene usato il pool predefinito
    • Se I_RpcMgmtEnableDedicatedThreadPool viene chiamato prima che venga chiamata un'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 di blocco in DDRAW per bloccare il buffer video desktop primario. In questo modo verrà restituito un errore e verrà restituito un puntatore NULL per il database primario. Questo comportamento viene applicato anche se La composizione di Gestione finestre desktop 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 sul buffer video primario perché le 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 il rendering dell'area Blt non verrà eseguito. Windows applica questo comportamento anche se non si attiva La composizione di Desktop Window Manager. Le applicazioni compatibili con Windows 7 devono essere Blt in una finestra di ritaglio.
  • Windows Vista (impostazione predefinita): Le applicazioni devono essere in grado di eseguire il Blt nel database primario senza una finestra di ritaglio perché le applicazioni legacy dipendono da questo comportamento. L'esecuzione di questa applicazione disattiva Gestione finestre desktop.

GetOverlappedResult API

  • Windows 7: Risolve una race condition in cui un'app multithreading che usa GetOverlappedResult può restituire senza reimpostare l'evento nella struttura sovrapposta, causando la restituzione prematura della chiamata successiva a questa funzione.
  • Windows Vista (impostazione predefinita): Fornisce il comportamento con la race condition da cui le applicazioni possono avere una dipendenza. Le applicazioni che desiderano evitare questa gara 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: Le applicazioni con la sezione Compatibilità non otterranno la mitigazione PCA.
  • Windows Vista (impostazione predefinita): Le applicazioni che non vengono installate correttamente o si arrestano in modo anomalo durante il runtime in alcune circostanze specifiche otterranno la mitigazione PCA. Per altri dettagli, vedere la sezione di riferimento.

Uso 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)

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

    • {e2011457-1546-43c5-a5fe-008deee3d3f0} 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.

    Note

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

     

Di seguito è riportato un esempio di manifesto aggiornato.

Note

I nomi di attributo e tag nel manifesto dell'applicazione fanno 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 di livello inferiore. Le applicazioni che supportano entrambe le piattaforme non necessitano di 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} verificare 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 questa sezione) per assicurarsi 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.

Soluzione Gli aggiornamenti sono disponibili per correggere questo problema per tutte le versioni supportate basate su x64 di Windows 7 e Windows Server 2008 R2, nonché per tutte le versioni supportate basate su Itanium 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 del dump di arresto anomalo del sistema 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 altri dettagli.