Fonction IoDeleteDevice (wdm.h)
La routine IoDeleteDevice supprime un objet d’appareil du système, par exemple lorsque l’appareil sous-jacent est supprimé du système.
void IoDeleteDevice(
[in] PDEVICE_OBJECT DeviceObject
);
[in] DeviceObject
Pointeur vers l’objet d’appareil à supprimer.
Aucun
Lors de la gestion d’une demande de IRP_MN_REMOVE_DEVICE PnP, un pilote PnP appelle IoDeleteDevice pour supprimer les objets d’appareil associés. Pour plus d’informations, consultez Gestion d’une demande de IRP_MN_REMOVE_DEVICE.
Un pilote hérité doit appeler cette routine lorsqu’elle est déchargée ou lorsque sa routine DriverEntry rencontre une erreur d’initialisation irrécupérable, telle qu’elle ne peut pas initialiser correctement un appareil physique. Cette routine est également appelée lorsqu’un pilote reconfigure dynamiquement ses appareils. Par exemple, un pilote de disque appelé pour repartitionner un disque appelle IoDeleteDevice pour supprimer les objets d’appareil représentant des partitions à remplacer.
Un pilote doit libérer certaines ressources pour lesquelles le pilote a fourni un stockage dans son extension d’appareil avant d’appeler IoDeleteDevice. Par exemple, si le pilote stocke le pointeur vers ses objets d’interruption dans l’extension d’appareil, il doit appeler IoDisconnectInterrupt avant d’appeler IoDeleteDevice.
Un pilote peut appeler IoDeleteDevice une seule fois pour un objet d’appareil donné.
Lorsqu’un pilote appelle IoDeleteDevice, le gestionnaire d’E/S supprime l’objet d’appareil cible s’il n’y a pas de références en attente. Toutefois, si des références en attente restent, le gestionnaire d’E/S marque l’objet d’appareil comme « supprimer en attente » et supprime l’objet d’appareil lorsque les références sont libérées.
Exigence | Valeur |
---|---|
client minimum pris en charge | Disponible à partir de Windows 2000. |
plateforme cible | Universel |
d’en-tête | wdm.h (include Wdm.h, Ntddk.h, Ntifs.h) |
bibliothèque | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= APC_LEVEL |
règles de conformité DDI | DeleteDevice(wdm), HwStorPortProhibitedDDIs(storport), IrqlIoApcLte(wdm), PnpSurpriseRemove(wdm), RemoveLockCheck(wdm) |