Partager via


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)

Voir aussi

MmLockPagableCodeSection

MmLockPagableDataSection

MmLockPagableSectionByHandle

MmPageEntireDriver

MmResetDriverPaging