Manifes Aplikasi

Platform yang Terpengaruh

Klien - Windows 7
Server - Windows Server 2008 R2

Dampak Fitur

Tingkat keparahan - Rendah
Frekuensi - Rendah

Deskripsi

Windows 7 memperkenalkan bagian baru dalam manifes aplikasi yang disebut "Kompatibilitas." Bagian ini membantu Windows menentukan versi Windows yang dirancang untuk ditargetkan oleh aplikasi, dan memungkinkan Windows untuk memberikan perilaku yang diharapkan aplikasi berdasarkan versi Windows yang ditargetkan aplikasi.

Bagian Kompatibilitas memungkinkan Windows untuk memberikan perilaku baru ke perangkat lunak baru yang dibuat pengembang sambil mempertahankan kompatibilitas untuk perangkat lunak yang ada. Bagian ini juga membantu Windows memberikan kompatibilitas yang lebih besar di versi Windows yang akan datang juga. Misalnya, aplikasi yang menyatakan dukungan hanya untuk Windows 7 di bagian Kompatibilitas akan terus menerima perilaku Windows 7 di versi Windows yang akan datang.

Manifestasi Perubahan

Aplikasi tanpa bagian Kompatibilitas dalam manifesnya akan menerima perilaku Windows Vista secara default pada Windows 7 dan versi Windows yang akan datang. Perhatikan bahwa Windows XP dan Windows Vista mengabaikan bagian manifes ini dan tidak berdampak pada mereka.

Komponen Windows berikut ini menyediakan perilaku yang berbeda berdasarkan bagian Kompatibilitas di Windows 7:

Kumpulan Utas Default RPC

  • Windows 7: Untuk meningkatkan skalabilitas dan mengurangi jumlah utas, RPC beralih ke kumpulan utas NT (kumpulan default). Untuk Windows Vista, RPC menggunakan kumpulan utas privat.
    • Untuk biner yang dikompilasi untuk Win7, kumpulan default digunakan
    • Jika I_RpcMgmtEnableDedicatedThreadPool dipanggil sebelum API RPC dipanggil, kumpulan utas privat digunakan (perilaku Vista)
    • Jika I_RpcMgmtEnableDedicatedThreadPool dipanggil setelah panggilan RPC, kumpulan default digunakan, I_RpcMgmtEnableDedicatedThreadPool mengembalikan kesalahan 1764, dan operasi yang diminta tidak didukung
  • Windows Vista (default): Untuk biner yang dikompilasi untuk Windows Vista dan di bawah ini, kumpulan privat digunakan.

Kunci DirectDraw

  • Windows 7: Aplikasi yang dimanifestasikan untuk Windows 7 tidak dapat memanggil Lock API di DDRAW untuk mengunci buffer video Desktop utama. Melakukannya akan mengakibatkan kesalahan, dan penunjuk NULL untuk primer akan dikembalikan. Perilaku ini diberlakukan meskipun Komposisi Manajer Jendela Desktop tidak diaktifkan. Aplikasi yang kompatibel dengan Windows 7 tidak boleh mengunci buffer video utama untuk dirender.
  • Windows Vista (default): Aplikasi akan dapat memperoleh kunci pada buffer video utama karena aplikasi warisan tergantung pada perilaku ini. Menjalankan aplikasi akan menonaktifkan Desktop Window Manager.

Transfer Blok Bit DirectDraw (Blt) ke Primer tanpa Jendela Kliping

  • Windows 7: Aplikasi yang dimanifestasikan untuk Windows 7 dicegah untuk melakukan Blt ke buffer video Desktop utama tanpa jendela kliping. Melakukannya akan mengakibatkan kesalahan dan area Blt tidak akan dirender. Windows memberlakukan perilaku ini meskipun Anda tidak mengaktifkan Komposisi Manajer Jendela Desktop. Aplikasi yang kompatibel dengan Windows 7 harus Blt ke jendela kliping.
  • Windows Vista (default): Aplikasi harus dapat melakukan Blt ke primer tanpa jendela kliping sebagai aplikasi warisan tergantung pada perilaku ini. Menjalankan aplikasi ini mematikan Manajer Jendela Desktop.

