Fungsi WdfObjectDelete (wdfobject.h)
[Berlaku untuk KMDF dan UMDF]
Metode WdfObjectDelete menghapus objek kerangka kerja dan objek turunannya.
Sintaks
void WdfObjectDelete(
[in] WDFOBJECT Object
);
Parameter
[in] Object
Handel ke objek kerangka kerja.
Nilai kembali
Tidak ada
Keterangan
Pemeriksaan bug terjadi jika driver menyediakan handel objek yang tidak valid.
Catatan
Fungsi panggilan balik yang dipanggil pada PASSIVE_LEVEL tidak dapat menghapus objek timer. Untuk informasi selengkapnya, lihat fungsi panggilan balik EVT_WDF_TIMER.
Setelah driver memanggil WdfObjectDelete, objek yang ditentukan dihapus setelah jumlah referensinya menjadi nol.
Driver tidak dapat memanggil WdfObjectDelete untuk menghapus objek kerangka kerja berikut, karena kerangka kerja selalu menangani penghapusan objek ini:
- Objek daftar anak kerangka kerja (WDFCHILDLIST)
- Objek perangkat kerangka kerja (WDFDEVICE), kecuali driver telah memanggil WdfControlDeviceInitAllocate dan membuat objek perangkat kontrol, yang terkadang harus dihapus oleh driver
- Objek driver kerangka kerja (WDFDRIVER)
- Objek file kerangka kerja (WDFFILEOBJECT)
- Objek interupsi kerangka kerja (WDFINTERRUPT)
- Objek antrean kerangka kerja (WDFQUEUE), jika objek mewakili antrean I/O default atau jika driver telah memanggil WdfDeviceConfigureRequestDispatching untuk menyiapkan antrean untuk menerima semua permintaan I/O dari jenis tertentu
- Objek pipa USB kerangka kerja (WDFUSBPIPE)
- Objek antarmuka USB kerangka kerja (WDFUSBINTERFACE)
- Objek penyedia WMI kerangka kerja (WDFWMIPROVIDER)
- Objek daftar rentang sumber daya (WDFIORESLIST)
- Objek daftar sumber daya (WDFCMRESLIST)
- Objek daftar persyaratan sumber daya (WDFIORESREQLIST)
Metode WdfObjectDelete dapat kembali sebelum kerangka kerja menghapus objek dan objek turunannya. Urutan di mana kerangka kerja menghapus objek anak tidak dapat diprediksi.
Untuk informasi selengkapnya tentang WdfObjectDelete dan aturan pembersihan untuk hierarki objek kerangka kerja, lihat Siklus Hidup Objek Kerangka Kerja.
Metode WdfObjectDelete harus dipanggil di IRQL <= DISPATCH_LEVEL. Jika driver Anda menghapus objek perangkat kontrol, WdfObjectDelete harus dipanggil di IRQL = PASSIVE_LEVEL. Demikian pula, jika driver Anda menghapus buffer umum, WdfObjectDelete harus dipanggil di IRQL = PASSIVE_LEVEL.
Contoh
Contoh kode berikut menghapus objek kerangka kerja dan objek turunannya.
WdfObjectDelete(Object);
Persyaratan
Persyaratan | Nilai |
---|---|
Target Platform | Universal |
Versi KMDF minimum | 1,0 |
Versi UMDF minimum | 2.0 |
Header | wdfobject.h (termasuk Wdf.h) |
Pustaka | Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF) |
IRQL | Lihat bagian Keterangan. |
Aturan kepatuhan DDI | AddPdoToStaticChildList(kmdf), ControlDeviceDeleted(kmdf), CtlDeviceFinishInitDeviceAdd(kmdf), CtlDeviceFinishInitDrEntry(kmdf), DriverCreate(kmdf), InvalidReqAccessLocal(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf), MemAfterReqCompletedIntIoctlA(kmdf), MemAfterReqCompletedIoctlA(kmdf), MemAfterReqCompletedReadA(kmdf), MemAfterReqCompletedWriteA(kmdf), ReqDelete(kmdf), ReqSendFail(kmdf) |
Lihat juga
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk