Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Ada tiga cara untuk melaporkan kegagalan perangkat:
Saat mengembalikan dari fungsi panggilan balik objek perangkat, driver dapat menyediakan nilai pengembalian di mana NT_SUCCESS(status) sama dengan FALSE.
Driver dapat memanggil WdfDeviceSetFailed.
Saat mengembalikan dari rutinitas panggilan balik EvtDriverDeviceAdd , driver fungsi dapat menyediakan nilai pengembalian yang NT_SUCCESS(statusnya) sama dengan FALSE. Jika driver yang diinstal sebagai filter gagal EvtDriverDeviceAdd, sistem operasi mengabaikan objek perangkat filter dan tidak menunjukkan kesalahan PnP.
Masing-masing metode di atas menghasilkan kerangka kerja yang secara efektif menghapus perangkat. Jika driver perangkat tidak mendukung perangkat lain pada sistem, manajer I/O akan membongkar driver.
Jika fungsi panggilan balik objek perangkat driver mengembalikan nilai di mana NT_SUCCESS(status) sama dengan FALSE, framework akan memberi tahu manajer PnP, yang kemudian mencoba menghidupkan ulang perangkat dengan meminta driver bus untuk mendaftarkan ulang perangkatnya. Driver Anda akan dimuat ulang, jika sebelumnya tidak dimuat.
Jika driver Anda memanggil WdfDeviceSetFailed, driver tersebut menyediakan argumen input yang menentukan apakah perangkat akan dimulai ulang. Nilai argumen adalah WdfDeviceFailedAttemptRestart dan WdfDeviceFailedNoRestart.
UMDF Sebelum UMDF 2.15, driver UMDF harus mengatur nilai ini ke WdfDeviceFailedNoRestart. Mulai dari UMDF versi 2.15, driver UMDF dapat meminta agar driver bus yang mendasar melakukan enumerasi ulang dengan memanggil WdfDeviceSetFailed dengan FailedAction diatur ke WdfDeviceFailedAttemptRestart. Untuk informasi selengkapnya, lihat WdfDeviceSetFailed.
Untuk informasi selengkapnya tentang nilai argumen ini, lihat WDF_DEVICE_FAILED_ACTION. Sebelum fungsi panggilan balik objek perangkat driver kembali dengan nilai yang membuat NT_SUCCESS(status) sama dengan FALSE, fungsi panggilan balik dapat mencegah perangkat melakukan restart dengan memanggil WdfDeviceSetFailed dengan argumen input WdfDeviceFailedNoRestart. Jika tidak, fungsi panggilan balik ini tidak perlu memanggil WdfDeviceSetFailed.
Jika, dalam waktu singkat, beberapa upaya pengaktifan ulang berturut-turut gagal (karena driver yang diaktifkan ulang kembali melaporkan kesalahan), sistem berhenti berusaha mengaktifkan ulang perangkat.
Jika fungsi EvtDeviceD0Entry dari driver bus mengembalikan nilai yang membuat NT_SUCCESS(status) menjadi FALSE, kerangka kerja mungkin masih akan memanggil fungsi EvtDeviceD0Entry dari driver yang terkait dengan perangkat anak dari driver bus tersebut.