Partager via


MmLockPagableSectionByHandle, fonction (ntddk.h)

La routine MmLockPagableSectionByHandle verrouille un code paginable ou une section de données dans la mémoire système en incrémentant le nombre de références sur le handle de la section.

Syntaxe

void MmLockPagableSectionByHandle(
  [in] PVOID ImageSectionHandle
);

Paramètres

[in] ImageSectionHandle

Handle vers une section de code ou de données paginable. L’appelant a obtenu ce handle à partir d’un appel précédent à la routine MmLockPagableCodeSection ou MmLockPagableDataSection.

Valeur de retour

Aucun

Remarques

Un pilote appelle initialement MmLockPagableCodeSection ou MmLockPagableDataSection pour obtenir un handle vers une section de code ou de données paginable. Par la suite, le pilote peut appeler MmLockPagableSectionByHandle et MmUnlockPagableImageSection pour incrémenter et décrémenter le nombre de références sur le handle.

Le MmLockPagableCodeSection ou MmLockPagableDataSection l’appel verrouille la section paginable en mémoire système, retourne un handle à la section et initialise le nombre de références sur le handle à un. MmLockPagableSectionByHandle incrémente le nombre de références par un, et MmUnlockPagableImageSection décrémente le nombre de références par un.

Si le nombre de références sur le handle n’est pas égal à zéro, la section paginable est verrouillée. Si le nombre de références est égal à zéro, la section est déverrouillée.

Le handle de la section paginable reste valide tant que le pilote reste chargé en mémoire. Le pilote peut utiliser la même poignée pour verrouiller et déverrouiller à plusieurs reprises la section. Autrement dit, le pilote peut réutiliser un handle dont le nombre de références est égal à zéro. MmLockPagableSectionByHandle vérifie si la section référencée réside dans l’espace d’adressage de l’appelant et, si c’est le cas, incrémente simplement le nombre de références sur la section. Si la section n’est pas résidente, MmLockPagableSectionByHandle pages de la section, la verrouille dans l’espace système et définit le nombre de références sur un.

Pour éviter la fuite de mémoire système, le nombre de références sur le handle doit être égal à zéro lorsque le pilote est déchargé de la mémoire. Sinon, la section paginable reste verrouillée dans la mémoire système après le déchargement du pilote.

Si le pilote se prépare à décharger et que le nombre de références sur le handle n’est pas égal à zéro, le pilote doit appeler MmUnlockPagableImageSection pour décrémenter le nombre à zéro avant le déchargement.

Un pilote ne peut pas appeler MmLockPagableSectionByHandle pour verrouiller les mémoires tampons utilisateur passées dans les irps. Utilisez MmProbeAndLockPages à la place.

Pour plus d’informations sur la pagination du code et des données, consultez Rendre les pilotes paginables.

Exigences

Exigence Valeur
client minimum pris en charge Disponible à partir de Windows 2000.
plateforme cible Universel
d’en-tête ntddk.h (include Ntddk.h)
bibliothèque NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= APC_LEVEL
règles de conformité DDI HwStorPortProhibitedDDIs(storport), IrqlMmApcLte(wdm)

Voir aussi

MmLockPagableCodeSection

mmLockPagableDataSection

MmPageEntireDriver

mmProbeAndLockPages

mmResetDriverPaging

MmUnlockPagableImageSection