Partager via


Interface IKsDataTypeHandler (ksproxy.h)

L’interface IKsDataTypeHandler fournit des méthodes qui effectuent un prétraitement facultatif et une post-traitement 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 diffusion en continu du noyau.

L’IID de cette interface est IID_IKsDataTypeHandler.

Héritage

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

Méthode

L’interface IKsDataTypeHandler a 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 de mé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 d’un gestionnaire de types de données.

Remarques

Pour que le type de données proxy reste neutre, les gestionnaires de types de données facultatifs peuvent être chargés pour masser le flux de données à mesure qu’il passe à des filtres en mode noyau ou à partir de filtres en mode noyau. Vous devez implémenter un gestionnaire de type 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 type de données est généralement chargé pendant le processus de connexion d’épingle et déchargé lorsque la connexion est interrompue. Toutefois, un gestionnaire de type de données est parfois chargé brièvement à d’autres fins. Par exemple, si une application utilise la méthode IAMStreamConfig ::SetFormat de DirectShow, l’application utilise éventuellement 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 de mé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 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 types de données échoue à l’aide du type de format principal. Si l’une des tentatives réussit, les requêtes proxy pour l’interface IKsDataTypeHandler et appellent 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 à partir du mode noyau, ou pour effectuer d’autres tâches nécessaires.

Sur un gestionnaire de types de données, créez une requête via CoCreateInstance, le serveur est toujours présenté une externe IUnknown avec laquelle créer l’objet COM. Cette 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 pas été créée au moment du chargement du gestionnaire. Aucune référence ne doit être laissée sur l’objet externe par l’acquisition d’interfaces, car elle entraîne un nombre de références circulaires. L’utilisation des interfaces sans nombre de références est acceptable, car l’objet externe possède le 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 du Kit de développement logiciel (SDK) Microsoft Windows.

Exigences

Exigence Valeur
plateforme cible Windows
d’en-tête ksproxy.h

Voir aussi

IKsDataTypeCompletion