Fungsi DiRollbackDriver (newdev.h)

Fungsi DiRollbackDriver mengembalikan driver yang diinstal pada perangkat tertentu.

Sintaks

BOOL DiRollbackDriver(
  [in]            HDEVINFO         DeviceInfoSet,
  [in]            PSP_DEVINFO_DATA DeviceInfoData,
  [in, optional]  HWND             hwndParent,
  [in]            DWORD            Flags,
  [out, optional] PBOOL            NeedReboot
);

Parameter

[in] DeviceInfoSet

Handel ke set informasi perangkat yang berisi elemen informasi perangkat yang mewakili perangkat tempat pembatalan pengandar dilakukan.

[in] DeviceInfoData

Penunjuk ke struktur SP_DEVINFO_DATA yang mewakili perangkat tertentu dalam set informasi perangkat yang ditentukan tempat pemutaran kembali driver dilakukan.

[in, optional] hwndParent

Handel ke jendela tingkat atas yang digunakan DiRollbackDriver untuk menampilkan komponen antarmuka pengguna apa pun yang terkait dengan putar kembali driver untuk perangkat yang ditentukan. Parameter ini bersifat opsional dan dapat diatur ke NULL.

[in] Flags

Nilai jenis DWORD yang dapat diatur ke nol atau ROLLBACK_FLAG_NO_UI.

Biasanya, bendera ini harus diatur ke nol, dalam hal ini DiRollbackDriver tidak menekan komponen antarmuka pengguna default yang terkait dengan putar kembali driver. Namun, jika bendera ini diatur ke ROLLBACK_FLAG_NO_UI, DiRollbackDriver menekan tampilan komponen antarmuka pengguna yang terkait dengan putar kembali driver.

[out, optional] NeedReboot

Penunjuk ke nilai jenis BOOL yang diatur DiRollbackDriver untuk menunjukkan apakah hidupkan ulang sistem diperlukan untuk menyelesaikan pemutaran kembali. Parameter ini bersifat opsional dan dapat berupa NULL.

Jika parameter disediakan dan menghidupkan ulang sistem diperlukan untuk menyelesaikan pemutaran kembali, DiRollbackDriver mengatur nilai ke TRUE. Dalam hal ini, pemanggil harus meminta pengguna untuk memulai ulang sistem. Jika parameter ini disediakan dan hidupkan ulang sistem tidak diperlukan untuk menyelesaikan penginstalan, DiRollbackDriver mengatur nilai ke FALSE.

Jika parameter adalah NULL dan sistem dimulai ulang diperlukan untuk menyelesaikan pemutaran kembali, DiRollbackDriver menampilkan kotak dialog hidupkan ulang sistem.

Untuk informasi selengkapnya tentang parameter ini, lihat bagian Keterangan berikut.

Nilai kembali

DiRollbackDriver mengembalikan TRUE jika fungsi berhasil mengembalikan driver untuk perangkat; jika tidak, DiRollbackDriver mengembalikan FALSE dan kesalahan yang dicatat dapat diambil dengan melakukan panggilan ke GetLastError. Beberapa nilai kesalahan yang lebih umum yang mungkin dikembalikan GetLastError adalah sebagai berikut:

Menampilkan kode Deskripsi
ERROR_ACCESS_DENIED
Pemanggil tidak memiliki hak istimewa Administrator. Secara default, Windows mengharuskan penelepon memiliki hak istimewa Administrator untuk mengembalikan paket driver.
ERROR_IN_WOW64
Aplikasi panggilan adalah aplikasi 32-bit yang mencoba mengeksekusi di lingkungan 64-bit, yang tidak diizinkan. Untuk informasi selengkapnya, lihat Menginstal Perangkat pada Sistem 64-Bit.
ERROR_INVALID_FLAGS
Nilai yang ditentukan untuk Bendera tidak sama dengan nol atau ROLLBACK_FLAG_NO_UI.
ERROR_NO_MORE_ITEMS
Pengandar cadangan tidak disetel untuk perangkat.

