Función WdfObjectDelete (wdfobject.h)

[Se aplica a KMDF y UMDF]

El método WdfObjectDelete elimina un objeto de marco y sus objetos secundarios.

Sintaxis

void WdfObjectDelete(
  [in] WDFOBJECT Object
);

Parámetros

[in] Object

Identificador del objeto framework.

Valor devuelto

None

Observaciones

Se produce una comprobación de errores si el controlador proporciona un identificador de objeto no válido.

Nota

Las funciones de devolución de llamada a las que se llama en PASSIVE_LEVEL no pueden eliminar objetos de temporizador. Para obtener más información, consulta EVT_WDF_TIMER función de devolución de llamada.

Una vez que un controlador llama a WdfObjectDelete, el objeto especificado se elimina después de que su recuento de referencias se convierta en cero.

Los controladores no pueden llamar a WdfObjectDelete para eliminar los siguientes objetos de marco, ya que el marco siempre controla la eliminación de estos objetos:

  • Objetos de lista secundaria de framework (WDFCHILDLIST)
  • Objetos de dispositivo de marco (WDFDEVICE), a menos que el controlador haya llamado A WdfControlDeviceInitAllocate y haya creado un objeto de dispositivo de control, que a veces el controlador debe eliminar.
  • Objetos de controlador de marco (WDFDRIVER)
  • Objetos de archivo de marco (WDFFILEOBJECT)
  • Objetos de interrupción de marco (WDFINTERRUPT)
  • Objetos de cola de framework (WDFQUEUE), si un objeto representa una cola de E/S predeterminada o si el controlador ha llamado a WdfDeviceConfigureRequestDispatching para configurar la cola para recibir todas las solicitudes de E/S de un tipo determinado.
  • Objetos de canalización USB de marco (WDFUSBPIPE)
  • Objetos de interfaz USB de marco (WDFUSBINTERFACE)
  • Objetos de proveedor WMI de marco (WDFWMIPROVIDER)
  • Objeto de lista de intervalos de recursos (WDFIORESLIST)
  • Objeto de lista de recursos (WDFCMRESLIST)
  • Objeto de lista de requisitos de recursos (WDFIORESREQLIST)
Vea Resumen de objetos de marco para obtener una lista completa de objetos de marco.

El método WdfObjectDelete puede devolver antes de que el marco haya eliminado el objeto y sus objetos secundarios. El orden en que el marco elimina los objetos secundarios no es predecible.

Para obtener más información sobre WdfObjectDelete y las reglas de limpieza de una jerarquía de objetos de marco, vea Ciclo de vida de objetos de marco.

Se debe llamar al método WdfObjectDelete en IRQL <= DISPATCH_LEVEL. Si el controlador está eliminando un objeto de dispositivo de control, se debe llamar a WdfObjectDelete en IRQL = PASSIVE_LEVEL. Del mismo modo, si el controlador elimina un búfer común, se debe llamar a WdfObjectDelete en IRQL = PASSIVE_LEVEL.

Ejemplos

En el ejemplo de código siguiente se elimina un objeto de marco y sus objetos secundarios.

WdfObjectDelete(Object);

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 (incluir Wdf.h)
Library Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF)
IRQL vea la sección Comentarios.
Reglas de cumplimiento 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)

Consulte también

WdfControlDeviceInitAllocate

WdfObjectCreate