Função WdfObjectDelete (wdfobject.h)

[Aplica-se a KMDF e UMDF]

O método WdfObjectDelete exclui um objeto de estrutura e seus objetos filho.

Sintaxe

void WdfObjectDelete(
  [in] WDFOBJECT Object
);

Parâmetros

[in] Object

Um identificador para o objeto framework.

Retornar valor

Nenhum

Comentários

Um bug marcar ocorrerá se o driver fornecer um identificador de objeto inválido.

Observação

As funções de retorno de chamada que são chamadas em PASSIVE_LEVEL não podem excluir objetos de temporizador. Para obter mais informações, consulte EVT_WDF_TIMER função de retorno de chamada.

Depois que um driver chama WdfObjectDelete, o objeto especificado é excluído depois que sua contagem de referência se torna zero.

Os drivers não podem chamar WdfObjectDelete para excluir os seguintes objetos de estrutura, pois a estrutura sempre manipula a exclusão desses objetos:

  • Objetos de lista filho da estrutura (WDFCHILDLIST)
  • Objetos de dispositivo framework (WDFDEVICE), a menos que o driver tenha chamado WdfControlDeviceInitAllocate e criado um objeto de dispositivo de controle, que o driver às vezes deve excluir
  • Objetos de driver de estrutura (WDFDRIVER)
  • Objetos de arquivo de estrutura (WDFFILEOBJECT)
  • Objetos de interrupção da estrutura (WDFINTERRUPT)
  • Objetos de fila de estrutura (WDFQUEUE), se um objeto representa uma fila de E/S padrão ou se o driver chamou WdfDeviceConfigureRequestDispatching para configurar a fila para receber todas as solicitações de E/S de um tipo específico
  • Objetos de pipe USB da estrutura (WDFUSBPIPE)
  • Objetos de interface USB da estrutura (WDFUSBINTERFACE)
  • Objetos de provedor WMI da Estrutura (WDFWMIPROVIDER)
  • Objeto de lista de intervalo de recursos (WDFIORESLIST)
  • Objeto de lista de recursos (WDFCMRESLIST)
  • Objeto de lista de requisitos de recursos (WDFIORESREQLIST)
Confira Resumo de Objetos de Estrutura para obter uma lista completa de objetos de estrutura.

O método WdfObjectDelete pode retornar antes que a estrutura exclua o objeto e seus objetos filho. A ordem na qual a estrutura exclui objetos filho não é previsível.

Para obter mais informações sobre WdfObjectDelete e as regras de limpeza de uma hierarquia de objetos de estrutura, consulte Ciclo de Vida do Objeto Framework.

O método WdfObjectDelete deve ser chamado em IRQL <= DISPATCH_LEVEL. Se o driver estiver excluindo um objeto de dispositivo de controle, WdfObjectDelete deverá ser chamado em IRQL = PASSIVE_LEVEL. Da mesma forma, se o driver estiver excluindo um buffer comum, WdfObjectDelete deverá ser chamado em IRQL = PASSIVE_LEVEL.

Exemplos

O exemplo de código a seguir exclui um objeto de estrutura e seus objetos filho.

WdfObjectDelete(Object);

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)
Biblioteca Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF)
IRQL Consulte a seção Observações.
Regras de conformidade de DDI AddPdoToStaticChildList(kmdf), ControlDeviceDeleted(kmdf), CtlDeviceFinishInitDeviceAdd(kmdf), CtlDeviceFinishInitDrEntry(kmdf), DriverCreate(kmdf), InvalidReqAccessLocal(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf), MemAfterReqCompletedIntIoctlA(kmdf), MemAfterReqCompletedIoctlA(kmdf), MemAfterReqCompletedReadA(kmdf), MemAfterReqCompletedWriteA(kmdf), ReqDelete(kmdf), ReqSendFail(kmdf)

Confira também

WdfControlDeviceInitAllocate

WdfObjectCreate