функция обратного вызова EVT_WDF_OBJECT_CONTEXT_DESTROY (wdfobject.h)
[Относится к KMDF и UMDF]
Функция обратного вызова события EvtDe составнойCallback драйвера выполняет операции, связанные с удалением объекта платформы.
Синтаксис
EVT_WDF_OBJECT_CONTEXT_DESTROY EvtWdfObjectContextDestroy;
void EvtWdfObjectContextDestroy(
[in] WDFOBJECT Object
)
{...}
Параметры
[in] Object
Дескриптор объекта платформы.
Возвращаемое значение
None
Remarks
Драйвер может указать функцию обратного вызова EvtDetraitsCallback в WDF_OBJECT_ATTRIBUTES структуре. Эта структура используется в качестве входных данных для всех методов платформы, создающих объекты платформы, таких как WdfDeviceCreate.
Платформа вызывает функцию обратного вызова EvtDeкистрацияCallback после того, как количество ссылок объекта было уменьшено до нуля. Платформа удаляет объект сразу после возврата функции обратного вызова EvtDeкистяCallback .
EvtDetextCallback может получить доступ к контексту объекта, но не может вызывать никакие методы для объекта .
Если драйвер предоставляет функцию обратного вызова EvtCleanupCallback и функцию обратного вызова EvtDegradCallback для объекта, платформа сначала вызывает функцию обратного вызова EvtCleanupCallback .
При удалении объекта платформа также удаляет дочерние элементы объекта. Платформа вызывает функции обратного вызова EvtCleanupCallback дочерних объектов перед вызовом функции обратного вызова EvtCleanupCallback родительского объекта. Затем, если количество ссылок дочернего элемента равно нулю, платформа вызывает функцию обратного вызова EvtDebackCallback дочернего объекта. Наконец, если число ссылок родительского объекта равно нулю, платформа вызывает функцию обратного вызова EvtDehoodCallback родительского объекта.
Когда драйвер создает объект, он иногда выделяет буферы памяти для конкретного объекта и сохраняет указатели буфера в пространстве контекста объекта. Функция обратного вызова EvtCleanupCallback или EvtDegradCallback драйвера может освободить эти буферы памяти.
Дополнительные сведения об удалении объектов платформы см. в разделе Жизненный цикл объектов платформы.
Как правило, платформа вызывает функцию обратного вызова EvtDeqlCallback в IRQL <= DISPATCH_LEVEL. Однако платформа вызывает функцию обратного вызова в IRQL = PASSIVE_LEVEL в следующих ситуациях:
- Тип дескриптора объекта — WDFDEVICE, WDFDRIVER, WDFDPC, WDFINTERRUPT, WDFIOTARGET, WDFQUEUE, WDFSTRING, WDFTIMER или WDFWORKITEM.
- Тип дескриптора объекта — WDFMEMORY или WDFLOOKASIDE, а драйвер указал PagedPool для параметра PoolTypeв значение WdfMemoryCreate или WdfLookasideListCreate.
Тип объекта | Тип функции |
---|---|
Объект устройства | EVT_WDF_DEVICE_CONTEXT_DESTROY |
Объект очереди ввода-вывода | 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 | См. раздел "Примечания". |