EVT_WDF_OBJECT_CONTEXT_DESTROY Rückruffunktion (wdfobject.h)
[Gilt für KMDF und UMDF]
Die EvtDestroyCallback-Ereignisrückruffunktion eines Treibers führt Vorgänge aus, die dem Löschen eines Frameworkobjekts zugeordnet sind.
Syntax
EVT_WDF_OBJECT_CONTEXT_DESTROY EvtWdfObjectContextDestroy;
void EvtWdfObjectContextDestroy(
[in] WDFOBJECT Object
)
{...}
Parameter
[in] Object
Ein Handle für ein Frameworkobjekt.
Rückgabewert
Keine
Bemerkungen
Der Treiber kann eine EvtDestroyCallback-Rückruffunktion in einer WDF_OBJECT_ATTRIBUTES-Struktur angeben. Diese Struktur wird als Eingabe für alle Frameworkmethoden verwendet, die Frameworkobjekte erstellen, z. B. WdfDeviceCreate.
Das Framework ruft die Rückruffunktion EvtDestroyCallback auf, nachdem die Verweisanzahl des Objekts auf 0 erhöht wurde. Das Framework löscht das Objekt unmittelbar nach der Rückgabe der Rückruffunktion EvtDestroyCallback .
EvtDestroyCallback kann auf den Objektkontext zugreifen, aber keine Methoden für das Objekt aufrufen.
Wenn ein Treiber sowohl eine EvtCleanupCallback-Rückruffunktion als auch eine EvtDestroyCallback-Rückruffunktion für ein Objekt bereitstellt, ruft das Framework zuerst die Rückruffunktion EvtCleanupCallback auf.
Wenn ein Objekt gelöscht wird, löscht das Framework auch die untergeordneten Elemente des Objekts. Das Framework ruft die EvtCleanupCallback-Rückruffunktionen untergeordneter Objekte auf, bevor die Rückruffunktion EvtCleanupCallback des übergeordneten Objekts aufgerufen wird. Wenn die Verweisanzahl des untergeordneten Objekts 0 ist, ruft das Framework die Rückruffunktion EvtDestroyCallback des untergeordneten Objekts auf. Wenn die Verweisanzahl des übergeordneten Objekts 0 ist, ruft das Framework schließlich die Rückruffunktion EvtDestroyCallback des übergeordneten Objekts auf.
Wenn ein Treiber ein Objekt erstellt, ordnet er manchmal objektspezifische Speicherpuffer zu und speichert die Pufferzeiger im Kontextbereich des Objekts. Die Rückruffunktion EvtCleanupCallback oder EvtDestroyCallback des Treibers kann die Zuordnung dieser Speicherpuffer beheben.
Weitere Informationen zum Löschen von Frameworkobjekten finden Sie unter Framework-Objektlebenszyklus.
In der Regel ruft das Framework die Rückruffunktion EvtDestroyCallback unter IRQL <= DISPATCH_LEVEL auf. In den folgenden Situationen ruft das Framework jedoch die Rückruffunktion unter IRQL = PASSIVE_LEVEL auf:
- Der Handletyp des Objekts ist WDFDEVICE, WDFDRIVER, WDFDPC, WDFINTERRUPT, WDFIOTARGET, WDFQUEUE, WDFSTRING, WDFTIMER oder WDFWORKITEM.
- Der Handletyp des Objekts ist WDFMEMORY oder WDFLOOKASIDE, und der Treiber hat PagedPool für den PoolType-Parameter für WdfMemoryCreate oder WdfLookasideListCreate angegeben.
Objekttyp | Funktionstyp |
---|---|
Geräteobjekt | EVT_WDF_DEVICE_CONTEXT_DESTROY |
E/A-Warteschlangenobjekt | EVT_WDF_IO_QUEUE_CONTEXT_DESTROY_CALLBACK |
File-Objekt | EVT_WDF_FILE_CONTEXT_DESTROY_CALLBACK |
Alle anderen Objekte | EVT_WDF_OBJECT_CONTEXT_DESTROY |
Anforderungen
Anforderung | Wert |
---|---|
Zielplattform | Universell |
KMDF-Mindestversion | 1.0 |
UMDF-Mindestversion | 2.0 |
Kopfzeile | wdfobject.h (einschließen von Wdf.h) |
IRQL | Weitere Informationen finden Sie im Abschnitt mit den Hinweisen. |