Compartilhar via


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.
A partir da versão 1.9 da estrutura, o arquivo de cabeçalho wdfroletypes.h contém alguns tipos de função alternativos, específicos do tipo de objeto, para a função de retorno de chamada EvtDestroyCallback . Esses tipos alternativos ajudam as ferramentas de verificação a determinar se o driver está usando corretamente a função de retorno de chamada. Use a tabela a seguir para determinar qual tipo de função usar.
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.

Confira também

EvtCleanupCallback

WDF_OBJECT_ATTRIBUTES