アプリケーション マニフェスト

影響を受けるプラットフォーム

クライアント - Windows 7
サーバー - Windows Server 2008 R2

機能への影響

重大度 - 低
頻度 - 低

説明

Windows 7 では、アプリケーション マニフェストに "互換性" という新しいセクションが導入されています。このセクションは、アプリケーションが対象とするように設計された Windows のバージョンを Windows が判断するのに役立ち、アプリケーションが対象とする Windows のバージョンに基づいてアプリケーションが期待する動作を提供できるようにします。

[互換性] セクションでは、既存のソフトウェアの互換性を維持しながら、開発者が作成した新しいソフトウェアに新しい動作を提供できます。 このセクションは、Windows が将来のバージョンの Windows でもより高い互換性を提供するのにも役立ちます。 たとえば、[互換性] セクションで Windows 7 のみのサポートを宣言しているアプリケーションは、今後のバージョンの Windows で引き続き Windows 7 の動作を受け取ります。

変化の現れ

マニフェストに [互換性] セクションがないアプリケーションは、Windows 7 以降の Windows バージョンで既定で Windows Vista の動作を受け取ります。 Windows XP と Windows Vista では、このマニフェスト セクションは無視され、影響はありません。

次の Windows コンポーネントは、Windows 7 の [互換性] セクションに基づいて異なる動作を提供します。

RPC の既定のスレッド プール

  • Windows 7: スケーラビリティを向上させ、スレッド数を減らすために、RPC は NT スレッド プール (既定のプール) に切り替えました。 Windows Vista の場合、RPC はプライベート スレッド プールを使用しました。
    • Win7 用にコンパイルされたバイナリの場合、既定のプールが使用されます
    • RPC API が呼び出される前にI_RpcMgmtEnableDedicatedThreadPoolが呼び出された場合、プライベート スレッド プールが使用されます (Vista の動作)
    • RPC 呼び出しの後I_RpcMgmtEnableDedicatedThreadPoolが呼び出された場合、既定のプールが使用され、I_RpcMgmtEnableDedicatedThreadPoolはエラー 1764 を返し、要求された操作はサポートされていません
  • Windows Vista (既定値): Windows Vista 以下用にコンパイルされたバイナリの場合は、プライベート プールが使用されます。

DirectDraw ロック

  • Windows 7: Windows 7 用にマニフェストされたアプリケーションでは、DDRAW で Lock API を呼び出してプライマリ デスクトップ ビデオ バッファーをロックすることはできません。 これによりエラーが発生し、プライマリの NULL ポインターが返されます。 この動作は、デスクトップ ウィンドウ マネージャーコンポジションがオンになっていない場合でも適用されます。 Windows 7 互換アプリケーションでは、レンダリングするプライマリ ビデオ バッファーをロックしないでください。
  • Windows Vista (既定値): レガシ アプリケーションはこの動作に依存するため、アプリケーションはプライマリ ビデオ バッファーのロックを取得できます。 アプリケーションを実行すると、デスクトップ ウィンドウ マネージャーがオフになります。

DirectDraw ビット ブロック転送 (Blt) からプライマリへのクリッピング ウィンドウなし

  • Windows 7: Windows 7 用にマニフェストされたアプリケーションでは、クリッピング ウィンドウなしでプライマリ デスクトップ ビデオ バッファーに対して Blt を実行できません。 これによりエラーが発生し、Blt 領域はレンダリングされません。 Windows では、デスクトップ ウィンドウ マネージャーコンポジションを有効にしない場合でも、この動作が適用されます。 Windows 7 互換アプリケーションは、クリッピング ウィンドウに Blt する必要があります。
  • Windows Vista (既定値): レガシ アプリケーションはこの動作に依存するため、アプリケーションはクリッピング ウィンドウなしでプライマリに Blt できる必要があります。 このアプリケーションを実行すると、デスクトップ ウィンドウ マネージャーがオフになります。