GetOverlappedResult API

  • Windows 7: Menyelesaikan kondisi balapan di mana aplikasi multithread menggunakan GetOverlappedResult dapat kembali tanpa mengatur ulang peristiwa dalam struktur yang tumpang tindih, menyebabkan panggilan berikutnya ke fungsi ini kembali sebelum waktunya.
  • Windows Vista (default): Menyediakan perilaku dengan kondisi ras tempat aplikasi mungkin memiliki dependensi. Aplikasi yang ingin menghindari balapan ini sebelum perilaku Windows 7 harus menunggu pada peristiwa yang tumpang tindih dan ketika diberi sinyal, panggil GetOverlappedResult dengan bWait == FALSE.

Asisten Kompatibilitas Program (PCA)

  • Windows 7: Aplikasi dengan bagian Kompatibilitas tidak akan mendapatkan mitigasi PCA.
  • Windows Vista (default): Aplikasi yang gagal diinstal dengan benar atau crash selama runtime dalam beberapa keadaan tertentu akan mendapatkan mitigasi PCA. Untuk detail selengkapnya, lihat bagian referensi.

Memanfaatkan Kemampuan Fitur

Perbarui manifes aplikasi dengan informasi Kompatibilitas terbaru untuk dukungan sistem operasi. Bagian ini menjelaskan penambahan manifes:

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

  • Nama Bagian: Kompatibilitas (bagian baru)

  • SupportedOS: GUID sistem operasi yang didukung - GUID yang memetakan ke sistem operasi yang didukung adalah:

    • {e2011457-1546-43c5-a5fe-008deee3d3f0} untuk Windows Vista: Ini adalah nilai default untuk konteks switchback.
    • {35138b9a-5d96-4fbd-8e2d-a2440225f93a} untuk Windows 7: Aplikasi yang menetapkan nilai ini dalam manifes aplikasi mendapatkan perilaku Windows 7.

    Catatan

    Microsoft akan menghasilkan dan memposting GUID untuk versi Windows mendatang sesuai kebutuhan.

     

Berikut ini adalah contoh manifes yang diperbarui.

Catatan

Nama atribut dan tag dalam manifes aplikasi peka huruf besar/kecil.

 

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

Nilai penambahan GUID untuk kedua sistem operasi dalam contoh di atas adalah untuk memberikan dukungan tingkat bawah. Aplikasi yang mendukung kedua platform tidak memerlukan manifes terpisah untuk setiap platform.

Pengujian Kompatibilitas, Performa, Keandalan, dan Kegunaan

  1. Uji aplikasi dengan bagian kompatibilitas baru dan SupportedOS ID ={35138b9a-5d96-4fbd-8e2d-a2440225f93a} untuk memastikan bahwa aplikasi berfungsi dengan baik menggunakan perilaku Windows 7 terbaru
  2. Uji aplikasi dengan bagian kompatibilitas baru dan SupportedOS ID ={e2011457-1546-43c5-a5fe-008deee3d3f0} (atau tanpa bagian ini sepenuhnya) untuk memastikan bahwa aplikasi berfungsi dengan baik menggunakan perilaku Windows Vista pada Windows 7

Masalah Umum

Ketidakcocokan Konteks Aplikasi berjalan dalam konteks Windows Vista alih-alih dalam konteks Windows 7 di komputer yang menjalankan edisi x64 dari Windows 7 atau Windows Server 2008 R2.

Solusi Updates tersedia untuk memperbaiki ini untuk semua versi Windows 7 dan Windows Server 2008 R2 berbasis x64 yang didukung, serta untuk semua versi Windows Server 2008 R2 berbasis Itanium yang didukung. Buka halaman Dukungan Microsoft untuk KB 978637: Aplikasi berjalan dalam konteks Windows Vista alih-alih dalam konteks Windows 7 di komputer yang menjalankan Windows 7 edisi x64 atau Windows Server 2008 R2 untuk detail tambahan dan mengunduh versi yang benar untuk sistem Anda.

Diagnosis crash dump diblokir

Solusi Buka halaman Dukungan Microsoft untuk KB 976038: Pengecualian yang dilemparkan dari aplikasi yang berjalan di Windows versi 64-bit diabaikan untuk detail tambahan.