DirectShow 筛选器无法连接到 Windows 8 和 Windows 7 SP1 中的 KB 2670838 上下游的筛选器

文章翻译 文章翻译
文章编号: 2841589 - 查看本文应用于的产品
展开全部 | 关闭全部

症状

您正在使用的 DirectShow 筛选器不会安装 KB 2670838 后连接到 Windows 8 和 Windows 7 SP1 上下游的筛选器。KB 2670838 在安装之前 Windows 7 SP1 上不发生此问题。
  • 在调用时CBasePin.ReceiveConnection 函数返回的值是 VFW_E_INVALIDMEDIATYPE (0x80040200)

原因

已在 Windows 8 的 DirectShow 基类添加新视频媒体类型的检查。这些检查可能拒绝错误或未知的媒体类型。这些检查还增加了以保护系统不受缓冲区溢出和缓冲区溢出的威胁。

KB 2670838 的 Windows 7 SP1 更新 DirectShow 子系统相同的更改。

解决方案

以下是建议,可以帮助确保您的代码通过的新的安全检查:

  • 请验证 AM_MEDIA_TYPE 无效值的结构。此结构描述媒体示例的格式。
  • 在调用时 CMediaType.AllocFormatBuffer 若要为格式块分配内存,请确保要传递的格式模块所需的正确大小。

    请注意: 此方法更新 cbFormatpbFormat 中的成员 AM_MEDIA_TYPE 结构。
  • 请验证为无效值的 BITMAPINFOHEADER 结构
    • 请确保 biSize 相当于 sizeof(BITMAPINFOHEADER)
    • 请验证 biSizeImage 对于错误值 (即 1> 0x40000000)
    • 请验证 biClrUsed 对于错误值 (即 1> 256)

更多信息

要重现此问题,使用 GraphEdit 的步骤如下:

GraphEdit 可在 Microsoft Windows 软件开发工具包 (SDK) (http://go.microsoft.com/fwlink/p/?linkid=62332).

第 1 步。转到Bin文件夹的 Windows SDK 并运行graphedt.exe

第 2 步。关系图菜单上,单击插入筛选器。对话框中将显示与您的系统,按类别筛选器上的筛选器的列表。

第 3 步。插入筛选器按钮找到您在相应的类别 (通常在DirectShow 筛选器类别下找到),然后单击下的筛选器。如果您的筛选器不是源筛选器,然后,请确保您已经为其添加所需的源筛选器。

第 4 步。插入所需的下游筛选器。

第 5 步。添加筛选器之后,您可以通过将鼠标从一个筛选器输出插针拖到另一个筛选器输入插针连接两个筛选器。如果针脚接受连接,GraphEdit 将绘制箭头连接它们。您与下游的筛选器的筛选器尝试此操作。您将看到的
  • 输入插针和输出插针将连接而无需在 Windows 7 SP1 上的任何错误。
  • 在 Windows 8 和 KB 2670838 安装与 Windows 7 SP1,GraphEdit 将显示错误消息。
本文中使用的术语:

缓冲区溢出:

当我们试着比已分配的缓冲区容纳更多数据时,就会发生缓冲区溢出。缓冲区溢出可以用于在系统中执行恶意代码。

缓冲区溢出:

一个缓冲区溢出实质上是由未选中,外部输入视为可信赖的数据引起的。将复制该数据,并使用运算 (例如 CopyMemory、 strcat、 strcpy 或 wcscpy act可以创建未预料到的结果,它允许系统损坏。

相关的链接:

CBasePin.ReceiveConnection 方法

http://msdn.microsoft.com/en-us/library/windows/desktop/dd368737 (v=vs.85).aspx

CMediaType 类
http://msdn.microsoft.com/en-us/library/windows/desktop/dd374727 (v=vs.85).aspx

CMediaType.AllocFormatBuffer 方法
http://msdn.microsoft.com/en-us/library/windows/desktop/dd374728 (v=vs.85).aspx

AM_MEDIA_TYPE 结构
http://msdn.microsoft.com/en-us/library/windows/desktop/dd373477 (v=vs.85).aspx

BITMAPINFOHEADER 结构
http://msdn.microsoft.com/en-us/library/windows/desktop/dd183376 (v=vs.85).aspx

使用 GraphEdit
http://msdn.microsoft.com/en-us/library/windows/desktop/dd407274 (v=vs.85).aspx

属性

文章编号: 2841589 - 最后修改: 2013年4月24日 - 修订: 1.0
这篇文章中的信息适用于:
  • 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
关键字:?
kbmt KB2841589 KbMtzh
机器翻译
重要说明:本文是由 Microsoft 机器翻译软件进行的翻译并可能由 Microsoft 社区通过社区翻译机构(CTF)技术进行后期编辑,或可能是由人工进行的翻译。Microsoft 同时向您提供机器翻译、人工翻译及社区后期编辑的文章,以便对我们知识库中的所有文章以多种语言提供访问。翻译的文章可能存在词汇、句法和/或语法方面的错误。Microsoft 对由于内容的误译或客户对内容的使用所导致的任何不准确、错误或损失不承担责任。
点击这里察看该文章的英文版: 2841589
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

提供反馈

 

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