Bagikan melalui


Menulis Penginstal kelas dan Co-Installers

Catatan

Fitur yang dijelaskan di bagian ini tidak didukung dalam paket driver universal atau seluler. Lihat Menggunakan File INF Universal.

Bagian ini berisi panduan yang harus Anda ikuti saat menulis rekan penginstal:

Menampilkan antarmuka pengguna

Menyimpan status penginstalan perangkat

Memuat file executable atau DLL

Memulai proses atau layanan lain

Untuk informasi selengkapnya tentang cara menulis penginstal bersama, lihat Menulis Penginstal Bersama.

Menampilkan antarmuka pengguna

Penginstalan perangkat sebagian besar berjalan dalam layanan sistem (noninteraktif). Oleh karena itu, pengguna tidak dapat melihat atau merespons antarmuka pengguna apa pun yang muncul dalam konteks ini. Kotak dialog apa pun yang disediakan dalam penginstal bersama selama pemrosesan kode fungsi penginstalan perangkat (DIF) menyebabkan penginstalan perangkat berhenti merespons.

Dalam kebanyakan kasus, rekan penginstal tidak boleh berinteraksi dengan pengguna kecuali selama pemrosesan tindakan selesai-instal. Tindakan selesai diinstal berjalan dalam konteks interaktif.

Catatan Penginstal bersama tidak boleh gagal dalam kode DIF dengan ERROR_REQUIRES_INTERACTIVE_WINDOWSTATION karena itu menyebabkan penginstalan perangkat gagal. Jika penginstalan perangkat memerlukan interaksi pengguna, rekan penginstal harus mendukung tindakan penginstalan akhir.

Menyimpan status penginstalan perangkat

Jangan menyimpan status penginstalan perangkat dalam pustaka tautan-dinamis (DLL) penginstal bersama . Karena Windows umumnya membongkar DLL setelah kode DIF ditangani oleh alat penginstal, informasi status apa pun yang disimpan dalam DLL tidak akan bertahan.

Untuk mempertahankan status penginstal perangkat dengan aman, penginstal kelas atau penginstal bersama harus menyimpan informasi status sebagai properti dalam kunci driver perangkat di registri. Untuk melakukan ini, ikuti langkah-langkah berikut:

  1. Untuk mengambil handel registri ke kunci driver untuk instans perangkat, gunakan SetupDiOpenDevRegKey dengan parameter KeyType yang diatur ke DIREG_DRV.

  2. Gunakan SetupDiGetDevicePropertyKeys (untuk mengambil semua kunci properti untuk instans perangkat) atau SetupDiGetDeviceProperty (untuk mengambil kunci properti instans perangkat tertentu).

  3. Gunakan SetupDiSetDeviceProperty untuk menyimpan kunci properti instans perangkat.

Memuat file executable atau DLL

Jika penginstal bersama Anda mencoba memuat file atau DLL yang dapat dieksekusi yang tidak ditandatangani pada platform Windows 64-bit, sistem operasi mencegahnya dimuat di lingkungan aman ini.

Untuk memuat file atau DLL yang dapat dieksekusi dengan aman oleh penginstal kelas atau penginstal bersama, kami sangat menyarankan agar file yang dapat dieksekusi atau DLL disertakan dalam paket driver yang ditandatangani secara digital. Untuk informasi selengkapnya tentang cara menandatangani paket driver, lihat Penandatanganan Driver.

Catatan Penginstal kelas dan penginstal bersama tidak boleh memuat modul DLL dengan panggilan fungsi eksplisit, seperti LoadLibrary, atau dengan membuat dependensi tautan.

Memulai proses atau layanan lain

Selama penginstalan perangkat, Windows tidak dapat melacak proses tambahan dan tidak dapat menentukan apa yang mereka lakukan atau kapan proses tersebut selesai. Misalnya, Windows dapat memulai atau menghentikan perangkat atau memulai hidupkan ulang sistem saat proses melakukan tindakan penting.

Dalam kebanyakan kasus, penginstal bersama tidak boleh memulai proses atau layanan lain. Namun, alat penginstal dapat memulai proses lain dengan aman dengan memanggil CreateProcess dari fungsi atau dialog yang ditampilkan melalui tindakan selesai-instal. Alat penginstal tidak boleh membiarkan pengguna melanjutkan dalam dialog atau prosedur sampai proses yang dibuat telah keluar.