WdfObjectDelete-Funktion (wdfobject.h)

[Gilt für KMDF und UMDF]

Die WdfObjectDelete-Methode löscht ein Frameworkobjekt und seine untergeordneten Objekte.

Syntax

void WdfObjectDelete(
  [in] WDFOBJECT Object
);

Parameter

[in] Object

Ein Handle für das Frameworkobjekt.

Rückgabewert

Keine

Bemerkungen

Eine Fehlerüberprüfung tritt auf, wenn der Treiber ein ungültiges Objekthandle bereitstellt.

Hinweis

Rückruffunktionen, die bei PASSIVE_LEVEL aufgerufen werden, können Timerobjekte nicht löschen. Weitere Informationen finden Sie unter EVT_WDF_TIMER Rückruffunktion.

Nachdem ein Treiber WdfObjectDelete aufgerufen hat, wird das angegebene Objekt gelöscht, nachdem seine Verweisanzahl null ist.

Treiber können WdfObjectDelete nicht aufrufen, um die folgenden Frameworkobjekte zu löschen, da das Framework das Löschen dieser Objekte immer verarbeitet:

  • Untergeordnete Framework-Listenobjekte (WDFCHILDLIST)
  • Framework-Geräteobjekte (WDFDEVICE), es sei denn, der Treiber hat WdfControlDeviceInitAllocate aufgerufen und ein Steuerelementgeräteobjekt erstellt, das der Treiber manchmal löschen muss.
  • Frameworktreiberobjekte (WDFDRIVER)
  • Frameworkdateiobjekte (WDFFILEOBJECT)
  • Framework-Interruptobjekte (WDFINTERRUPT)
  • Framework-Warteschlangenobjekte (WDFQUEUE), wenn ein Objekt eine Standard-E/A-Warteschlange darstellt oder wenn der Treiber WdfDeviceConfigureRequestDispatching aufgerufen hat, um die Warteschlange so einzurichten, dass alle E/A-Anforderungen eines bestimmten Typs empfangen werden.
  • Framework-USB-Pipe-Objekte (WDFUSBPIPE)
  • Framework-USB-Schnittstellenobjekte (WDFUSBINTERFACE)
  • Framework-WMI-Anbieterobjekte (WDFWMIPROVIDER)
  • Ressourcenbereichslistenobjekt (WDFIORESLIST)
  • Ressourcenlistenobjekt (WDFCMRESLIST)
  • Ressourcenanforderungslistenobjekt (WDFIORESREQLIST)
Eine vollständige Liste der Frameworkobjekte finden Sie unter Zusammenfassung der Frameworkobjekte .

Die WdfObjectDelete-Methode kann zurückgeben, bevor das Framework das Objekt und seine untergeordneten Objekte gelöscht hat. Die Reihenfolge, in der das Framework untergeordnete Objekte löscht, ist nicht vorhersagbar.

Weitere Informationen zu WdfObjectDelete und den Bereinigungsregeln für eine Frameworkobjekthierarchie finden Sie unter Framework Object Life Cycle.

Die WdfObjectDelete-Methode muss unter IRQL <= DISPATCH_LEVEL aufgerufen werden. Wenn Ihr Treiber ein Steuerelementgerätobjekt löscht, muss WdfObjectDelete unter IRQL = PASSIVE_LEVEL aufgerufen werden. Wenn Ihr Treiber einen allgemeinen Puffer löscht, muss WdfObjectDelete unter IRQL = PASSIVE_LEVEL aufgerufen werden.

Beispiele

Im folgenden Codebeispiel werden ein Frameworkobjekt und seine untergeordneten Objekte gelöscht.

WdfObjectDelete(Object);

Anforderungen

Anforderung Wert
Zielplattform Universell
KMDF-Mindestversion 1.0
UMDF-Mindestversion 2.0
Kopfzeile wdfobject.h (einschließen von Wdf.h)
Bibliothek Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF)
IRQL Weitere Informationen finden Sie im Abschnitt mit den Hinweisen.
DDI-Complianceregeln 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)

Weitere Informationen

WdfControlDeviceInitAllocate

WdfObjectCreate