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 回 呼函式。
當驅動程式建立物件時,有時會設定物件特定的記憶體緩衝區,並將緩衝區指標儲存在物件 的內容空間中。 驅動程式的 EvtCleanupCallback 或 EvtDestroyCallback 回 呼函式可以解除配置這些記憶體緩衝區。
如需刪除架構物件的詳細資訊,請參閱 Framework 物件生命週期。
一般而言,架構會在 IRQL < = DISPATCH_LEVEL呼叫EvtDestroyCallback 回呼函式。 不過,架構會在下列情況下呼叫 IRQL = PASSIVE_LEVEL的回呼函式:
- 物件的控制碼類型為 WDFDEVICE、WDFDRIVER、WDFDPC、WDFINTERRUPT、WDFIOTARGET、WDFQUEUE、WDFSTRING、WDFTIMER 或 WDFWORKITEM。
- 物件的控制碼類型為 WDFMEMORY 或 WDFLOGANSIDE,而驅動程式已將PoolType參數的PagedPool指定為WdfMemoryCreate或WdfLopoolsideListCreate。
物件類型 | 函數類型 |
---|---|
裝置物件 | 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 | 請參閱一節。 |