Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Para criar um único binário de driver executado no Windows 8 e em versões anteriores do Windows, use o mecanismo de aceitação POOL_NX_OPTIN. Esse é um auxílio de portabilidade para fornecedores de hardware de terceiros que fornecem um único binário de driver para dar suporte a várias versões do Windows.
Para usar esse mecanismo de aceitação, faça o seguinte:
Defina POOL_NX_OPTIN = 1 para todos os arquivos de origem que você deseja aceitar. Para fazer isso, inclua a seguinte definição de pré-processador na página de propriedade apropriada para seu projeto de driver:
C_DEFINES=$(C_DEFINES) -DPOOL_NX_OPTIN=1Em sua rotina de DriverEntry (ou equivalente), inclua a seguinte chamada de função:
ExInitializeDriverRuntime(DrvRtPoolNxOptIn);Essa chamada deve ocorrer antes que o driver faça alocações que usem o tipo de pool de NonPagedPool ou faça chamadas para a rotinaExInitializeNPagedLookasideList. ExInitializeDriverRuntime é uma função de força embutida e pode ser chamada no Windows 8 ou versões posteriores do Windows.
Para a maioria dos drivers, essas duas tarefas são suficientes para habilitar o mecanismo de aceitação para o binário de driver único.
Detalhes da implementação
POOL_NX_OPTIN funciona substituindo NonPagedPool por uma variável de POOL_TYPE global, ExDefaultNonPagedPoolType, que é inicializada para NonPagedPoolNx (para Windows 8 e versões posteriores do Windows) ou para NonPagedPoolExecute (para versões anteriores do Windows). Esse mecanismo de aceitação permite que o driver no modo kernel seja executado no Windows 8, com a proteção aprimorada do pool de NX e em versões anteriores do Windows, que não dão suporte ao pool de NX. A macro que converte instâncias do nome da constante NonPagedPool em NonPagedPoolNx também converte instâncias de NonPagedPoolCacheAligned em nonPagedPoolNxCacheAligned.
Suporte para bibliotecas estáticas (projetos.lib)
Você pode usar o mecanismo de aceitação POOL_NX_OPTIN para um projeto .lib, mas projetos que vinculam ao .lib geralmente também devem usar POOL_NX_OPTIN. No mínimo, o projeto que implementa a rotinaDriverEntry deve conter a seguinte chamada de função:
ExInitializeDriverRuntime(DrvRtPoolNxOptIn);