Share via


Verwenden Self-Managed E/A

Die meisten frameworkbasierten Treiber nutzen die PnP- und Energieverwaltungsfunktionen des Frameworks für die von ihnen unterstützten Geräte. Anders ausgedrückt: Die meisten frameworkbasierten Treiber ermöglichen es dem Framework, die PnP- und Energiezustände eines Geräts zu verwalten, indem es die folgenden Aktionen ausführt:

  • Bereitstellen der Rückruffunktionen EvtDeviceD0Entry und EvtDeviceD0Exit .

  • Bereitstellen der Rückruffunktionen EvtDevicePrepareHardware und EvtDeviceReleaseHardware .

  • Verwenden von stromverwalteten Warteschlangen für E/A-Anforderungen, die erfordern, dass sich das Gerät im Arbeitszustand befindet, und Verwenden von Warteschlangen, die nicht für alle anderen Anforderungen mit Strom verwaltet werden.

Einige frameworkbasierte Treiber erfordern jedoch eine bessere Kenntnis des Zustands ihrer Geräte, einschließlich Treibern in den folgenden Situationen:

  • Die Vorgänge, die ein Treiber ausführt, werden nicht durch eine Reihe von E/A-Anforderungen bestimmt, die der Treiber von Framework-E/A-Warteschlangen empfängt.

  • Ein Treiber kommuniziert mit älteren Nicht-Framework-Treibern und befasst sich direkt mit WDM-Schnittstellen.

  • Die E/A-Anforderungen, die ein Treiber empfängt, können nicht in zwei Gruppen unterteilt werden: diejenigen, die erfordern, dass sich das Gerät im Betriebszustand befindet, und diejenigen, die nicht.

Die meisten Treiber befinden sich nicht in einer der vorherigen Situationen, aber wenn Ihr Treiber dies ist, muss er möglicherweise eine direktere Kontrolle über die PnP- und Energieverwaltungsvorgänge des Geräts haben. Solche Treiber können selbstverwaltete E/A-Vorgänge verwenden. Die Verwendung von selbstverwalteter E/A bedeutet, dass der Treiber (über eine Reihe von Rückruffunktionen) benachrichtigt wird, wenn seine Geräte angeschlossen oder nicht angeschlossen sind und wenn das Gerät vorübergehend angehalten wird.

Beachten Sie, dass ein Treiber selbstverwaltete E/A-Vorgänge verwenden und weiterhin die E/A-Warteschlangen des Frameworks verwenden kann, entweder als vom Strom verwaltete Warteschlangen oder nicht. Beispielsweise kann ein Treiber die E/A-Warteschlangen des Frameworks verwenden, nicht mit energieverwalteten, mit einer Reihe von selbstverwalteten E/A-Rückruffunktionen.

Um selbstverwaltete E/A zu verwenden, registriert der Treiber einen zusätzlichen Satz von Ereignisrückruffunktionen, wenn er WdfDeviceInitSetPnpPowerEventCallbacks aufruft. Diese Ereignisrückruffunktionen sind:

Wenn Ihr Gerät zum ersten Mal in den Arbeitszustand (D0) wechselt, ruft das Framework die EvtDeviceSelfManagedIoInit-Rückruffunktion Ihres Treibers auf. Dies geschieht jedes Mal, wenn ein Benutzer Ihr Gerät an das System ansteckt und jedes Mal, wenn das System neu gestartet wird.

Es gibt drei Umstände, unter denen ein Treiber die E/A-Vorgänge eines Geräts beenden muss: Das Gerät wechselt in einen Energiesparzustand, es wird entfernt oder wurde bereits unerwartet entfernt. In der folgenden Liste werden diese Umstände im Detail untersucht:

Weitere Informationen zur Reihenfolge, in der das Framework die Ereignisrückruffunktionen eines Treibers aufruft, finden Sie unter PnP- und Energieverwaltungsszenarien.

Obwohl es selten erforderlich ist, ermöglicht das Framework Treibern, noch mehr Kontrolle über die PnP- und Energiezustände eines Geräts zu haben, indem sie auf die Zustandscomputer im Framework zugreifen.