Rendre les pilotes paginables

Par défaut, l’éditeur de liens attribue des noms tels que .text » et « .data » aux sections de code et de données d’un fichier image de pilote. Lorsque le pilote est chargé, le gestionnaire d’E/S rend ces sections non pagées. Une section non pagée est toujours résidente en mémoire.

Un développeur de pilotes a la possibilité de rendre les parties désignées d’un pilote paginables afin que Windows puisse déplacer ces parties vers le fichier de pagination lorsqu’elles ne sont pas utilisées. Pour rendre une section de code ou de données paginable, le développeur de pilotes attribue un nom commençant par « PAGE » à la section. Le gestionnaire d’E/S vérifie les noms des sections lorsqu’il charge un pilote. Si un nom de section commence par « PAGE », le gestionnaire d’E/S rend la section paginable.

Le code qui s’exécute à IRQL >= DISPATCH_LEVEL doit être résident en mémoire. Autrement dit, ce code doit se trouver soit dans un segment non paginable, soit dans un segment paginable qui est verrouillé dans la mémoire. Si le code en cours d’exécution à IRQL >= DISPATCH_LEVEL provoque une erreur de page, un bogue case activée se produit. Les pilotes peuvent utiliser la macro PAGED_CODE pour vérifier que les fonctions paginables sont appelées uniquement aux IRQL appropriées.

Si une section de code ou de données est paginable, le pilote peut verrouiller la section en mémoire en appelant la routine MmLockPagableCodeSection ou MmLockPagableDataSection . La section reste verrouillée jusqu’à ce que le pilote appelle la routine MmUnlockPagableImageSection pour la déverrouiller. Bien que la section paginable soit verrouillée, elle se comporte comme une section non paginée.

Pour plus d’informations sur l’attribution de noms à des sections de code et de données, consultez MmLockPagableCodeSection et MmLockPagableDataSection.

Cette section comprend les rubriques suivantes :

Quand le code et les données doivent-ils être paginables ?

Rendre le code du pilote ou des données paginable