Partager via


Objets d’événements standard

Le système fournit plusieurs objets d’événements standard. Les pilotes peuvent utiliser ces objets d’événement pour être avertis par le système chaque fois que certaines conditions se produisent. La liste suivante contient les objets d’événements standard :

\KernelObjects\HighMemoryCondition
Cet événement est défini chaque fois que la quantité de mémoire physique libre dépasse une quantité définie par le système. Les pilotes peuvent attendre que cet événement soit défini en tant que signal pour allouer de la mémoire de manière agressive.

\KernelObjects\LowMemoryCondition
Cet événement est défini chaque fois que la quantité de mémoire physique libre tombe en dessous d’une quantité définie par le système. Les pilotes qui ont alloué de grandes quantités de mémoire peuvent attendre que cet événement soit défini comme signal pour libérer de la mémoire inutilisée.

Pour Microsoft Windows Server 2003 et versions ultérieures de Windows, les pilotes peuvent également utiliser les objets d’événements standard supplémentaires suivants :

\KernelObjects\HighPagedPoolCondition
Cet événement est déclenché chaque fois que la quantité de pool paginé libre dépasse une limite spécifiée par le système. Les pilotes peuvent attendre que cet événement soit défini comme un signal pour allouer de manière agressive de la mémoire à partir d’un pool paginé.

\KernelObjects\LowPagedPoolCondition
Cet événement est déclenché chaque fois que la quantité de mémoire paginée libre tombe en dessous d'une valeur définie par le système. Les pilotes qui ont alloué de grandes quantités de mémoire peuvent attendre que cet événement soit déclenché comme signal pour libérer la mémoire inutilisée du pool paginé.

\KernelObjects\HighNonPagedPoolCondition
Cet événement est défini lorsque la quantité de pool non paginé libre dépasse une quantité définie par le système. Les pilotes peuvent attendre que cet événement soit défini comme un signal pour allouer de manière agressive de la mémoire à partir d’un pool non paginé.

\KernelObjects\LowNonPagedPoolCondition
Cet événement est déclenché chaque fois que la quantité de pool non paginé libre passe en dessous d’un seuil défini par le système. Les pilotes qui ont alloué de grandes quantités de mémoire peuvent attendre que cet événement soit défini en tant que signal pour libérer la mémoire inutilisée du pool non paginé.

Pour Windows Vista et les versions ultérieures de Windows, les pilotes peuvent également utiliser les objets d’événements standard suivants :

\KernelObjects\LowCommitCondition
Cet événement est défini lorsque les frais de validation du système d’exploitation sont faibles, par rapport à la limite de validation actuelle. En d’autres termes, l’utilisation de la mémoire est faible et beaucoup d’espace est disponible dans la mémoire physique ou les fichiers de pagination.

\KernelObjects\HighCommitCondition
Cet événement est défini lorsque les frais de validation du système d’exploitation sont élevés, par rapport à la limite de validation actuelle. En d’autres termes, l’utilisation de la mémoire est élevée et très peu d’espace est disponible dans la mémoire physique ou les fichiers de pagination, mais le système d’exploitation peut être en mesure d’augmenter la taille de ses fichiers de pagination.

\KernelObjects\MaximumCommitCondition
Cet événement est défini lorsque les frais de validation du système d’exploitation sont proches de la limite de validation maximale. En d’autres termes, l’utilisation de la mémoire est très élevée, très peu d’espace est disponible dans la mémoire physique ou les fichiers de pagination, et le système d’exploitation ne peut pas augmenter la taille de ses fichiers de pagination. (Un administrateur système peut toujours augmenter la taille ou le nombre de fichiers de pagination, sans redémarrer l’ordinateur, si des ressources de stockage suffisantes existent.)

Chacun de ces événements est des événements de notification. Ils restent définis tant que la condition de déclenchement reste vraie.

Pour ouvrir un handle à l’un de ces événements, utilisez la routine IoCreateNotificationEvent . Un pilote devant attendre l’un de ces événements doit créer un thread dédié pour attendre. Le thread peut attendre un ou plusieurs de ces événements en appelant KeWaitForSingleObject ou KeWaitForMultipleObjects.