Функция WdfObjectDelete (wdfobject.h)

[Относится к KMDF и UMDF]

Метод WdfObjectDelete удаляет объект платформы и его дочерние объекты.

Синтаксис

void WdfObjectDelete(
  [in] WDFOBJECT Object
);

Параметры

[in] Object

Дескриптор объекта платформы.

Возвращаемое значение

None

Remarks

Ошибка проверка возникает, если драйвер предоставляет недопустимый дескриптор объекта.

Примечание

Функции обратного вызова, вызываемые в PASSIVE_LEVEL, не могут удалять объекты таймера. Дополнительные сведения см. в разделе функция обратного вызова EVT_WDF_TIMER.

После вызова драйвером WdfObjectDelete указанный объект удаляется после того, как его количество ссылок станет нулевым.

Драйверы не могут вызвать WdfObjectDelete для удаления следующих объектов платформы, так как платформа всегда обрабатывает удаление этих объектов:

  • Объекты дочерних списков платформы (WDFCHILDLIST)
  • Объекты устройств платформы (WDFDEVICE), если драйвер не вызвал WdfControlDeviceInitAllocate и не создал объект управляющего устройства, который драйвер иногда должен удалить.
  • Объекты драйвера платформы (WDFDRIVER)
  • Объекты файлов платформы (WDFFILEOBJECT)
  • Объекты прерываний платформы (WDFINTERRUPT)
  • Объекты очереди платформы (WDFQUEUE), если объект представляет очередь ввода-вывода по умолчанию или драйвер вызвал WdfDeviceConfigureRequestDispatching , чтобы настроить очередь для получения всех запросов ввода-вывода определенного типа.
  • Объекты USB-канала платформы (WDFUSBPIPE)
  • Объекты интерфейса USB платформы (WDFUSBINTERFACE)
  • Объекты поставщика WMI платформы (WDFWMIPROVIDER)
  • Объект списка диапазона ресурсов (WDFIORESLIST)
  • Объект resource list (WDFCMRESLIST)
  • Объект списка требований к ресурсам (WDFIORESREQLIST)
Полный список объектов платформы см. в разделе Сводка по объектам платформы.

Метод WdfObjectDelete может вернуться до удаления платформой объекта и его дочерних объектов. Порядок, в котором платформа удаляет дочерние объекты, не предсказуем.

Дополнительные сведения о WdfObjectDelete и правилах очистки для иерархии объектов платформы см. в разделе Жизненный цикл объекта Framework.

Метод WdfObjectDelete должен вызываться по адресу IRQL <= DISPATCH_LEVEL. Если драйвер удаляет объект управляющего устройства, необходимо вызвать WdfObjectDelete по адресу IRQL = PASSIVE_LEVEL. Аналогичным образом, если драйвер удаляет общий буфер, необходимо вызвать WdfObjectDelete по адресу IRQL = PASSIVE_LEVEL.

Примеры

В следующем примере кода удаляется объект платформы и его дочерние объекты.

WdfObjectDelete(Object);

Требования

Требование Значение
Целевая платформа Универсальное
Минимальная версия KMDF 1,0
Минимальная версия UMDF 2,0
Верхняя часть wdfobject.h (включая Wdf.h)
Библиотека Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF)
IRQL См. раздел "Примечания".
Правила соответствия 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)

См. также раздел

WdfControlDeviceInitAllocate

WdfObjectCreate