IKsDataTypeHandler-Schnittstelle (ksproxy.h)
Die IKsDataTypeHandler Schnittstelle stellt Methoden bereit, die optionale Vorverarbeitung und Postverarbeitung von Medienbeispielen ausführen. Diese Schnittstelle kann auch die Größe zusätzlicher Datenstromheaderinformationen zurückgeben, die für die Verarbeitung erforderlich sind, und kann bestimmen, ob sich ein bestimmter Medientyp in einem bestimmten Satz von Kernelstreamingdatenbereichen befindet.
Die IID für diese Schnittstelle ist IID_IKsDataTypeHandler.
Erbschaft
Die IKsDataTypeHandler Schnittstelle erbt von der IUnknown Schnittstelle.
Methodik
Die IKsDataTypeHandler Schnittstelle hat diese Methoden.
IKsDataTypeHandler::KsCompleteIoOperation Die KsCompleteIoOperation-Methode bereinigt den erweiterten Header und schließt den Eingabe- und Ausgabevorgang (E/A) ab. |
IKsDataTypeHandler::KsIsMediaTypeInRanges Die KsIsMediaTypeInRanges-Methode überprüft, ob sich ein Medientyp innerhalb der bereitgestellten Datenbereiche befindet. |
IKsDataTypeHandler::KsPrepareIoOperation Die KsPrepareIoOperation-Methode initialisiert den erweiterten Header und bereitet das Medienbeispiel für einen E/A-Vorgang vor. |
IKsDataTypeHandler::KsQueryExtendedSize Die KsQueryExtendedSize-Methode ruft erweiterte Headerinformationen ab, die für Eingabe- und Ausgabevorgänge erforderlich sind. |
IKsDataTypeHandler::KsSetMediaType Die KsSetMediaType-Methode legt den Medientyp für einen Datentyphandler fest. |
Bemerkungen
Um den Proxydatentyp neutral zu halten, können optionale Datentyphandler geladen werden, um den Datenstrom zu massieren, wenn er an oder von Kernelmodusfiltern übergeben wird. Sie sollten einen Datentyphandler als COM-Server implementieren, der mindestens die IKsDataTypeHandler Schnittstelle unterstützt. Der Datentyphandler kann optional die IKsDataTypeCompletion Schnittstelle unterstützen.
Ein Datentyphandler wird in der Regel während des Pinverbindungsprozesses geladen und entladen, wenn die Verbindung unterbrochen wird. Ein Datentyphandler wird jedoch manchmal für andere Zwecke kurz geladen. Wenn eine Anwendung beispielsweise die IAMStreamConfig::SetFormat-Methode von DirectShow verwendet, verwendet die Anwendung möglicherweise einen Datentyphandler, um einen an die Methode gesendeten Partiellen Medientypparameter abzuschließen.
Der Proxy verwendet die GUIDs aus dem Medientyp als COM-Serverklassen, um zu bestimmen, was zu ladende Datentyphandler ist. Solange der Datentyphandler als COM-Server unter einer erwarteten GUID-Klasse registriert ist, nach der der Proxy sucht, wird der Datentyphandler geladen. Der Hauptformattyp wird zuerst verwendet, um zu versuchen, einen COM-Server des Datentyps zu öffnen, gefolgt vom Untertyp- und Formatbezeichner, wenn beim Öffnen des Datentyphandlers ein Fehler beim Verwenden des Hauptformattyps auftritt. Wenn eines der Versuche erfolgreich ist, fragt der Proxy den IKsDataTypeHandler Schnittstelle ab und ruft die KsSetMediaType--Methode der Schnittstelle auf, um den aktuellen Medientyp einzurichten, der mit dem Handler verwendet wird, falls der Handler viele Typen unterstützt. Wenn kein Handler gefunden wird, geht der Proxy davon aus, dass beim Marshallen des Datenstroms in oder aus dem Kernelmodus keines erforderlich ist, oder um andere erforderliche Aufgaben auszuführen.
Bei einem Datentyphandler wird eine Anforderung über CoCreateInstanceerstellt, der Server wird immer eine äußere IUnknown- angezeigt, mit der das COM-Objekt erstellt werden soll. Diese IUnknown ist eine Schnittstelle für das Pinobjekt, das diesen Handler lädt. Der IUnknown Schnittstellenzeiger kann verwendet werden, um Informationen oder Schnittstellen vom Pin abzufragen, z. B. die IKsPin oder IKsControl Schnittstellen, obwohl der Kernelmodus-Pin möglicherweise nicht zum Zeitpunkt des Ladens des Handlers erstellt wurde. Es sollte kein Verweis auf das äußere Objekt verbleiben, indem schnittstellen erfasst werden, da dadurch eine Kreisbezugsanzahl entsteht. Die Verwendung der Schnittstellen ohne Referenzanzahl ist akzeptabel, da das äußere Objekt den Handler besitzt und per Definition zerstört wird, wenn die Referenzanzahl des äußeren Objekts null erreicht.
Weitere Informationen zu IAMStreamConfig::SetFormat und CoCreateInstancefinden Sie in der Microsoft Windows SDK-Dokumentation.
Anforderungen
Anforderung | Wert |
---|---|
Zielplattform- | Fenster |
Header- | ksproxy.h |