WdfObjectDelete 函式 (wdfobject.h)
[適用於 KMDF 和 UMDF]
WdfObjectDelete 方法會刪除架構物件及其子物件。
語法
void WdfObjectDelete(
[in] WDFOBJECT Object
);
參數
[in] Object
Framework 物件的句柄。
傳回值
無
備註
如果驅動程式提供無效的物件句柄,就會發生錯誤檢查。
注意
在 PASSIVE_LEVEL呼叫的回呼函式無法刪除定時器物件。 如需詳細資訊,請參閱 EVT_WDF_TIMER 回呼函式。
驅動程式呼叫 WdfObjectDelete 之後,指定的物件會在參考計數變成零之後刪除。
驅動程式無法呼叫 WdfObjectDelete 來刪除下列架構對象,因為架構一律會處理這些物件的刪除:
- WDFCHILDLIST) (Framework 子清單物件
- 除非驅動程式已呼叫 WdfControlDeviceInitAllocate 並建立 控件裝置對象,否則架構裝置物件 (WDFDEVICE) ,驅動程式有時必須刪除
- (WDFDRIVER) 架構驅動程序物件
- (WDFFILEOBJECT) 架構檔案物件
- (WDFINTERRUPT) 架構中斷物件
- 如果物件代表 預設 I/O 佇列 ,或驅動程式已呼叫 WdfDeviceConfigureRequestDispatching 來設定佇列以接收特定類型的所有 I/O 要求,則架構佇列物件 (WDFQUEUE)
- (WDFUSBPIPE) 架構 USB 管道物件
- (WDFUSBINTERFACE) 架構 USB 介面物件
- (WDFWMIPROVIDER) 架構 WMI 提供者物件
- WDFIORESLIST (資源範圍清單物件)
- 資源清單物件 (WDFCMRESLIST)
- 資源需求清單物件 (WDFIORESREQLIST)
WdfObjectDelete 方法可以在架構刪除物件及其子物件之前傳回。 架構刪除子對象的順序無法預測。
如需 WdfObjectDelete 和架構物件階層清除規則的詳細資訊,請參閱 Framework 物件生命週期。
必須在 IRQL <= DISPATCH_LEVEL呼叫 WdfObjectDelete 方法。 如果您的驅動程式正在刪除控制裝置物件,則必須在 IRQL = PASSIVE_LEVEL呼叫 WdfObjectDelete 。 同樣地,如果您的驅動程式正在刪除一般緩衝區,則必須在 IRQL = PASSIVE_LEVEL呼叫 WdfObjectDelete 。
範例
下列程式代碼範例會刪除架構物件及其子物件。
WdfObjectDelete(Object);
規格需求
需求 | 值 |
---|---|
目標平台 | Universal |
最小 KMDF 版本 | 1.0 |
最低UMDF版本 | 2.0 |
標頭 | wdfobject.h (包含 Wdf.h) |
程式庫 | Wdf01000.sys (KMDF) ;WUDFx02000.dll (UMDF) |
IRQL | 請參閱一節。 |
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) |