WdfObjectDelete, fonction (wdfobject.h)
[S’applique à KMDF et UMDF]
La méthode WdfObjectDelete supprime un objet framework et ses objets enfants.
Syntaxe
void WdfObjectDelete(
[in] WDFOBJECT Object
);
Paramètres
[in] Object
Handle à l’objet framework.
Valeur de retour
None
Remarques
Un bogue case activée se produit si le pilote fournit un handle d’objet non valide.
Notes
Les fonctions de rappel appelées à PASSIVE_LEVEL ne peuvent pas supprimer les objets du minuteur. Pour plus d’informations, consultez EVT_WDF_TIMER fonction de rappel.
Une fois qu’un pilote appelle WdfObjectDelete, l’objet spécifié est supprimé une fois que son nombre de références devient égal à zéro.
Les pilotes ne peuvent pas appeler WdfObjectDelete pour supprimer les objets d’infrastructure suivants, car l’infrastructure gère toujours la suppression de ces objets :
- Objets de liste enfant framework (WDFCHILDLIST)
- Objets de périphérique framework (WDFDEVICE), sauf si le pilote a appelé WdfControlDeviceInitAllocate et créé un objet de périphérique de contrôle, que le pilote doit parfois supprimer
- Objets de pilote framework (WDFDRIVER)
- Objets de fichier framework (WDFFILEOBJECT)
- Objets d’interruption de framework (WDFINTERRUPT)
- Objets de file d’attente framework (WDFQUEUE), si un objet représente une file d’attente d’E/S par défaut ou si le pilote a appelé WdfDeviceConfigureRequestDispatching pour configurer la file d’attente afin de recevoir toutes les demandes d’E/S d’un type particulier
- Objets de canal USB framework (WDFUSBPIPE)
- Objets d’interface USB framework (WDFUSBINTERFACE)
- Objets de fournisseur WMI framework (WDFWMIPROVIDER)
- Objet de liste de plages de ressources (WDFIORESLIST)
- Objet de liste de ressources (WDFCMRESLIST)
- Objet de liste des besoins en ressources (WDFIORESREQLIST)
La méthode WdfObjectDelete peut retourner avant que l’infrastructure n’ait supprimé l’objet et ses objets enfants. L’ordre dans lequel l’infrastructure supprime les objets enfants n’est pas prévisible.
Pour plus d’informations sur WdfObjectDelete et les règles de nettoyage d’une hiérarchie d’objets framework, consultez Cycle de vie des objets framework.
La méthode WdfObjectDelete doit être appelée à l’adresse IRQL <= DISPATCH_LEVEL. Si votre pilote supprime un objet d’appareil de contrôle, WdfObjectDelete doit être appelé à l’adresse IRQL = PASSIVE_LEVEL. De même, si votre pilote supprime une mémoire tampon commune, WdfObjectDelete doit être appelé à l’adresse IRQL = PASSIVE_LEVEL.
Exemples
L’exemple de code suivant supprime un objet framework et ses objets enfants.
WdfObjectDelete(Object);
Configuration requise
Condition requise | Valeur |
---|---|
Plateforme cible | Universal |
Version KMDF minimale | 1.0 |
Version UMDF minimale | 2.0 |
En-tête | wdfobject.h (inclure Wdf.h) |
Bibliothèque | Wdf01000.sys (KMDF) ; WUDFx02000.dll (UMDF) |
IRQL | Consultez la section Notes. |
Règles de conformité DDI | AddPdoToStaticChildList(kmdf),ControlDeviceDeleted(kmdf), CtlDeviceFinishInitDeviceAdd(kmdf), CtlDeviceFinishInitDrEntry(kmdf), DriverCreate(kmdf), InvalidReqAccessLocal(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf), MemAfterReqCompletedIntIodf), MemAfterReqCompletedIoctlA(kmdf), MemAfterReqCompletedReadA(kmdf), MemAfterReqCompletedWriteA(kmdf), ReqDelete(kmdf), ReqSendFail(kmdf) |