次の方法で共有


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

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

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

機能への影響

重大度 - 低
周波数 - 低

形容

Windows 7 では、アプリケーション マニフェストに "互換性" という新しいセクションが導入されています。このセクションは、アプリケーションが対象とするように設計された Windows のバージョンを 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: これはスイッチバック コンテキストの既定値です。
    • {35138b9a-5d96-4fbd-8e2d-a2440225f93a} for Windows 7: アプリケーション マニフェストでこの値を設定するアプリケーションは、Windows 7 の動作を取得します。

    手記

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

     

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

手記

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

 

<?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 で実行されるアプリケーションからスローされる例外は、詳細については無視されます。