Partager via


Fonction MmLockPagableSectionByHandle (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 dans la section.

Syntaxe

void MmLockPagableSectionByHandle(
  [in] PVOID ImageSectionHandle
);

Paramètres

[in] ImageSectionHandle

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

Valeur de retour

None

Remarques

Un pilote appelle initialement MmLockPagableCodeSection ou MmLockPagableDataSection pour obtenir un handle pour une section de données ou de code 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.

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

Si le nombre de références sur le handle est différent de 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, le cas échéant, incrémente simplement le nombre de références sur la section. Si la section n’est pas résidente, MmLockPagableSectionByHandle pages dans la section, la verrouille dans l’espace système et définit le nombre de références sur un.

Pour éviter une 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 est différent de zéro, le pilote doit appeler MmUnlockPagableImageSection pour décrémenter le nombre à zéro avant que le déchargement ne se produise.

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

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 ntddk.h (inclure 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