Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Das System stellt mehrere Standardereignisobjekte bereit. Treiber können diese Ereignisobjekte verwenden, um vom System benachrichtigt zu werden, wenn bestimmte Bedingungen auftreten. Die folgende Liste enthält die Standardereignisobjekte:
\KernelObjects\HighMemoryCondition
Dieses Ereignis wird festgelegt, wenn die Menge des freien physischen Arbeitsspeichers einen vom System definierten Betrag überschreitet. Treiber können warten, bis dieses Ereignis als Signal verwendet wird, um aggressiv Arbeitsspeicher zuzuweisen.
\KernelObjects\LowMemoryCondition
Dieses Ereignis wird festgelegt, wenn die Menge des freien physischen Speichers unter einen vom System definierten Betrag fällt. Treiber, die große Speichermengen zugewiesen haben, können warten, bis dieses Ereignis als Signal festgelegt wird, um nicht genutzten Arbeitsspeicher freizugeben.
Für Microsoft Windows Server 2003 und höhere Versionen von Windows können Treiber auch die folgenden zusätzlichen Standardereignisobjekte verwenden:
\KernelObjects\HighPagedPoolCondition
Dieses Ereignis wird festgelegt, wenn die Menge des freiseitigen Pools einen vom System definierten Betrag überschreitet. Treiber können darauf warten, dass dieses Ereignis als Signal festgesetzt wird, um Arbeitsspeicher aus dem ausgelagerten Poolspeicher aggressiv zuzuweisen.
\KernelObjects\LowPagedPoolCondition
Dieses Ereignis wird festgelegt, wenn die Menge des freiseitigen Pools unter einen vom System definierten Betrag fällt. Treiber, die große Speichermengen zugewiesen haben, können darauf warten, dass dieses Ereignis als Signal gesetzt wird, um nicht genutzten Speicher aus dem ausgelagerten Pool freizugeben.
\KernelObjects\HighNonPagedPoolCondition
Dieses Ereignis wird festgelegt, wenn die Menge des freien nichtausgelagerten Pools einen vom System definierten Wert überschreitet. Treiber können darauf warten, dass dieses Ereignis als Signal gesetzt wird, um Arbeitsspeicher aus dem nicht ausgelagerten Pool aggressiv zuzuweisen.
\KernelObjects\LowNonPagedPoolCondition
Dieses Ereignis wird festgelegt, wenn die Menge des freien nicht ausgelagerten Pools unter einen vom System definierten Betrag fällt. Treiber, die große Speichermengen zugewiesen haben, können warten, bis dieses Ereignis als Signal festgelegt wird, um ungenutzten Speicher aus dem nicht-ausgelagerten Pool freizugeben.
Für Windows Vista und höhere Versionen von Windows können Treiber auch die folgenden zusätzlichen Standardereignisobjekte verwenden:
\KernelObjects\LowCommitCondition
Dieses Ereignis wird festgelegt, wenn die Commit-Belastung des Betriebssystems niedrig ist, relativ zum aktuellen Commit-Limit. Mit anderen Worten: Die Speicherauslastung ist gering, und viel Speicherplatz steht im physischen Speicher oder in Auslagerungsdateien zur Verfügung.
\KernelObjects\HighCommitCondition
Dieses Ereignis wird festgelegt, wenn die Commit-Belastung des Betriebssystems relativ zum aktuellen Commit-Limit hoch ist. Mit anderen Worten, die Speicherauslastung ist hoch, und es steht sehr wenig Speicherplatz im physischen Speicher oder in Auslagerungsdateien zur Verfügung, aber das Betriebssystem kann die Größe seiner Auslagerungsdateien möglicherweise erhöhen.
\KernelObjects\MaximumCommitCondition
Dieses Ereignis wird festgelegt, wenn die Commit-Belastung des Betriebssystems nahe dem maximalen Commit-Limit liegt. Mit anderen Worten: Die Speicherauslastung ist sehr hoch, sehr wenig Speicherplatz ist im physischen Speicher oder in Auslagerungsdateien verfügbar, und das Betriebssystem kann die Größe seiner Auslagerungsdateien nicht erhöhen. Ein Systemadministrator kann die Größe oder Anzahl der Auslagerungsdateien jederzeit erhöhen, ohne den Computer neu zu starten, vorausgesetzt, dass ausreichende Speicherressourcen vorhanden sind.
Jedes dieser Ereignisse ist Benachrichtigungsereignisse. Sie bleiben so lange festgelegt, wie die auslösende Bedingung erfüllt bleibt.
Verwenden Sie die IoCreateNotificationEvent-Routine , um ein Handle für eines dieser Ereignisse zu öffnen. Ein Treiber, der auf eines dieser Ereignisse wartet, sollte einen dedizierten Thread zum Warten erstellen. Der Thread kann auf ein oder mehrere dieser Ereignisse warten, indem entweder KeWaitForSingleObject oder KeWaitForMultipleObjects aufgerufen wird.