Share via


EVT_WDF_OBJECT_CONTEXT_DESTROY función de devolución de llamada (wdfobject.h)

[Se aplica a KMDF y UMDF]

La función de devolución de llamada de eventos EvtDestroyCallback de un controlador realiza operaciones asociadas a la eliminación de un objeto de marco.

Sintaxis

EVT_WDF_OBJECT_CONTEXT_DESTROY EvtWdfObjectContextDestroy;

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

Parámetros

[in] Object

Identificador de un objeto de marco.

Valor devuelto

None

Observaciones

El controlador puede especificar una función de devolución de llamada EvtDestroyCallback en una estructura de WDF_OBJECT_ATTRIBUTES . Esta estructura se usa como entrada para todos los métodos de marco que crean objetos de marco, como WdfDeviceCreate.

El marco llama a la función de devolución de llamada EvtDestroyCallback después de que el recuento de referencias del objeto se haya reducido a cero. El marco elimina el objeto inmediatamente después de que se devuelva la función de devolución de llamada EvtDestroyCallback .

EvtDestroyCallback puede tener acceso al contexto del objeto, pero no puede llamar a ningún método del objeto.

Si un controlador proporciona una función de devolución de llamada EvtCleanupCallback y una función de devolución de llamada EvtDestroyCallback para un objeto, el marco llama primero a la función de devolución de llamada EvtCleanupCallback .

Cuando se elimina un objeto, el marco también elimina los elementos secundarios del objeto. El marco llama a las funciones de devolución de llamada EvtCleanupCallback de los objetos secundarios antes de llamar a la función de devolución de llamada EvtCleanupCallback del objeto primario. A continuación, si el recuento de referencias del elemento secundario es cero, el marco llama a la función de devolución de llamada EvtDestroyCallback del objeto secundario. Por último, si el recuento de referencias del elemento primario es cero, el marco llama a la función de devolución de llamada EvtDestroyCallback del objeto primario.

Cuando un controlador crea un objeto, a veces asigna búferes de memoria específicos del objeto y almacena los punteros de búfer en el espacio de contexto del objeto. La función de devolución de llamada EvtCleanupCallback o EvtDestroyCallback del controlador puede desasignar estos búferes de memoria.

Para obtener más información sobre cómo eliminar objetos de marco, vea Ciclo de vida de objetos de marco.

Normalmente, el marco llama a la función de devolución de llamada EvtDestroyCallback en IRQL <= DISPATCH_LEVEL. Sin embargo, el marco llama a la función de devolución de llamada en IRQL = PASSIVE_LEVEL en las situaciones siguientes:

  • El tipo de identificador del objeto es WDFDEVICE, WDFDRIVER, WDFDPC, WDFINTERRUPT, WDFIOTARGET, WDFQUEUE, WDFSTRING, WDFTIMER o WDFWORKITEM.
  • El tipo de identificador del objeto es WDFMEMORY o WDFLOOKASIDE y el controlador ha especificado PagedPool para el parámetro PoolType en WdfMemoryCreate o WdfLookasideListCreate.
A partir de la versión 1.9 del marco, el archivo de encabezado wdfroletypes.h contiene algunos tipos de función alternativos específicos del tipo de objeto para la función de devolución de llamada EvtDestroyCallback . Estos tipos alternativos ayudan a las herramientas de comprobación a determinar si el controlador usa correctamente la función de devolución de llamada. Use la tabla siguiente para determinar qué tipo de función se va a usar.
Tipo de objeto Tipo de función
Objeto de dispositivo EVT_WDF_DEVICE_CONTEXT_DESTROY
Objeto de cola de E/S EVT_WDF_IO_QUEUE_CONTEXT_DESTROY_CALLBACK
File (objeto) EVT_WDF_FILE_CONTEXT_DESTROY_CALLBACK
Todos los demás objetos EVT_WDF_OBJECT_CONTEXT_DESTROY

Requisitos

Requisito Value
Plataforma de destino Universal
Versión mínima de KMDF 1.0
Versión mínima de UMDF 2.0
Encabezado wdfobject.h (incluya Wdf.h)
IRQL vea la sección Comentarios.

Consulte también

EvtCleanupCallback

WDF_OBJECT_ATTRIBUTES