影響を受けるプラットフォーム
クライアント - Windows 7
サーバー - Windows Server 2008 R2
機能への影響
重大度 - 低
周波数 - 低
Description
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 の動作を取得します。
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 を追加する価値は、下位レベルのサポートを提供することです。 両方のプラットフォームをサポートするアプリケーションでは、プラットフォームごとに個別のマニフェストは必要ありません。
互換性、パフォーマンス、信頼性、使いやすさのテスト
- 新しい互換性セクションでアプリケーションをテストし、
SupportedOS ID ={35138b9a-5d96-4fbd-8e2d-a2440225f93a}して、最新の Windows 7 動作を使用してアプリケーションが正常に動作することを確認します - 新しい互換性セクションと
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 サポート ページに移動します。Windows の 64 ビット バージョンで実行されているアプリケーションからスローされる例外は、詳細については無視されます。
その他のリソースへのリンク