Interfaz IKsDataTypeHandler (ksproxy.h)

La interfaz IKsDataTypeHandler proporciona métodos que realizan el preprocesamiento opcional y el postprocesamiento de ejemplos multimedia. Esta interfaz también puede devolver el tamaño de la información de encabezado de secuencia adicional necesaria para el procesamiento y puede determinar si un tipo de medio determinado se encuentra dentro de un conjunto determinado de intervalos de datos de streaming de kernel.

El IID de esta interfaz es IID_IKsDataTypeHandler.

Herencia

La interfaz IKsDataTypeHandler hereda de la interfaz IUnknown .

Métodos

La interfaz IKsDataTypeHandler tiene estos métodos.

 
IKsDataTypeHandler::KsCompleteIoOperation

El método KsCompleteIoOperation limpia el encabezado extendido y completa la operación de entrada y salida (E/S).
IKsDataTypeHandler::KsIsMediaTypeInRanges

El método KsIsMediaTypeInRanges valida que un tipo de medio está dentro de los intervalos de datos proporcionados.
IKsDataTypeHandler::KsPrepareIoOperation

El método KsPrepareIoOperation inicializa el encabezado extendido y prepara el ejemplo multimedia para una operación de E/S.
IKsDataTypeHandler::KsQueryExtendedSize

El método KsQueryExtendedSize recupera la información de encabezado extendida necesaria para las operaciones de entrada y salida (E/S).
IKsDataTypeHandler::KsSetMediaType

El método KsSetMediaType establece el tipo de medio para un controlador de tipos de datos.

Comentarios

Para mantener el tipo de datos proxy neutro, los controladores de tipos de datos opcionales se pueden cargar para masajear el flujo de datos a medida que pasa a o desde filtros en modo kernel. Debe implementar un controlador de tipos de datos como un servidor COM que, al menos, admita la interfaz IKsDataTypeHandler . El controlador de tipos de datos puede admitir opcionalmente la interfaz IKsDataTypeCompletion .

Normalmente, un controlador de tipos de datos se carga durante el proceso de conexión de patillas y se descarga cuando se interrumpe la conexión. Sin embargo, un controlador de tipos de datos a veces se carga brevemente para otros fines. Por ejemplo, si una aplicación usa el método IAMStreamConfig::SetFormat de DirectShow, es posible que la aplicación use un controlador de tipos de datos para completar un parámetro de tipo multimedia parcial enviado al método .

El proxy usa los GUID del tipo de medio como clases de servidor COM para determinar qué ocurre si se va a cargar algún controlador de tipos de datos. Siempre que el controlador de tipos de datos se registre como un servidor COM en una clase GUID esperada que busca el proxy, se carga el controlador de tipos de datos. El tipo de formato principal se usa primero para intentar abrir un servidor COM de controlador de tipos de datos, seguido del especificador de subtipo y formato si se produce un error al abrir el controlador de tipos de datos con el tipo de formato principal. Si alguno de los intentos se realiza correctamente, el proxy consulta la interfaz IKsDataTypeHandler y llama al método KsSetMediaType de la interfaz para establecer el tipo de medio actual que se usa con el controlador, en caso de que el controlador admita muchos tipos. Si no se encuentra ningún controlador, el proxy supone que no es necesario al serializar la secuencia hacia o desde el modo kernel, o para realizar cualquier otra tarea necesaria.

En un controlador de tipos de datos, cree una solicitud a través de CoCreateInstance, el servidor siempre presenta un IUnknown externo con el que crear el objeto COM. Este IUnknown es una interfaz en el objeto pin que carga este controlador. El puntero de interfaz IUnknown se puede usar para consultar información o interfaces desde el pin, como las interfaces IKsPin o IKsControl , aunque es posible que el pin del modo kernel no se haya creado en el momento en que se cargue el controlador. No se debe dejar ninguna referencia en el objeto externo mediante la adquisición de ninguna interfaz, ya que dará como resultado un recuento de referencias circulares. El uso de las interfaces sin un recuento de referencias es aceptable, ya que el objeto externo posee el controlador y, por definición, se destruye cuando el recuento de referencias del objeto externo alcanza cero.

Para obtener más información sobre IAMStreamConfig::SetFormat y CoCreateInstance, consulte la documentación de Microsoft Windows SDK.

Requisitos

Requisito Value
Plataforma de destino Windows
Encabezado ksproxy.h

Consulte también

IKsDataTypeCompletion