Condividi tramite


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)
Per un elenco completo degli oggetti framework, vedere Riepilogo degli oggetti framework.

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)

Vedi anche

WdfControlDeviceInitAllocate

WdfObjectCreate