Criando código paginável em um driver KMDF

Código paginável é um código que pode ser gravado no arquivo de paginação do computador quando o código não está sendo usado. Você pode tornar parte do driver paginável para reduzir a imagem de carga e o tempo de carga inicial e reduzir a quantidade de código do driver que usa o pool de memória nãopagado limitado do computador.

Para ajudá-lo a determinar se o código ou os dados pagináveis são apropriados para o driver, faça o seguinte:

  1. Identifique seções pagináveis em seu driver.

    Seções pagináveis não são carregadas na memória até que sejam necessárias. Para obter informações sobre como criar seções pagináveis em um driver, consulte Tornando os drivers pagináveis.

  2. Verifique se o código do driver paginado não impede a capacidade de um computador de despertar rapidamente de um estado de baixa potência.

    Todas as funções de retorno de chamada de objeto de dispositivo fornecidas por drivers são chamadas em IRQL = PASSIVE_LEVEL, o que permite tornar seu código paginável (conforme descrito em Tornando os drivers pagináveis).

    No entanto, você não deverá tornar o código de uma função de retorno de chamada paginável se a estrutura chamar a função de retorno de chamada quando o dispositivo sair de um estado de baixa potência e retornar ao estado de trabalho (D0).

    Se esse código for paginável, o código poderá ser gravado no arquivo de paginação antes que o computador insira um estado de suspensão. Portanto, o computador será mais lento para despertar porque seu código não pode ser recarregado (e, portanto, seu dispositivo não pode ficar totalmente operacional) até que a energia do disco de paginação seja restaurada.

    Portanto, as funções de retorno de chamada listadas no tópico A Device Returns to Its Working State não devem ser pagináveis.

  3. Determine se o driver requer acesso a dados pagináveis fora do driver, como arquivos, registro ou pool de páginas, durante transições de energia.

    Para obter informações sobre como habilitar e desabilitar a capacidade de um driver de acessar dados pagináveis durante as transições de energia, consulte WdfDeviceInitSetPowerPageable e WdfDeviceInitSetPowerNotPageable.

    Para obter informações sobre como determinar quando o driver está em um estado não pageable, consulte WdfDevStateIsNP.