Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Os desenvolvedores de drivers devem designar o código como paginável sempre que possível, liberando espaço no sistema para o código que deve ser residente na memória. Você pode marcar funções como pagináveis com a macro NDIS_PAGEABLE_FUNCTION. O IRQL, os recursos de gerenciamento de recursos e outras características de uma função podem proibir que a função possa ser paginada.
Cada função ProtocolXxx é executada em um IRQL no intervalo de PASSIVE_LEVEL a DISPATCH_LEVEL. As funções executadas exclusivamente em IRQL = PASSIVE_LEVEL devem ser marcadas como pagináveis.
Uma função de driver que é executada em IRQL = PASSIVE_LEVEL pode ser tornada paginável desde que não chame nem seja chamada por qualquer função que seja executada em IRQL >= DISPATCH_LEVEL - como uma função que adquire um bloqueio de rotação. A aquisição de um bloqueio de rotação faz com que o IRQL do thread de aquisição seja aumentado para DISPATCH_LEVEL. Uma função de driver, como ProtocolBindAdapterEx, que é executada em IRQL = PASSIVE_LEVEL, não deve chamar nenhuma função NdisXxx que seja executada em IRQL >= DISPATCH_LEVEL, se essa função de driver estiver marcada como código paginável. Para obter mais informações sobre o IRQL para cada função NdisXxx, consulte NDIS Library Functions.
A função DriverEntry dos drivers de protocolo NDIS, assim como o código que é chamado apenas a partir do DriverEntry, deve ser especificado como código exclusivo de inicialização, usando a macro NDIS_INIT_FUNCTION. Presume-se que o código identificado com essa macro seja executado apenas uma vez no momento da inicialização do sistema e, como resultado, é mapeado somente durante esse tempo. Assim que uma função marcada como apenas para inicialização retorna, é descartada.