Melaporkan Kegagalan Perangkat

Ada tiga cara untuk melaporkan kegagalan perangkat:

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 yang NT_SUCCESS(status) sama dengan FALSE, kerangka kerja akan memberi tahu manajer PnP, yang kemudian mencoba menghidupkan ulang perangkat dengan meminta driver bus untuk menghitung ulang perangkatnya. Driver Anda akan dimuat ulang, jika dibongkar.

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 menghitungnya kembali dengan memanggil WdfDeviceSetFailed dengan FailedAction yang 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 NT_SUCCESS(status) sama dengan FALSE, fungsi panggilan balik dapat mencegah hidupkan ulang dengan memanggil WdfDeviceSetFailed dengan argumen input WdfDeviceFailedNoRestart. Jika tidak, fungsi panggilan balik ini tidak harus memanggil WdfDeviceSetFailed.

Jika, dalam waktu singkat, beberapa upaya hidupkan ulang berturut-turut gagal (karena driver yang dimulai ulang kembali melaporkan kesalahan), kerangka kerja berhenti mencoba memulai ulang perangkat.

Jika fungsi EvtDeviceD0Entry driver bus mengembalikan nilai yang NT_SUCCESS(status) sama dengan FALSE, kerangka kerja mungkin masih memanggil fungsi driver EvtDeviceD0Entry yang terkait dengan perangkat anak driver bus.