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 或 WDFLOPAGESIDE,而且驅動程式已將 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 |
規格需求
需求 | 值 |
---|---|
目標平台 | Universal |
最低 KMDF 版本 | 1.0 |
最低UMDF版本 | 2.0 |
標頭 | wdfobject.h (包含 Wdf.h) |
IRQL | 請參閱一節。 |