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