Keterangan

Jika driver cadangan yang diinstal sebelumnya diatur untuk perangkat, putar kembali driver untuk perangkat menggantikan driver yang saat ini diinstal pada perangkat dengan driver cadangan. Windows mempertahankan paling banyak satu pengandar cadangan untuk suatu perangkat. Windows menyetel pengandar sebagai pengandar cadangan untuk perangkat segera setelah pengandar berhasil diinstal pada perangkat dan Windows menentukan bahwa perangkat berfungsi dengan benar. Namun, jika pengandar tidak berhasil diinstal pada perangkat atau perangkat tidak berfungsi dengan benar setelah penginstalan, Windows tidak menyetel driver sebagai driver cadangan untuk perangkat tersebut. Untuk informasi selengkapnya tentang pemutaran kembali driver, lihat informasi tentang Manajer Perangkat di Pusat Bantuan dan Dukungan.

Jika perangkat yang ditentukan memiliki driver cadangan, DiRollbackDriver melakukan operasi berikut:

  1. Jika Bendera diatur ke nol, DiRollbackDriver meminta pengguna untuk mengonfirmasi apakah driver cadangan harus diinstal. Jika tidak, jika Bendera diatur ke ROLLBACK_FLAG_NO_UI, DiRollbackDriver menginstal driver cadangan tanpa meminta pengguna untuk mengonfirmasi penginstalan driver cadangan.
  2. DiRollbackDriver menginstal driver cadangan. Pengandar terinstal apakah pengandar cadangan lebih cocok untuk perangkat daripada pengandar yang saat ini terinstal pada perangkat.
  3. Jika driver yang digantikan oleh driver cadangan bukan driver kotak masuk dan tidak diinstal pada perangkat lain dalam sistem, DiRollbackDriver akan menghapus driver dari sistem. DiRollbackDriver menghapus driver dari sistem karena diasumsikan bahwa pengguna akan mengganti driver hanya jika ada masalah dengan driver.
Jika perangkat yang ditentukan tidak memiliki driver cadangan, DiRollbackDriver memanggil SetLastError untuk mengatur kesalahan ERROR_NO_MORE_ITEMS, tidak menghapus driver yang saat ini diinstal, dan mengembalikan FALSE.

Secara umum, aplikasi penginstalan harus mengatur NeedReboot ke NULL sehingga sistem akan secara otomatis memulai hidupkan ulang sistem jika menghidupkan ulang diperlukan untuk menyelesaikan pemutaran kembali. Aplikasi harus menyediakan pointer NeedReboot hanya dalam kasus berikut:

  • Aplikasi harus memanggil DiRollbackDriver beberapa kali untuk menyelesaikan penginstalan. Dalam hal ini, aplikasi harus merekam apakah nilai TRUENeedReboot dikembalikan oleh salah satu panggilan ke DiRollbackDriver dan, jika demikian, meminta pengguna untuk memulai ulang sistem setelah panggilan akhir ke DiRollbackDriver kembali.
  • Aplikasi harus melakukan operasi yang diperlukan, selain memanggil DiRollbackDriver, sebelum hidupkan ulang sistem harus terjadi. Jika sistem menghidupkan ulang diperlukan, aplikasi harus menyelesaikan operasi yang diperlukan lalu meminta pengguna untuk menghidupkan ulang sistem.
Untuk menginstal driver baru untuk perangkat alih-alih mengembalikan driver untuk perangkat, panggil DiInstallDriver atau UpdateDriverForPlugAndPlayDevices.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Tersedia di Windows Vista dan versi Windows yang lebih baru.
Target Platform Desktop
Header newdev.h (termasuk Newdev.h)
Pustaka Newdev.lib
DLL Newdev.dll

Lihat juga

DiInstallDriver

UpdateDriverForPlugAndPlayDevices