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)
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) |