GetOverlappedResult API

  • Windows 7: GetOverlappedResult を使用するマルチスレッド アプリが重複する構造体のイベントをリセットせずにを返すことができる競合状態を解決し、この関数の次の呼び出しが途中で返されます。
  • Windows Vista (既定値): アプリケーションが依存関係を持つ可能性がある競合状態の動作を提供します。 Windows 7 の動作より前にこの競合を回避したいアプリケーションは、重複したイベントを待機する必要があり、シグナルが送信されたら、bWait == FALSE で GetOverlappedResult を呼び出す必要があります。

プログラム互換性アシスタント (PCA)

  • Windows 7: [互換性のあるアプリケーション] セクションでは、PCA の軽減策は取得されません。
  • Windows Vista (既定値): 特定の状況で実行時に適切にインストールできない、またはクラッシュするアプリケーションでは、PCA の軽減策が得られます。 詳細については、「リファレンス」セクションを参照してください。

機能機能の活用

オペレーティング システムのサポートに関する最新の互換性情報を使用して、アプリケーション マニフェストを更新します。 セクションでは、マニフェストへの追加について説明します。

  • 名前 空間: Compatibility.v1 (xmlns="urn:schemas-microsoft-com:compatibility.v1">)

  • セクション名: 互換性 (新しいセクション)

  • SupportedOS: サポートされているオペレーティング システムの GUID - サポートされているオペレーティング システムにマップされる GUID は次のとおりです。

    • {e2011457-1546-43c5-a5fe-008deee3d3f0} for Windows Vista: これはスイッチバック コンテキストの既定値です。
    • Windows 7 用 {35138b9a-5d96-4fbd-8e2d-a2440225f93a} for Windows 7: アプリケーション マニフェストでこの値を設定するアプリケーションは、Windows 7 の動作を取得します。

    Note

    Microsoft は、必要に応じて、将来の Windows バージョンの GUID を生成して投稿します。

     

更新されたマニフェストの例を次に示します。

Note

アプリケーション マニフェストの属性とタグ名では、大文字と小文字が区別されます。

 

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

上記の例では、両方のオペレーティング システムに GUID を追加する価値は、下位レベルのサポートを提供することです。 両方のプラットフォームをサポートするアプリケーションでは、プラットフォームごとに個別のマニフェストは必要ありません。

互換性、パフォーマンス、信頼性、使いやすさのテスト

  1. 新しい互換性セクションでアプリケーションをテストし、 SupportedOS ID ={35138b9a-5d96-4fbd-8e2d-a2440225f93a} 最新の Windows 7 動作を使用してアプリケーションが正しく動作することを確認します
  2. 新しい互換性セクションと SupportedOS ID ={e2011457-1546-43c5-a5fe-008deee3d3f0} (またはこのセクション全体を使用せずに) アプリケーションをテストして、Windows 7 で Windows Vista の動作を使用してアプリケーションが正しく動作することを確認します

既知の問題

コンテキストの不一致 アプリケーションは、Windows 7 または Windows Server 2008 R2 の x64 エディションを実行しているコンピューター上の Windows 7 コンテキストではなく、Windows Vista コンテキストで実行されます。

ソリューション 更新は、サポートされているすべての x64 ベースのバージョンの Windows 7 および Windows Server 2008 R2、およびサポートされているすべての Itanium ベースのバージョンの Windows Server 2008 R2 でこれを修正するために使用できます。 KB 978637の [Microsoft サポート] ページに移動します。詳細については、Windows 7 または Windows Server 2008 R2 の x64 エディションを実行しているコンピューター上の Windows 7 コンテキストではなく、Windows Vista コンテキストでアプリケーションを実行し、システムの正しいバージョンをダウンロードします。

クラッシュ ダンプ診断がブロックされました

ソリューションKB 976038の [Microsoft サポート] ページに移動します。64 ビット バージョンの Windows で実行されるアプリケーションからスローされる例外は、詳細については無視されます。