Tornando os drivers paginável

Por padrão, o vinculador atribui nomes como ". Text" e ". Data" às seções de código e dados de um arquivo de imagem de driver. Quando o driver é carregado, o Gerenciador de e/s torna essas seções não paginadas. Uma seção não paginável é sempre residente na memória.

um desenvolvedor de driver tem a opção de tornar as partes designadas de um driver paginável para que Windows possa mover essas partes para o arquivo de paginação quando elas não estiverem em uso. Para tornar uma seção de código ou de dados paginável, o desenvolvedor de driver atribui um nome que começa com "PAGE" à seção. O Gerenciador de e/s verifica os nomes das seções ao carregar um driver. Se um nome de seção começar com "PAGE", o Gerenciador de e/s tornará a seção paginável.

O código que é executado em IRQL > = DISPATCH_LEVEL deve ser residente na memória. Ou seja, esse código deve estar em um segmento não paginável ou em um segmento paginável que está bloqueado na memória. Se o código em execução em IRQL > = DISPATCH_LEVEL causar uma falha de página, ocorrerá uma verificação de bug. Os drivers podem usar a macro PAGED_CODE para verificar se as funções paginável são chamadas somente no IRQLs apropriado.

Se uma seção de código ou de dados for paginável, o driver poderá bloquear a seção na memória chamando a rotina MmLockPagableCodeSection ou MmLockPagableDataSection . A seção permanece bloqueada até que o driver chame a rotina MmUnlockPagableImageSection para desbloqueá-la. Enquanto a seção paginável está bloqueada, ela se comporta da mesma forma que uma seção não paginável.

Para obter informações sobre como atribuir nomes a seções de código e de dados, consulte MmLockPagableCodeSection e MmLockPagableDataSection.

Esta seção inclui os tópicos a seguir:

Quando o código e os dados devem ser paginável?

Tornando o código de driver ou os dados paginável