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.
[Gilt nur für KMDF]
In diesem Abschnitt wird beschrieben, wie ein KMDF-Treiber für ein Bus-master DMA-Gerät eine E/A-Anforderung verarbeitet. Wenn Sie einen KMDF-Treiber schreiben, der DMA im Systemmodus implementiert, finden Sie weitere Informationen unter Unterstützen System-Mode DMA.
Die Verarbeitung von E/A-Anforderungen in einem KMDF-Treiber für ein Bus-master DMA-Gerät erfordert Code in mehreren Ereignisrückruffunktionen des Treibers, wie in der folgenden Abbildung dargestellt:
Wie oben gezeigt, erfolgt die DMA-bezogene Verarbeitung in vier Phasen:
Die Rückruffunktion EvtDriverDeviceAdd oder EvtDevicePrepareHardware ihres Treibers muss DMA-Transaktionen für das Gerät aktivieren, damit Ihr Treiber die DMA-Funktionen des Frameworks verwenden kann. Die gleiche Rückruffunktion muss auch einen gemeinsamen Puffer erstellen , wenn Ihr Gerät und Ihr Treiber Zugriff auf einen gemeinsam genutzten Speicherpuffer benötigen.
Wenn Ihr Treiber eine E/A-Anforderung empfängt, die das Gerät zum Ausführen eines DMA-Vorgangs erfordert, muss einer der Anforderungshandler des Treiberseine neue DMA-Transaktion erstellen und initialisieren. (Wenn Ihr Treiber DMA-Transaktionsobjekte wiederverwendet, kann die EvtDriverDeviceAdd-Rückruffunktion Des Treibers die Transaktionsobjekte erstellen.) Anschließend muss der Anforderungshandler die DMA-Transaktion initiieren , damit das Framework ggf. mit dem Aufteilen der Transaktion in kleinere DMA-Übertragungen beginnen und die EvtProgramDma-Rückruffunktion des Treibers aufrufen kann.
Die EvtProgramDma-Rückruffunktion Ihres Treibers programmiert die DMA-Hardware für eine einzelne DMA-Übertragung und ermöglicht Geräteunterbrechungen.
Wenn das Gerät unterbrochen wird, ruft das Framework die EvtInterruptIsr-Rückruffunktion Ihres Treibers auf, die flüchtige Geräteinformationen speichert und die Ausführung der EvtInterruptDpc-Rückruffunktion des Treibers plant.
Die EvtInterruptDpc-Rückruffunktion Ihres Treibers schließt jede DMA-Übertragung ab , nachdem die Hardware die Verarbeitung abgeschlossen hat. Nachdem die endgültige Übertragung einer DMA-Transaktion abgeschlossen ist, schließt die EvtInterruptDpc-Rückruffunktiondie DMA-Transaktion ab.
Ihr Treiber kann seine DMA-Transaktionsobjekte wiederverwenden , um sicherzustellen, dass sie bei geringen Arbeitsspeicherressourcen ausgeführt werden können.
Ihr Treiber kann eine Reihe von Rückruffunktionen bereitstellen, die DMA-spezifische Energieverwaltungsvorgänge verarbeiten.
Einige Treiber verwenden allgemeine Puffer , auf die sowohl ein Gerät als auch der Treiber zugreifen können.