Unterstützung von PnP und Energieverwaltung in Funktionstreibern
Funktionstreiber steuern den Betrieb eines Geräts und greifen daher auf Gerätehardware zu. Diese Treiber müssen PnP- und Energieverwaltungsvorgänge unterstützen und beim Erstellen von Geräteobjekten in der Regel mehrere Ereignisrückruffunktionen registrieren.
In der Regel ruft die EvtDriverDeviceAdd-Ereignisrückruffunktion eines Funktionstreibers WdfDeviceInitSetPnpPowerEventCallbacks auf, um die folgenden Rückruffunktionen zu registrieren:
EvtDevicePrepareHardware, die die systemseitig zugewiesenen Ressourcen des Geräts an den Treiber übermittelt. Der Treiber kann Vorgänge ausführen, z. B. das Zuordnen des busrelativen Arbeitsspeichers des Geräts in den virtuellen Adressraum des Prozessors, die die Hardware für den Treiber zugänglich machen.
EvtDeviceD0Entry führt Vorgänge aus, z. B. das Laden der Firmware, die jedes Mal benötigt werden, wenn das Gerät des Treibers in den Arbeitszustand (D0) wechselt.
EvtDeviceD0Exit, das Vorgänge ausführt, die jedes Mal erforderlich sind, wenn das Gerät des Treibers seinen Arbeitszustand (D0) verlässt und in einen Energiesparzustand wechselt.
EvtDeviceReleaseHardware, die alle Systemressourcen freigibt, die EvtDevicePrepareHardware zugewiesen hat.
Wie alle vom Framework definierten Rückruffunktionen sind die Funktionen in der vorherigen Liste optional. Sie müssen sie nur bereitstellen, wenn Ihr Fahrer sie benötigt.
Funktionstreiber können WdfDeviceSetPnpCapabilities und WdfDeviceSetPowerCapabilities aufrufen, um die PnP- und Energieverwaltungsfunktionen eines Geräts an das Betriebssystem zu melden.
In der Regel verwenden Sie die stromseitig verwalteten E/A-Warteschlangen des Frameworks für die meisten E/A-Anforderungen. Wenn eine E/A-Warteschlange mit Strom verwaltet wird, sendet das Framework Anforderungen nur dann an den Treiber, wenn sich das Gerät im Betriebszustand (D0) befindet. Weitere Informationen zu stromverwalteten E/A-Warteschlangen finden Sie unter Energieverwaltung für E/A-Warteschlangen.
In der Regel ist der Funktionstreiber des Geräts der Besitzer der Energierichtlinie für den Treiberstapel. Der Besitzer der Energierichtlinie bestimmt den entsprechenden Gerätestromzustand für ein Gerät und sendet Anforderungen an den Treiberstapel des Geräts, wenn sich der Energiezustand des Geräts ändern soll. Bei frameworkbasierten Treibern übernimmt das Framework diese Verantwortung, sodass Sie keinen Code in Ihrem Treiber bereitstellen müssen, um Änderungen im Energiezustand eines Geräts anzufordern.
Der Besitzer der Energierichtlinie hat zwei zusätzliche Aufgaben: Er steuert die Fähigkeit eines Geräts, im Leerlauf in einen Zustand mit niedriger Leistung zu gelangen und das System in seinem Betriebszustand (S0) bleibt, und er steuert die Fähigkeit des Geräts, ein Aktivierungssignal zu generieren, wenn es ein externes Ereignis aus einem Zustand mit geringer Leistung erkennt. Wenn Ihr Gerät über Leerlauf- oder Aktivierungsfunktionen verfügt, kann Ihr Funktionstreiber zusätzliche Rückruffunktionen bereitstellen. Weitere Informationen zu den Verantwortlichkeiten des Besitzers von Energierichtlinien finden Sie unter Besitz von Power Policy.