Filtro de DirectShow no se conecta al filtro de nivel inferior en Windows 8 y el Service Pack 1 de Windows 7 con 2670838 de KB

Seleccione idioma Seleccione idioma
Id. de artículo: 2841589 - Ver los productos a los que se aplica este artículo
Expandir todo | Contraer todo

Síntomas

Está utilizando un filtro de DirectShow no se conecta a un filtro de nivel inferior en Windows 8 y Windows 7 SP1 después de instalar el 2670838 de KB.  Antes de instalar KB 2670838 este problema no ocurría en Windows 7 SP1.
  • Cuando se llama a laCBasePin.ReceiveConnection es el valor que se devuelve la función VFW_E_INVALIDMEDIATYPE (0x80040200)

Causa

Se han agregado nuevas comprobaciones de tipos de medios de video a la clase base de DirectShow en Windows 8.  Estas comprobaciones podrán rechazar tipos de medios incorrecto o desconocido. Estos controles se agregan a proteger los sistemas de desbordamientos de búfer y explotaciones las saturaciones del búfer.

KB 2670838 para Windows 7 SP1 actualiza el subsistema de DirectShow con los mismos cambios.

Solución

Las siguientes son recomendaciones que pueden ayudar a asegurarse de que el código pasa las comprobaciones de seguridad nueva.

  • Comprobar AM_MEDIA_TYPE estructura de valores no válidos. Esta estructura describe el formato de una muestra de los medios de comunicación.
  • Cuando se llama a CMediaType.AllocFormatBuffer Para asignar memoria para el bloque de formato, asegúrese de que está pasando necesaria para el bloque de formato de tamaño correcto.

    Tenga en cuenta: este método actualiza el cbFormat y pbFormat los miembros de la AM_MEDIA_TYPE estructura.
  • Comprobar la estructura BITMAPINFOHEADER para valores no válidos
    • Asegúrese de que biSize es igual a sizeof(BITMAPINFOHEADER)
    • Comprobar biSizeImage valor incorrecto (0 x es decir, > 40000000)
    • Comprobar biClrUsed para el valor no válido (es decir, > 256)

Más información

Pasos para reproducir el problema con GraphEdit:

GraphEdit está disponible en el (Kit de desarrollo de Software (SDK) de Microsoft Windowshttp://go.Microsoft.com/fwlink/p/?LinkId=62332).

El paso 1. Vaya a la carpeta Bin del SDK de Windows y ejecute graphedt.exe.

Paso 2. En el menú gráfico , haga clic en Insertar filtros. Aparece un cuadro de diálogo con una lista de los filtros en el sistema, organizados por categoría de filtro.

El paso 3. Encontrar el filtro en la categoría adecuada (normalmente se encuentran bajo la categoría de Filtros DirectShow ) y haga clic en el botón Insertar filtro . Si el filtro no es un filtro de origen y asegúrese de que haya agregado el filtro de origen necesarios para él.

El paso 4. Inserte el filtro de nivel inferior necesario.

El paso 5. Después de haber agregado los filtros, puede conectar dos filtros arrastrando el mouse desde la clavija de salida de un filtro a la clavija de entrada del otro filtro. Si las patillas aceptan la conexión, GraphEdit dibuja una flecha que conecta. Pruebe esto para el filtro con el filtro de nivel inferior. Verá:
  • Clavija de entrada y clavija de salida se conectarán sin ningún error en el Service Pack 1 de Windows 7.
  • GraphEdit mostrará el mensaje de error en Windows 8 y el Service Pack 1 de Windows 7 con 2670838 de KB instalado.
Términos utilizados en este artículo:

Desbordamiento de búfer:

Un desbordamiento de búfer se produce cuando se intenta ajustar más datos en un búfer que se le ha asignado. Un desbordamiento de búfer se puede utilizar para ejecutar código malintencionado en un sistema.

Saturaciones de búfer:

Desbordamiento de búfer de A esencialmente es causado por tratamiento de la entrada externa, la existencia como datos de confianza. El acto de copiar estos datos, con operaciones como CopyMemory, strcat, strcpy o wcscpy, puede crear resultados imprevistos, lo que permite de daños en el sistema.

Vínculos relacionados:

Método CBasePin.ReceiveConnection

http://msdn.Microsoft.com/en-us/library/Windows/Desktop/dd368737 (v=vs.85) .aspx

Clase CMediaType
http://msdn.Microsoft.com/en-us/library/Windows/Desktop/dd374727 (v=vs.85) .aspx

Método CMediaType.AllocFormatBuffer
http://msdn.Microsoft.com/en-us/library/Windows/Desktop/dd374728 (v=vs.85) .aspx

Estructura AM_MEDIA_TYPE
http://msdn.Microsoft.com/en-us/library/Windows/Desktop/dd373477 (v=vs.85) .aspx

Estructura BITMAPINFOHEADER
http://msdn.Microsoft.com/en-us/library/Windows/Desktop/dd183376 (v=vs.85) .aspx

Usando GraphEdit
http://msdn.Microsoft.com/en-us/library/Windows/Desktop/dd407274 (v=vs.85) .aspx

Propiedades

Id. de artículo: 2841589 - Última revisión: miércoles, 24 de abril de 2013 - Versión: 1.0
La información de este artículo se refiere a:
  • Windows 8
  • Windows 8 Enterprise
  • Windows 8 Pro
  • Windows 7 Enterprise
  • Windows 7 Ultimate
  • Windows 7 Professional
  • Windows 7 Home Premium
  • Windows 7 Home Basic
  • Windows 7 Service Pack 1
Palabras clave: 
kbmt KB2841589 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 2841589

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com