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
Un controllo di bug si verifica se il driver fornisce un handle di oggetti non valido.
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 numero di 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:
- Oggetti dell'elenco figlio framework (WDFCHILDLIST)
- Oggetti dispositivo Framework (WDFDEVICE), a meno che il driver non abbia chiamato WdfControlDeviceInitAllocate e creato un oggetto dispositivo di controllo, che il driver deve a volte eliminare
- Oggetti driver framework (WDFDRIVER)
- Oggetti file framework (WDFFILEOBJECT)
- Oggetti di interruzione del framework (WDFINTERRUPT)
- Oggetti coda framework (WDFQUEUE), se un oggetto rappresenta una 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 determinato tipo
- Oggetti pipe USB framework (WDFUSBPIPE)
- Oggetti interfaccia USB framework (WDFUSBINTERFACE)
- Oggetti provider WMI framework (WDFWMIPROVIDER)
- Oggetto elenco intervallo di risorse (WDFIORESLIST)
- Oggetto Elenco risorse (WDFCMRESLIST)
- Oggetto elenco dei 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 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, È necessario chiamare WdfObjectDelete in IRQL = PASSIVE_LEVEL. Analogamente, se il driver elimina un buffer comune, WdfObjectDelete deve essere chiamato in IRQL = PASSIVE_LEVEL.
Esempio
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 KMDF minima | 1.0 |
Versione UMDF minima | 2,0 |
Intestazione | wdfobject.h (includere Wdf.h) |
Libreria | 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) |