Funzione WdfObjectDelete (wdfobject.h)
[Si applica a KMDF e UMDF]
Il metodo WdfObjectDelete elimina un oggetto framework e i relativi oggetti figlio.
Sintassi
void WdfObjectDelete(
[in] WDFOBJECT Object
);
Parametri
[in] Object
Handle per l'oggetto framework.
Valore restituito
Nessuno
Osservazioni:
Se il driver fornisce un handle di oggetto non valido, si verifica un controllo di bug.
Nota
Le funzioni di callback chiamate in PASSIVE_LEVEL non possono eliminare oggetti timer. Per altre informazioni, vedere EVT_WDF_TIMER funzione di callback.
Dopo che un driver chiama WdfObjectDelete, l'oggetto specificato viene eliminato dopo che il conteggio dei riferimenti diventa zero.
I driver non possono chiamare WdfObjectDelete per eliminare gli oggetti framework seguenti, perché il framework gestisce sempre l'eliminazione di questi oggetti:
- Framework child-list objects (WDFCHILDLIST)
- Oggetti dispositivo Framework (WDFDEVICE), a meno che il driver non abbia chiamato WdfControlDeviceInitAllocate e creato un oggetto dispositivo di controllo , che a volte il driver deve eliminare
- Oggetti driver framework (WDFDRIVER)
- Oggetti file framework (WDFFILEOBJECT)
- Oggetti interrupt framework (WDFINTERRUPT)
- Oggetti coda framework (WDFQUEUE), se un oggetto rappresenta un coda di I/O predefinita o se il driver ha chiamato WdfDeviceConfigureRequestDispatching per configurare la coda per ricevere tutte le richieste di I/O di un particolare tipo
- Oggetti pipe USB framework (WDFUSBPIPE)
- Oggetti interfaccia USB framework (WDFUSBINTERFACE)
- Oggetti provider WMI framework (WDFWMIPROVIDER)
- Oggetto elenco intervallo di risorse (WDFIORESLIST)
- Oggetto elenco di risorse (WDFCMRESLIST)
- Oggetto elenco requisiti delle risorse (WDFIORESREQLIST)
Il metodo WdfObjectDelete può restituire prima che il framework abbia eliminato l'oggetto e i relativi oggetti figlio. L'ordine in cui il framework elimina gli oggetti figlio non è prevedibile.
Per altre informazioni su WdfObjectDelete e sulle regole di pulizia per una gerarchia di oggetti framework, vedere Ciclo di vita dell'oggetto Framework.
Il metodo WdfObjectDelete deve essere chiamato in IRQL <= DISPATCH_LEVEL. Se il driver elimina un oggetto dispositivo di controllo, WdfObjectDelete deve essere chiamato in IRQL = PASSIVE_LEVEL. Analogamente, se il driver sta eliminando un buffer comune, WdfObjectDelete deve essere chiamato in IRQL = PASSIVE_LEVEL.
Esempi
Nell'esempio di codice seguente viene eliminato un oggetto framework e i relativi oggetti figlio.
WdfObjectDelete(Object);
Requisiti
Requisito | Valore |
---|---|
Piattaforma di destinazione | Universale |
versione minima di KMDF | 1.0 |
versione minima di UMDF | 2.0 |
intestazione | wdfobject.h (include Wdf.h) |
Biblioteca | Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF) |
IRQL | Vedere la sezione Osservazioni. |
regole di conformità 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) |