Partager via


Interface IKsDataTypeHandler (ksproxy.h)

L’interface IKsDataTypeHandler fournit des méthodes qui effectuent un prétraitement et un posttraitement facultatifs d’exemples multimédias. Cette interface peut également retourner la taille des informations d’en-tête de flux supplémentaires requises pour le traitement et peut déterminer si un type de média particulier se trouve dans un ensemble donné de plages de données de streaming de noyau.

L’IID de cette interface est IID_IKsDataTypeHandler.

Héritage

L’interface IKsDataTypeHandler hérite de l’interface IUnknown.

Méthodes

L’interface IKsDataTypeHandler possède ces méthodes.

 
IKsDataTypeHandler ::KsCompleteIoOperation

La méthode KsCompleteIoOperation nettoie l’en-tête étendu et termine l’opération d’entrée et de sortie (E/S).
IKsDataTypeHandler ::KsIsMediaTypeInRanges

La méthode KsIsMediaTypeInRanges valide qu’un type de média se trouve dans les plages de données fournies.
IKsDataTypeHandler ::KsPrepareIoOperation

La méthode KsPrepareIoOperation initialise l’en-tête étendu et prépare l’exemple multimédia pour une opération d’E/S.
IKsDataTypeHandler ::KsQueryExtendedSize

La méthode KsQueryExtendedSize récupère les informations d’en-tête étendues requises pour les opérations d’entrée et de sortie (E/S).
IKsDataTypeHandler ::KsSetMediaType

La méthode KsSetMediaType définit le type de média pour un gestionnaire de type de données.

Remarques

Pour que le type de données proxy reste neutre, des gestionnaires de types de données facultatifs peuvent être chargés pour masser le flux de données à mesure qu’il passe vers ou à partir des filtres en mode noyau. Vous devez implémenter un gestionnaire de types de données en tant que serveur COM qui, au moins, prend en charge l’interface IKsDataTypeHandler . Votre gestionnaire de types de données peut éventuellement prendre en charge l’interface IKsDataTypeCompletion .

Un gestionnaire de types de données est généralement chargé pendant le processus de connexion de broche et déchargé lorsque la connexion est interrompue. Toutefois, un gestionnaire de types de données est parfois chargé brièvement à d’autres fins. Par instance, si une application utilise la méthode IAMStreamConfig ::SetFormat de DirectShow, l’application utilise peut-être un gestionnaire de type de données pour terminer un paramètre de type multimédia partiel envoyé à la méthode.

Le proxy utilise les GUID du type multimédia en tant que classes de serveur COM pour déterminer si un gestionnaire de type de données doit être chargé. Tant que le gestionnaire de types de données est inscrit en tant que serveur COM sous une classe GUID attendue que le proxy recherche, le gestionnaire de types de données est chargé. Le type de format principal est d’abord utilisé pour tenter d’ouvrir un serveur COM de gestionnaire de types de données, suivi du sous-type et du spécificateur de format si l’ouverture du gestionnaire de type de données échoue à l’aide du type de format principal. Si l’une des tentatives réussit, le proxy interroge l’interface IKsDataTypeHandler et appelle la méthode KsSetMediaType de l’interface pour établir le type de média actuel utilisé avec le gestionnaire, au cas où le gestionnaire prend en charge de nombreux types. Si aucun gestionnaire n’est trouvé, le proxy suppose qu’aucun n’est nécessaire lors du marshaling du flux vers ou depuis le mode noyau, ou pour effectuer d’autres tâches nécessaires.

Sur une demande de création de type de type de données via CoCreateInstance, le serveur reçoit toujours un IUnknown externe avec lequel créer l’objet COM. Cet IUnknown est une interface sur l’objet pin qui charge ce gestionnaire. Le pointeur d’interface IUnknown peut être utilisé pour interroger des informations ou des interfaces à partir de la broche, telles que les interfaces IKsPin ou IKsControl , bien que la broche en mode noyau n’ait peut-être pas été créée au moment du chargement du gestionnaire. Aucune référence ne doit être laissée sur l’objet externe via l’acquisition d’interfaces, car cela entraîne un nombre de références circulaire. L’utilisation des interfaces sans nombre de références est acceptable, car l’objet externe est propriétaire du gestionnaire et, par définition, est détruit lorsque le nombre de références de l’objet externe atteint zéro.

Pour plus d’informations sur IAMStreamConfig ::SetFormat et CoCreateInstance, consultez la documentation Microsoft Windows SDK.

Configuration requise

Condition requise Valeur
Plateforme cible Windows
En-tête ksproxy.h

Voir aussi

IKsDataTypeCompletion