Création de code paginable dans un pilote KMDF
Le code paginable est un code qui peut être écrit dans le fichier de pagination de l’ordinateur lorsque le code n’est pas utilisé. Vous pouvez rendre une partie de votre pilote paginable pour réduire son image de chargement et son temps de chargement initial, et pour réduire la quantité de code de votre pilote qui utilise le pool de mémoire non paginée limité de l’ordinateur.
Pour vous aider à déterminer si le code paginable ou les données sont appropriés pour votre pilote, procédez comme suit :
Identifiez les sections paginables dans votre pilote.
Les sections paginables ne sont pas chargées en mémoire tant qu’elles ne sont pas nécessaires. Pour plus d’informations sur la création de sections paginables dans un pilote, consultez Rendre les pilotes paginables.
Assurez-vous que le code du pilote paginé n’empêche pas un ordinateur de se réveiller rapidement à partir d’un état de faible consommation.
Toutes les fonctions de rappel d’objet d’appareil que les pilotes fournissent sont appelées dans IRQL = PASSIVE_LEVEL, ce qui vous permet de rendre leur code paginable (comme décrit dans Rendre les pilotes paginables).
Toutefois, vous ne devez pas rendre le code d’une fonction de rappel paginable si l’infrastructure appelle la fonction de rappel lorsque l’appareil quitte un état d’alimentation faible et revient à son état de fonctionnement (D0).
Si ce code est paginable, le code peut être écrit dans le fichier de pagination avant que l’ordinateur entre en veille. Par conséquent, l’ordinateur sera plus lent à se réveiller, car votre code ne peut pas être rechargé (et par conséquent, votre appareil ne peut pas devenir entièrement opérationnel) tant que l’alimentation du disque de pagination n’est pas restaurée.
Par conséquent, les fonctions de rappel répertoriées dans la rubrique Un appareil retourne à son état de fonctionnement ne doivent pas être paginables.
Déterminez si votre pilote a besoin d’accéder aux données paginables en dehors du pilote, telles que les fichiers, le Registre ou le pool paginé, pendant les transitions d’alimentation.
Pour plus d’informations sur l’activation et la désactivation de la capacité d’un pilote à accéder aux données paginables pendant les transitions d’alimentation, consultez WdfDeviceInitSetPowerPageable et WdfDeviceInitSetPowerNotPageable.
Pour plus d’informations sur la façon de déterminer quand votre pilote est dans un état non modifiable, consultez WdfDevStateIsNP.