Oggetti evento standard
Il sistema fornisce diversi oggetti evento standard. I driver possono usare questi oggetti evento per ricevere una notifica dal sistema ogni volta che si verificano determinate condizioni. L'elenco seguente contiene gli oggetti evento standard:
\KernelObjects\HighMemoryCondition
Questo evento viene impostato ogni volta che la quantità di memoria fisica libera supera una quantità definita dal sistema. I driver possono attendere che questo evento venga impostato come segnale per allocare in modo aggressivo la memoria.
\KernelObjects\LowMemoryCondition
Questo evento viene impostato ogni volta che la quantità di memoria fisica libera scende al di sotto di una quantità definita dal sistema. I driver che hanno allocato grandi quantità di memoria possono attendere che questo evento venga impostato come segnale per liberare memoria inutilizzata.
Per Microsoft Windows Server 2003 e versioni successive di Windows, i driver possono usare anche i seguenti oggetti evento standard aggiuntivi:
\KernelObjects\HighPagedPoolCondition
Questo evento viene impostato ogni volta che la quantità di pool di paging libero supera una quantità definita dal sistema. I driver possono attendere che questo evento venga impostato come segnale per allocare in modo aggressivo la memoria dal pool di paging.
\KernelObjects\LowPagedPoolCondition
Questo evento viene impostato ogni volta che la quantità di pool di paging libero scende al di sotto di una quantità definita dal sistema. I driver che hanno allocato grandi quantità di memoria possono attendere che questo evento venga impostato come segnale per liberare memoria inutilizzata dal pool di paging.
\KernelObjects\HighNonPagedPoolCondition
Questo evento viene impostato ogni volta che la quantità di pool libero non di paging supera una quantità definita dal sistema. I driver possono attendere che questo evento venga impostato come segnale per allocare in modo aggressivo la memoria da un pool non di paging.
\KernelObjects\LowNonPagedPoolCondition
Questo evento viene impostato ogni volta che la quantità di pool libero non di paging scende al di sotto di una quantità definita dal sistema. I driver che hanno allocato grandi quantità di memoria possono attendere che questo evento venga impostato come segnale per liberare memoria inutilizzata dal pool non di paging.
Per Windows Vista e versioni successive di Windows, i driver possono usare anche gli oggetti evento standard seguenti:
\KernelObjects\LowCommitCondition
Questo evento viene impostato quando l'addebito di commit del sistema operativo è basso rispetto al limite di commit corrente. In altre parole, l'utilizzo della memoria è basso e un sacco di spazio è disponibile in file di memoria fisica o paging.
\KernelObjects\HighCommitCondition
Questo evento viene impostato quando l'addebito di commit del sistema operativo è elevato rispetto al limite di commit corrente. In altre parole, l'utilizzo della memoria è elevato e molto poco spazio è disponibile in file di memoria fisica o paging, ma il sistema operativo potrebbe essere in grado di aumentare le dimensioni dei file di paging.
\KernelObjects\MaximumCommitCondition
Questo evento viene impostato quando l'addebito di commit del sistema operativo è vicino al limite massimo di commit. In altre parole, l'utilizzo della memoria è molto elevato, molto poco spazio è disponibile in file di memoria fisica o paging e il sistema operativo non può aumentare le dimensioni dei file di paging. Un amministratore di sistema può sempre aumentare le dimensioni o il numero di file di paging, senza riavviare il computer, se sono presenti risorse di archiviazione sufficienti.
Ognuno di questi eventi è costituito da eventi di notifica. Rimangono impostati finché la condizione di attivazione rimane true.
Per aprire un handle per uno di questi eventi, utilizzare la routine IoCreateNotificationEvent . Un driver che attende uno di questi eventi deve creare un thread dedicato per eseguire l'attesa. Il thread può attendere uno o più di questi eventi chiamando KeWaitForSingleObject o KeWaitForMultipleObjects.