EVT_WDF_OBJECT_CONTEXT_DESTROY função de retorno de chamada (wdfobject.h)
[Aplica-se a KMDF e UMDF]
A função de retorno de chamada de evento EvtDestroyCallback de um driver executa operações associadas à exclusão de um objeto de estrutura.
Sintaxe
EVT_WDF_OBJECT_CONTEXT_DESTROY EvtWdfObjectContextDestroy;
void EvtWdfObjectContextDestroy(
[in] WDFOBJECT Object
)
{...}
Parâmetros
[in] Object
Um identificador para um objeto de estrutura.
Retornar valor
Nenhum
Comentários
O driver pode especificar uma função de retorno de chamada EvtDestroyCallback em uma estrutura WDF_OBJECT_ATTRIBUTES . Essa estrutura é usada como entrada para todos os métodos de estrutura que criam objetos de estrutura, como WdfDeviceCreate.
A estrutura chama a função de retorno de chamada EvtDestroyCallback depois que a contagem de referência do objeto foi decrementada para zero. A estrutura exclui o objeto imediatamente após o retorno da função de retorno de chamada EvtDestroyCallback .
O EvtDestroyCallback pode acessar o contexto do objeto, mas não pode chamar nenhum método no objeto .
Se um driver fornecer uma função de retorno de chamada EvtCleanupCallback e uma função de retorno de chamada EvtDestroyCallback para um objeto , a estrutura chamará a função de retorno de chamada EvtCleanupCallback primeiro.
Quando um objeto é excluído, a estrutura também exclui os filhos do objeto. A estrutura chama as funções de retorno de chamada EvtCleanupCallback dos objetos filho antes de chamar a função de retorno de chamada EvtCleanupCallback do objeto pai. Em seguida, se a contagem de referência do filho for zero, a estrutura chamará a função de retorno de chamada EvtDestroyCallback do objeto filho. Por fim, se a contagem de referência do pai for zero, a estrutura chamará a função de retorno de chamada EvtDestroyCallback do objeto pai.
Quando um driver cria um objeto, às vezes aloca buffers de memória específicos do objeto e armazena os ponteiros de buffer no espaço de contexto do objeto. A função de retorno de chamada EvtCleanupCallback ou EvtDestroyCallback do driver pode desalocar esses buffers de memória.
Para obter mais informações sobre como excluir objetos de estrutura, consulte Ciclo de vida do objeto Framework.
Normalmente, a estrutura chama a função de retorno de chamada EvtDestroyCallback em IRQL <= DISPATCH_LEVEL. No entanto, a estrutura chama a função de retorno de chamada em IRQL = PASSIVE_LEVEL nas seguintes situações:
- O tipo de identificador do objeto é WDFDEVICE, WDFDRIVER, WDFDPC, WDFINTERRUPT, WDFIOTARGET, WDFQUEUE, WDFSTRING, WDFTIMER ou WDFWORKITEM.
- O tipo de identificador do objeto é WDFMEMORY ou WDFLOOKASIDE e o driver especificou PagedPool para o parâmetro PoolType para WdfMemoryCreate ou WdfLookasideListCreate.
Tipo de objeto | Tipo de função |
---|---|
Objeto de dispositivo | EVT_WDF_DEVICE_CONTEXT_DESTROY |
Objeto de fila de E/S | EVT_WDF_IO_QUEUE_CONTEXT_DESTROY_CALLBACK |
Objeto de arquivo | EVT_WDF_FILE_CONTEXT_DESTROY_CALLBACK |
Todos os outros objetos | EVT_WDF_OBJECT_CONTEXT_DESTROY |
Requisitos
Requisito | Valor |
---|---|
Plataforma de Destino | Universal |
Versão mínima do KMDF | 1.0 |
Versão mínima do UMDF | 2,0 |
Cabeçalho | wdfobject.h (inclua Wdf.h) |
IRQL | Consulte a seção Observações. |