Freigeben über


IKsDataTypeHandler-Schnittstelle (ksproxy.h)

Die IKsDataTypeHandler-Schnittstelle stellt Methoden bereit, die optionale Vor- und Nachverarbeitung 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 innerhalb eines bestimmten Kernelstreamingdatenbereichs befindet.

Die IID für diese Schnittstelle ist IID_IKsDataTypeHandler.

Vererbung

Die IKsDataTypeHandler-Schnittstelle erbt von der IUnknown-Schnittstelle .

Methoden

Die IKsDataTypeHandler-Schnittstelle verfügt über 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 (E/A) erforderlich sind.
IKsDataTypeHandler::KsSetMediaType

Die KsSetMediaType-Methode legt den Medientyp für einen Datentyphandler fest.

Hinweise

Um den Proxydatentyp neutral zu halten, können optionale Datentyphandler geladen werden, um den Datenstrom zu massieren, wenn er an oder aus Kernelmodusfiltern übergeht. Sie sollten einen Datentyphandler als COM-Server implementieren, der zumindest die IKsDataTypeHandler-Schnittstelle unterstützt. Ihr Datentyphandler kann optional die IKsDataTypeCompletion-Schnittstelle unterstützen.

Ein Datentyphandler wird normalerweise 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 instance die IAMStreamConfig::SetFormat-Methode von DirectShow verwendet, verwendet die Anwendung möglicherweise einen Datentyphandler, um einen partiellen Medientypparameter abzuschließen, der an die -Methode gesendet wird.

Der Proxy verwendet die GUIDs des Medientyps als COM-Serverklassen, um zu bestimmen, welche Datentyphandler geladen werden sollen. 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 Datentyphandlers zu öffnen, gefolgt von dem Untertyp und dem Formatbezeichner, wenn das Öffnen des Datentyphandlers mit dem Hauptformattyp fehlschlägt. Wenn einer der Versuche erfolgreich ist, fragt der Proxy die IKsDataTypeHandler-Schnittstelle ab und ruft die KsSetMediaType-Methode der Schnittstelle auf, um den aktuellen Medientyp festzulegen, 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 den oder aus dem Kernelmodus oder zum Ausführen anderer erforderlicher Aufgaben keiner erforderlich ist.

Bei einer Datentyphandlererstellungsanforderung über CoCreateInstance wird dem Server immer ein äußeres IUnknown angezeigt, mit dem das COM-Objekt erstellt werden soll. Dieser IUnknown ist eine Schnittstelle für das Anheftobjekt, 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 zum Zeitpunkt des Ladens des Handlers möglicherweise nicht erstellt wurde. Durch das Abrufen von Schnittstellen sollte kein Verweis auf das äußere Objekt verbleiben, da dies zu einer kreisförmigen Verweisanzahl führt. Die Verwendung der Schnittstellen ohne Verweisanzahl ist akzeptabel, da das äußere Objekt den Handler besitzt und per Definition zerstört wird, wenn die Verweisanzahl des äußeren Objekts 0 erreicht.

Weitere Informationen zu IAMStreamConfig::SetFormat und CoCreateInstance finden Sie in der Microsoft Windows SDK-Dokumentation.

Anforderungen

Anforderung Wert
Zielplattform Windows
Kopfzeile ksproxy.h

Weitere Informationen

IKsDataTypeCompletion