Festlegen von Geräteobjektflags für die Energieverwaltung
In seiner AddDevice-Routine erstellt jeder Treiber ein Geräteobjekt (Filter device object (DO), functional device object (FDO) oder Physical Device Object (PDO)) und legt die DO_XXX-Flags im Geräteobjekt fest, um die Geräteattribute und die Treiberkonfiguration zu beschreiben. Die folgenden Geräteobjektflags beziehen sich auf die Energieverwaltung.
Flag | Beschreibung |
---|---|
DO_POWER_INRUSH | Gibt an, dass der vom Gerät gezeichnete Strom beim ersten Einschalten des Geräts steigt. Dieser Anstieg oder "Inrush" dauert eine kurze Zeit, danach fällt der vom Gerät gezogene Strom auf eine niedrigere Betriebsebene. |
DO_POWER_PAGABLE | Gibt an, dass der Treiber ausgelagert werden kann. Ab Windows 2000 müssen Treiber, die ausgelagert werden können, das flag DO_POWER_PAGABLE festlegen. Der Power Manager ruft solche Treiber unter IRQL = PASSIVE_LEVEL auf. Weitere Informationen zu ausgelagerten Treibern finden Sie unter Auslagerung von Treibern. |
Die Geräteobjektflags werden in der Regel vom Bustreiber festgelegt, wenn er die PDO für das Gerät erstellt. Einige Funktionstreiber müssen jedoch möglicherweise die Werte dieser Flags im Rahmen ihrer AddDevice-Routinen ändern. Ab Windows Vista erfordert das Betriebssystem nicht, dass für alle Geräteobjekte innerhalb eines Gerätestapels die gleichen energiebezogenen Flags festgelegt sind. In Windows Server 2003, Windows XP und Windows 2000 sollten jedoch alle Geräteobjekte in einem Gerätestapel die gleichen energiebezogenen Flags festgelegt haben.
Ab Windows 2000 dürfen Treiber von Geräten, die sich im Auslagerungspfad befinden, das flag DO_POWER_PAGABLE nicht festlegen. Ein Treiber befindet sich im "Pagingpfad", wenn er an E/A-Vorgängen für die Auslagerungsdatei teilnimmt. Treiber, die dieses Flag nicht festlegen, müssen unter IRQL = DISPATCH_LEVEL aufgerufen werden können. Weitere Informationen finden Sie unter Einschränkungen für Dispatchroutinen.
Im Allgemeinen sollten Treiber den Wert des Bustreibers für das flag DO_POWER_PAGABLE nicht ändern, und ein Treiber darf dieses Flag niemals festlegen, wenn es von einem Treiber auf niedrigerer Ebene gelöscht wurde. Bei der Behandlung von Übergängen mit PnP-Paginganforderungen (in der Regel als Reaktion auf eine IRP_MJ_PNP mit IRP_MN_DEVICE_USAGE_NOTIFICATION Anforderung) muss ein Speichertreiber seine Einstellung und das Löschen des Flags sorgfältig sequenzieren.
Treiber für Geräte, die beim Start einen Einschaltvorgang erfordern, müssen das flag DO_POWER_INRUSH im Geräteobjekt festlegen, bevor sie das flag DO_DEVICE_INITIALIZING löschen. Nur ein Treiber im Gerätestapel, in der Regel der Bustreiber (PDO), muss das DO_POWER_INRUSH-Flag für das Gerät festlegen. Das Flag benachrichtigt den Energie-Manager, dass diese Geräte nacheinander mit anderen geräten eingeschaltet werden müssen, um eine Überlastung des Netzteils zu vermeiden. Der Energie-Manager stellt sicher, dass zu einem bestimmten Zeitpunkt nur ein Netzeinstrom-IRP im System aktiv ist.
Ab Windows Vista können Treiber sowohl das DO_POWER_PAGABLE-Flag als auch das DO_POWER_INRUSH-Flag festlegen. In Windows Server 2003, Windows XP und Windows 2000 können Treiber nicht sowohl das flag DO_POWER_PAGABLE als auch das flag DO_POWER_INRUSH festlegen.