Fonction MmUnlockPagableImageSection (wdm.h)
La routine MmUnlockPagableImageSection libère une section de code de pilote ou de données de pilote, précédemment verrouillée dans l’espace système avec MmLockPagableCodeSection, MmLockPagableDataSection ou MmLockPagableSectionByHandle, de sorte que la section peut être paginée à nouveau.
Syntaxe
void MmUnlockPagableImageSection(
[in] PVOID ImageSectionHandle
);
Paramètres
[in] ImageSectionHandle
Spécifie le handle retourné par un appel à MmLockPagableCodeSection ou MmLockPagableDataSection.
Valeur de retour
None
Remarques
Le handle de la section paginable d’un pilote ne doit pas être libéré si le pilote a des IRP en suspens dans ses files d’attente de périphériques ou files d’attente internes. Un appel à MmUnlockPagableImageSection restaure la paginabilité de cette section entière lorsqu’il n’y a plus de références au handle pour cette section.
Le gestionnaire de mémoire conserve le nombre de références sur le handle dans une section. Une section paginable n’est disponible pour être paginée que lorsque le nombre de références est égal à zéro. Chaque demande de verrouillage incrémente le nombre ; chaque demande de déverrouillage décrémente le nombre. Un pilote doit déverrouiller une section autant de fois qu’il verrouille une section pour rendre la section disponible pour être paginée.
Un handle est toujours valide, quel que soit le nombre. Si le nombre sur un handle est égal à zéro et qu’un appel est effectué à MmLockPagableSectionByHandle, le nombre est défini sur un, et si la section a été paginée, elle est paginée.
Dans la plupart des cas, MmUnlockPagableImageSection est appelé avant la routine de déchargement d’un pilote. Autrement dit, un pilote avec une section paginable est susceptible d’avoir sa routine DispatchClose et/ou DispatchShutdown appeler MmUnlockPagableImageSection avant que sa routine de déchargement soit appelée. Toutefois, il convient de veiller à ce que les pilotes déchargés libèrent toute section paginable avant que le pilote lui-même ne soit déchargé du système.
Pour plus d’informations sur la pagination du code et des données, consultez Rendre les pilotes paginables.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Disponible à partir de Windows 2000. |
Plateforme cible | Universal |
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 | HwStorPortProhibitedDDIs(storport), IrqlMmApcLte(wdm) |