Streaming-Minidriver
Hinweis In diesem Abschnitt wird der veralteteStream.sys-Klassentreiber erläutert. Mit der Veröffentlichung von Microsoft Windows XP unterstützt Microsoft Stream.sys nur für vorhandene Treiber. Ab diesem Release empfiehlt Microsoft, dass Anbieter die Entwicklung neuer Video- oder Audio-/Video-Multimediatreiber mithilfe des AVStream-Klassentreibermodells in Erwägung ziehen. Weitere Informationen finden Sie in der Übersicht über AVStream. Wenn Sie einen reinen Audiotreiber entwickeln, sollten Sie einen Audio-Miniporttreiber unter dem von Microsoft bereitgestelltenPortcls.sys-Klassentreiber schreiben. Ausführliche Informationen finden Sie unter Audio-Miniporttreiber.
Anbieter können nur Video- oder Audio-/Videogeräte unterstützen, indem sie einen Minidriver bereitstellen, der unter dem von Microsoft bereitgestelltenStream.sys-Klassentreiber ausgeführt wird. In dieser Dokumentation werden vom Anbieter bereitgestellte Minidriver unter Stream.sys als Streaming-Minidriver bezeichnet.
Für instance können Videoaufnahmegeräte und DVD-Player mit Streaming-Minidrivern unterstützt werden. Technologiespezifische Informationen finden Sie unter Videoaufzeichnungsgeräte und DVD-Decoder-Minidriver.
Streaming-Minidriver unterstützen Kernelstreamingsemantik. Um dieses Dokument zu verwenden, sollten Treiberentwickler mit grundlegenden Kernelstreamingkonzepten vertraut sein, wie unter Kernelstreaming erläutert.
Der Streamklassentreiber wurde entwickelt, um das Schreiben von Hardwaretreibern für Streaminggeräte zu vereinfachen, indem viele Aspekte der Interaktion mit dem Betriebssystem behandelt werden.
Mit dem Minidriver kann der Streamklassentreiber die Synchronisierung in seinem Namen verarbeiten. Beispielsweise kann der Streamklassentreiber optional E/A-Anforderungen für den Minidriver serialisieren. Wenn der Klassentreiber die Synchronisierung verarbeiten kann, ist der Minidriver-Multiprozessor sicher, aber nicht wiederzuverarbeiten. Dies eignet sich für Low-End- bis Medium-End-Hardware.
Der Klassentreiber synchronisiert Dateivorgänge automatisch. Beispielsweise werden das Öffnen eines Streams und eines Geräts ordnungsgemäß serialisiert, ohne dass der Minidriver mithilfe von Mutexes, Semaphoren oder Ereignissen verwendet wird.
Der Klassentreiber abstrahiert die Implementierung der Kernelstreamingsemantik aus dem Minidriver.
Der Klassentreiber übernimmt die gesamte Interaktion mit dem PnP-Manager. Beispiel:
- Der Klassentreiber erstellt das funktionale Geräteobjekt im Auftrag des Minitreibers.
- Der Klassentreiber verwaltet die Ressourcenkonfiguration (z. B. Übersetzen von Portadressen, Übersetzen und Zuordnen von Speicherbereichen und Verbindungsunterbrechungen).
- Der Klassentreiber verarbeitet PnP-IRPs, z. B. IRP_MN_START_DEVICE oder IRP_MN_STOP_DEVICE.
Die gesamte Pufferverwaltung auf niedriger Ebene wird vom Klassentreiber verwaltet:
- Zuweisung des DMA-Adapterobjekts, falls erforderlich.
- Zuordnen von Puffern und Erstellen von Punkt-/Sammlungslisten für DMA.
- Richtiges Sperren und Leeren von Puffern für DMA und PIO.
Die gesamte IOCTL-Parameterüberprüfung wird vom Klassentreiber ausgeführt.
Alle Anforderungen werden vom Klassentreiber mit einem Watchdog-Timer zeitgeber ausgeführt.
Der Minidriver erstellt kein Geräteobjekt, sondern teilt das Geräteobjekt des Klassentreibers nach Bedarf. Dies spart Systemressourcen.
Pro Adapter wird nur ein Geräteobjekt erstellt. Mehrere Untergeräte (so genannte Streams), die vom Adapter unterstützt werden, werden durch Kernelstreaming-Pins dargestellt.