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) |