EVT_WDF_OBJECT_CONTEXT_DESTROY回呼函式 (wdfobject.h)

[適用于 KMDF 和 UMDF]

驅動程式的 EvtDestroyCallback 事件回呼函式會執行與刪除架構物件相關聯的作業。

語法

EVT_WDF_OBJECT_CONTEXT_DESTROY EvtWdfObjectContextDestroy;

void EvtWdfObjectContextDestroy(
  [in] WDFOBJECT Object
)
{...}

參數

[in] Object

架構物件的控制碼。

傳回值

備註

驅動程式可以在WDF_OBJECT_ATTRIBUTES結構中指定EvtDestroyCallback 回呼函式。 這個結構可用來做為建立架構物件之所有架構方法的輸入,例如 WdfDeviceCreate

架構會在物件的參考計數遞減為零之後呼叫 EvtDestroyCallback 回 呼函式。 架構會在 EvtDestroyCallback 回 呼函式傳回之後立即刪除物件。

EvtDestroyCallback可以存取物件內容,但無法呼叫物件上的任何方法。

如果驅動程式同時提供 EvtCleanupCallback 回 呼函式和物件的 EvtDestroyCallback 回 呼函式,架構會先呼叫 EvtCleanupCallback 回 呼函式。

刪除物件時,架構也會刪除物件的子系。 架構會先呼叫子物件的 EvtCleanupCallback 回 呼函式,再呼叫父物件的 EvtCleanupCallback 回 呼函式。 接下來,如果子系的參考計數為零,架構會呼叫子物件的 EvtDestroyCallback 回 呼函式。 最後,如果父系的參考計數為零,架構會呼叫父物件的 EvtDestroyCallback 回 呼函式。

當驅動程式建立物件時,有時會設定物件特定的記憶體緩衝區,並將緩衝區指標儲存在物件 的內容空間中。 驅動程式的 EvtCleanupCallbackEvtDestroyCallback 回 呼函式可以解除配置這些記憶體緩衝區。

如需刪除架構物件的詳細資訊,請參閱 Framework 物件生命週期

一般而言,架構會在 IRQL < = DISPATCH_LEVEL呼叫EvtDestroyCallback 回呼函式。 不過,架構會在下列情況下呼叫 IRQL = PASSIVE_LEVEL的回呼函式:

  • 物件的控制碼類型為 WDFDEVICE、WDFDRIVER、WDFDPC、WDFINTERRUPT、WDFIOTARGET、WDFQUEUE、WDFSTRING、WDFTIMER 或 WDFWORKITEM。
  • 物件的控制碼類型為 WDFMEMORY 或 WDFLOGANSIDE,而驅動程式已將PoolType參數的PagedPool指定為WdfMemoryCreateWdfLopoolsideListCreate
從架構 1.9 版開始, wdfroletypes.h 標頭檔包含 EvtDestroyCallback 回 呼函式的一些替代物件類型特定函式類型。 這些替代類型可協助驗證工具判斷驅動程式是否使用回呼函式正確。 使用下表來判斷要使用的函式類型。
物件類型 函數類型
裝置物件 EVT_WDF_DEVICE_CONTEXT_DESTROY
I/O 佇列物件 EVT_WDF_IO_QUEUE_CONTEXT_DESTROY_CALLBACK
File 物件 EVT_WDF_FILE_CONTEXT_DESTROY_CALLBACK
所有其他物件 EVT_WDF_OBJECT_CONTEXT_DESTROY

必要條件

   
目標平臺 環球
最小 KMDF 版本 1.0
最低 UMDF 版本 2.0
標頭 wdfobject.h (包含 Wdf.h)
IRQL 請參閱一節。

另請參閱

EvtCleanupCallback

WDF_OBJECT_ATTRIBUTES