Crear código paginable en un controlador KMDF
El código paginable es código que se puede escribir en el archivo de paginación del equipo cuando no se usa el código. Puede hacer que parte del controlador se pueda paginar para reducir su imagen de carga y el tiempo de carga inicial, y para reducir la cantidad de código del controlador que usa el grupo de memoria no paginado limitado del equipo.
Para ayudarle a determinar si el código o los datos paginables son adecuados para el controlador, haga lo siguiente:
Identifique las secciones que se pueden paginar en el controlador.
Las secciones paginables no se cargan en la memoria hasta que se necesiten. Para obtener información sobre cómo crear secciones paginables en un controlador, vea Hacer que los controladores sean paginables.
Asegúrese de que el código del controlador paginado no impida la capacidad de un equipo para despertar rápidamente de un estado de bajo consumo.
Todas las funciones de devolución de llamada de objeto de dispositivo que proporcionan los controladores se llaman en IRQL = PASSIVE_LEVEL, lo que le permite hacer que su código sea paginable (como se describe en Hacer que los controladores se puedan paginar).
Sin embargo, no debe hacer que se pueda paginar el código de una función de devolución de llamada si el marco llama a la función de devolución de llamada cuando el dispositivo deja un estado de bajo consumo y vuelve a su estado de funcionamiento (D0).
Si este código es paginable, es posible que el código se escriba en el archivo de paginación antes de que el equipo entre en estado de suspensión. Por lo tanto, el equipo será más lento de despertar porque el código no se puede volver a cargar (y, por lo tanto, el dispositivo no puede estar totalmente operativo) hasta que se restaure la alimentación del disco de paginación.
Por lo tanto, las funciones de devolución de llamada que aparecen en el tema A Device Returns to Its Working State no deben ser paginables.
Determine si el controlador requiere acceso a datos paginables fuera del controlador, como archivos, el registro o el grupo paginado, durante las transiciones de energía.
Para obtener información sobre cómo habilitar y deshabilitar la capacidad de un controlador para acceder a datos paginables durante las transiciones de energía, vea WdfDeviceInitSetPowerPageable y WdfDeviceInitSetPowerNotPageable.
Para obtener información sobre cómo determinar cuándo el controlador está en un estado no paginable, vea WdfDevStateIsNP.