Einführung in die Treiberbenachrichtigung
Ab Windows Server 2008 kann das Betriebssystem einen Gerätetreiber benachrichtigen, wenn einer Hardwarepartition dynamisch ein Prozessor- oder Speichermodul hinzugefügt wird. Es gibt mehrere verschiedene Benachrichtigungen, die in verschiedenen Phasen des Prozesses eines Hot Add-Vorgangs auftreten. Jede dieser Benachrichtigungen verwendet eine andere Benachrichtigungsmethode, um den Gerätetreiber über das Ereignis zu benachrichtigen. Sie können eine oder mehrere dieser Benachrichtigungsmethoden verwenden, damit das Betriebssystem Ihren Treiber benachrichtigt, wenn ein heißer Add-Vorgang auftritt. Ihr Treiber kann dann bei Bedarf reagieren, um einen sicheren und optimalen Betrieb zu gewährleisten.
In der folgenden Tabelle sind die verschiedenen Benachrichtigungsmethoden aufgeführt, und es wird angegeben, ob sie für Prozessoren, Arbeitsspeicher oder sowohl Prozessoren als auch Arbeitsspeicher gelten.
Benachrichtigungsmethode | Für Prozessoren | Für Arbeitsspeicher |
---|---|---|
Synchrone Treiberbenachrichtigung |
X |
|
Asynchrone Treiberbenachrichtigung |
X |
X |
Speicherbenachrichtigungsereignis |
X |
|
Ressourcenausgleich |
X |
Synchrone Treiberbenachrichtigung
Mit synchroner Treiberbenachrichtigung benachrichtigt das Betriebssystem Gerätetreiber synchron, dass der Hardwarepartition ein neuer Prozessor hinzugefügt wurde. Dies ist die erste Benachrichtigung, die ein Gerätetreiber über eine Änderung der Anzahl der Prozessoren erhält.
Wenn der Hardwarepartition ein neuer Prozessor hinzugefügt wird, sendet das Betriebssystem diese Benachrichtigung an gerätetreiber, nachdem das Betriebssystem den neuen Prozessor gestartet hat, aber bevor das Betriebssystem mit der Planung von Threads auf dem Prozessor beginnt. Wenn ein Gerätetreiber diese Benachrichtigung empfängt, kann er beliebige Datenstrukturen pro Prozessor zuordnen und dem neuen Prozessor alle weiteren Ressourcen pro Prozessor zuweisen. Dadurch wird der Gerätetreiber auf die Ausführung seiner Dispatchroutinen, unterbrechungsbereiten Dienstroutinen (ISRs), verzögerte Prozeduraufrufe (DPCs) und alle anderen Treiberthreads auf dem neuen Prozessor vorbereitet.
Ein Gerätetreiber muss sich beim Betriebssystem registrieren, um synchrone Treiberbenachrichtigungen zu erhalten. Weitere Informationen finden Sie unter Registrieren für synchrone Treiberbenachrichtigungen.
Diese Benachrichtigungsmethode gilt nur für Prozessoren. Es gibt keinen synchronen Benachrichtigungsmechanismus für den Arbeitsspeicher.
Asynchrone Treiberbenachrichtigung
Mit der asynchronen Treiberbenachrichtigung benachrichtigt das Betriebssystem Gerätetreiber asynchron, dass der Hardwarepartition ein neuer Prozessor oder ein neues Speichermodul hinzugefügt wurde. Ab Windows Server 2008 gelten Prozessoren und Speichermodule als Plug & Play (PnP)-Geräte. Daher verwendet das Betriebssystem den PnP-Benachrichtigungsmechanismus für asynchrone Treiberbenachrichtigungen.
Wenn der Hardwarepartition ein neuer Prozessor oder ein neues Speichermodul hinzugefügt wird, sendet das Betriebssystem diese Benachrichtigung an gerätetreiber, nachdem das Betriebssystem den neuen Prozessor oder das neue Speichergerät gestartet hat. Im Fall eines neuen Prozessors sendet das Betriebssystem diese Benachrichtigung erst an Gerätetreiber, nachdem die Planung von Threads für den neuen Prozessor gestartet wurde.
Hinweis
Alle PnP-Benachrichtigungen sind asynchron. Daher werden diese Benachrichtigungen möglicherweise erst von einem Gerätetreiber empfangen, wenn das Betriebssystem den Prozessor oder das Speichermodul gestartet hat.
Wenn ein Gerätetreiber diese Benachrichtigung empfängt, kann er einige oder alle der folgenden Elemente entsprechend anpassen:
Speicherpuffer und andere Ressourcenzuordnungen
Zuweisung von Ressourcen zu bestimmten Prozessoren
Planung von DPCs und anderen Threads auf bestimmten Prozessoren
Lastenausgleichsalgorithmen
Wichtig
Wenn Sie einer Hardwarepartition einen neuen Prozessor hinzufügen, sendet das Betriebssystem die PnP-Benachrichtigung erst, nachdem der neue Prozessor gestartet wurde und das Betriebssystem damit begonnen hat, Threads darauf zu planen. Wenn ein Gerätetreiber bestimmte Aufgaben ausführen muss, bevor das Betriebssystem mit der Planung von Threads für den neuen Prozessor beginnt, z. B. das Zuweisen einer Datenstruktur pro Prozessor, müssen Sie die synchrone Benachrichtigungsmethode für den Treiber verwenden.
Ein Gerätetreiber muss sich selbst beim Betriebssystem registrieren, um asynchrone Treiberbenachrichtigungen zu erhalten. Weitere Informationen finden Sie unter Registrieren für asynchrone Treiberbenachrichtigungen.
Speicherbenachrichtigungsereignis
Mit der Speicherbenachrichtigungsereignismethode können Sie ihren Gerätetreiber dazu auffordern, einen Thread zu planen, der darauf wartet, dass das Betriebssystem das Ereignisobjekt \KernelObjects\HighMemoryCondition festgelegt hat. Das Betriebssystem legt dieses Ereignisobjekt fest, wenn die Menge des freien physischen Arbeitsspeichers einen bestimmten Wert überschreitet. Dieses Ereignis benachrichtigt alle Threads, die auf das Ereignisobjekt warten, dass im System derzeit eine beträchtliche Menge physischer Arbeitsspeicher verfügbar ist. Dieses Ereignis kann ein Hinweis darauf sein, dass Sie dem System dynamisch ein neues Speichermodul hinzugefügt haben. Wenn das Betriebssystem dieses Ereignisobjekt festlegt, kann Ihr Gerätetreiber auf das Ereignis reagieren, indem zusätzliche Speicherpuffer zugewiesen werden.
Weitere Informationen zum Ereignisobjekt \KernelObjects\HighMemoryCondition finden Sie unter Standardereignisobjekte.
Wichtig
Wenn das Betriebssystem das Ereignisobjekt \KernelObjects\HighMemoryCondition festlegt, liefert das Ereignis nur einen Hinweis darauf, dass Sie der Hardwarepartition möglicherweise dynamisch ein neues Speichermodul hinzugefügt haben. Es gibt andere Situationen, die dazu führen können, dass das Betriebssystem dieses Ereignisobjekt festgelegt. Daher wird ab Windows Server 2008 davon abgeraten, dass Gerätetreiber diese Benachrichtigungsmethode verwenden. Stattdessen sollten Gerätetreiber die asynchrone Treiberbenachrichtigungsmethode verwenden.
Diese Methode gilt nur für den Arbeitsspeicher. Es gibt keinen entsprechenden Benachrichtigungsmechanismus für Prozessoren.
Ressourcenausgleich
Wenn Sie einer Hardwarepartition ab Windows Server 2008 einen neuen Prozessor hinzufügen, initiiert das Betriebssystem einen systemweiten Ressourcenausgleich. Ob ein Gerät an einem solchen Ressourcenausgleich teilnimmt, wird durch die Einstellung der DEVPKEY_Device_DHP_Rebalance_Policy Geräteeigenschaft für das Gerät bestimmt. Das Standardverhalten für Geräte in der Geräteeinrichtungsklasse Netzwerkadapter (Klasse = Net) besteht darin, dass sie nicht an der Neugewichtung von Ressourcen teilnehmen, wenn dem System dynamisch ein neuer Prozessor hinzugefügt wird. Das Standardverhalten für Geräte in allen anderen Gerätesetupklassen besteht darin, dass sie an der Neugewichtung von Ressourcen teilnehmen, wenn dem System dynamisch ein neuer Prozessor hinzugefügt wird.
Wenn es sich bei einem Gerät um ein PnP-Gerät (Plug & Play) handelt und an einem solchen Ressourcenausgleich beteiligt ist, sendet das Betriebssystem während des Ressourcenausgleichsvorgangs IRP_MN_QUERY_STOP_DEVICE, IRP_MN_STOP_DEVICE und IRP_MN_START_DEVICE PnP-IRPs an den Treiber für das Gerät. Diese PnP-Anforderungen benachrichtigen den Treiber, dass eine Hardwareänderung in der Hardwarepartition aufgetreten ist. Ein Gerätetreiber sollte die Neugewichtung von Ressourcen unterstützen, indem er die IRP_MN_QUERY_STOP_DEVICE und IRP_MN_STOP_DEVICE PnP-Anforderungen ordnungsgemäß verarbeitet. Ein Gerätetreiber sollte niemals eine IRP_MN_QUERY_STOP_DEVICE PnP-Anforderung ablehnen.
Diese PnP-Anforderungen ermöglichen es einem Gerätetreiber, den neuen Satz aktiver Prozessoren in der Hardwarepartition vollständig zu verwenden, nachdem Sie einen neuen Prozessor hinzugefügt haben. Insbesondere verwendet ein Gerätetreiber, der das Erneute Ausgleichen von Ressourcen unterstützt, die PnP-Anforderungen, die er während des Ressourcenausgleichs empfängt, um seine Interruptdienstroutinen (ISRs) zu trennen und sie wieder mit dem aktualisierten Prozessoraffinitätswert zu verbinden. Dadurch kann der Gerätetreiber alle derzeit aktiven Prozessoren in der Hardwarepartition verwenden, einschließlich aller neuen Prozessoren, für die Verarbeitung von Interruptanforderungen.
Gerätetreiber sollten alle E/A-Anforderungen während des Ressourcenausgleichs in die Warteschlange stellen.
Weitere Informationen zum Neuausgleich von Ressourcen finden Sie unter Beenden eines Geräts zum Ausgleich von Ressourcen.
Diese Methode gilt nur für Prozessoren. Das Betriebssystem initiiert keinen systemweiten Ressourcenausgleich, wenn Sie einer Hardwarepartition ein neues Speichermodul hinzufügen.