Partilhar via


Objetos de evento padrão

O sistema fornece vários objetos de evento padrão. Os drivers podem usar esses objetos de evento para serem notificados pelo sistema sempre que certas condições ocorrerem. A lista a seguir contém os objetos de evento padrão:

\KernelObjects\HighMemoryCondition
Esse evento é definido sempre que a quantidade de memória física livre excede uma quantidade definida pelo sistema. Os drivers podem esperar que esse evento seja definido como um sinal para alocar memória agressivamente.

\KernelObjects\LowMemoryCondition
Esse evento é definido sempre que a quantidade de memória física livre cai abaixo de uma quantidade definida pelo sistema. Os drivers que alocaram grandes quantidades de memória podem esperar que esse evento seja definido como um sinal para liberar memória não utilizada.

Para o Microsoft Windows Server 2003 e versões posteriores do Windows, os drivers também podem usar os seguintes objetos de evento padrão adicionais:

\KernelObjects\HighPagedPoolCondition
Este evento é acionado sempre que a quantidade de pool paginado livre excede uma quantidade definida pelo sistema. Os drivers podem esperar que esse evento seja definido como um sinal para alocar agressivamente a memória do pool paginado.

\KernelObjects\LowPagedPoolCondition
Este evento é ativado quando a quantidade de pool paginado livre cai abaixo de um valor definido pelo sistema. Os drivers que alocaram grandes quantidades de memória podem aguardar que esse evento seja definido como um sinal para liberar a memória não utilizada do pool paginado.

\KernelObjects\HighNonPagedPoolCondition
Esse evento é definido sempre que a quantidade de pool de memória não paginada livre excede uma quantidade definida pelo sistema. Os drivers podem esperar que esse evento seja definido como um sinal para alocar agressivamente a memória do pool não paginado.

\KernelObjects\LowNonPagedPoolCondition
Este evento é desencadeado sempre que a quantidade de pool não paginado livre cai abaixo de uma quantidade definida pelo sistema. Os drivers que alocaram grandes quantidades de memória podem aguardar que esse evento seja definido como um sinal para liberar a memória não utilizada do pool não paginado.

Para o Windows Vista e versões posteriores do Windows, os drivers também podem usar os seguintes objetos de evento padrão adicionais:

\KernelObjects\LowCommitCondition
Esse evento é definido quando a carga de confirmação do sistema operacional é baixa, em relação ao limite de confirmação atual. Em outras palavras, o uso de memória é baixo e muito espaço está disponível na memória física ou arquivos de paginação.

\KernelObjects\HighCommitCondition
Esse evento é definido quando a carga de confirmação do sistema operacional é alta, em relação ao limite de confirmação atual. Em outras palavras, o uso de memória é alto e muito pouco espaço está disponível na memória física ou arquivos de paginação, mas o sistema operacional pode ser capaz de aumentar o tamanho de seus arquivos de paginação.

\KernelObjects\MaximumCommitCondition
Esse evento é definido quando a carga de confirmação do sistema operacional está próxima do limite máximo de confirmação. Em outras palavras, o uso de memória é muito alto, muito pouco espaço está disponível na memória física ou arquivos de paginação, e o sistema operacional não pode aumentar o tamanho de seus arquivos de paginação. (Um administrador de sistema pode sempre aumentar o tamanho ou o número de ficheiros de paginação, sem reiniciar o computador, se existirem recursos de armazenamento suficientes.)

Cada um desses eventos são eventos de notificação. Eles permanecem definidos enquanto a condição de acionamento permanecer verdadeira.

Para abrir um identificador para qualquer um desses eventos, use a rotina IoCreateNotificationEvent . Um driver que aguarda qualquer um desses eventos deve criar um thread dedicado para fazer a espera. O thread pode aguardar um ou mais desses eventos chamando KeWaitForSingleObject ou KeWaitForMultipleObjects.