Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Un pilote PnP doit avoir une routine de déchargement qui supprime toutes les ressources spécifiques au pilote, telles que la mémoire, les threads et les événements, qui sont créées par la routine DriverEntry . S’il n’existe aucune ressource spécifique au pilote à supprimer, le pilote doit toujours avoir une routine de déchargement , mais il peut simplement retourner.
La routine de déchargement d’un pilote peut être appelée à tout moment une fois que tous les appareils du pilote ont été supprimés. Le gestionnaire PnP appelle la routine Unload d’un pilote dans le contexte d’un thread système à IRQL = PASSIVE_LEVEL.
Les pilotes PnP libèrent des ressources spécifiques et des objets d’appareil en réponse aux IRP de suppression de dispositifs PnP. Le gestionnaire PnP envoie ces irps pour chaque appareil PnP qu’il énumère, ainsi que tous les appareils hérités énumérés par la racine qu’un pilote signale à l’aide d’IoReportDetectedDevice.
Par conséquent, les routines de déchargement des pilotes PnP sont généralement simples, souvent constituées uniquement d’une instruction de retour . Toutefois, si le pilote a alloué des ressources à l’échelle du pilote dans sa routine DriverEntry, il doit libérer ces ressources dans sa routine Unload, sauf si cela a déjà été fait. En général, le processus de déchargement d’un pilote PnP est une opération synchrone.
Le gestionnaire d’E/S libère l’objet du pilote et toute extension d’objet de pilote allouée par le pilote à l’aide d’IoAllocateDriverObjectExtension.