共用方式為


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)
如需架構物件的完整清單,請參閱 Framework 物件的摘要

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)

另請參閱

WdfControlDeviceInitAllocate

WdfObjectCreate