DirectShow 篩選條件不是連接至下游上的篩選器視窗 8 和 Windows 7 SP1,使用 KB 2670838

文章翻譯 文章翻譯
文章編號: 2841589 - 檢視此文章適用的產品。
全部展開 | 全部摺疊

徵狀

您正在使用不是連接至下游的篩選器,在 Windows 8 和 Windows 7 SP1 之後安裝 KB 2670838 DirectShow 篩選條件。再安裝 KB 2670838 這個問題沒有出現在 Windows 7 SP1。
  • 呼叫時CBasePin.ReceiveConnection 函式所傳回的值是 VFW_E_INVALIDMEDIATYPE (0x80040200)

發生的原因

在 Windows 8 的 DirectShow 基底類別已新增視訊媒體類型的新檢查。這些檢查項目可能會拒絕不正確或無法辨識的媒體類型。這些檢查項目會加入至系統防止緩衝區溢位及緩衝區滿溢,exploitations。

KB 2670838 Windows 7 sp1 的相同的變更來更新 DirectShow 子系統。

解決方案

以下是可以幫助確保您的程式碼會傳遞新的安全性檢查的建議事項:

  • 請確認 AM_MEDIA_TYPE 無效的值的結構。這個結構所描述媒體範例的格式。
  • 呼叫時 CMediaType.AllocFormatBuffer 若要配置的記憶體區塊的格式,請確定您正在傳遞所需的區塊的格式正確的大小。

    請注意: 這個方法會更新 cbFormat 以及 pbFormat 成員 AM_MEDIA_TYPE 結構。
  • 確認 BITMAPINFOHEADER 結構無效的值
    • 請確定 biSize 相當於 sizeof(BITMAPINFOHEADER)
    • 請確認 biSizeImage 不正確的值 (也就是 > 0x40000000)
    • 請確認 biClrUsed 不正確的值 (也就是 > 256)

其他相關資訊

如果要重現問題,使用 GraphEdit 的步驟:

在 [Microsoft Windows 軟體開發套件 (SDK) (位於 GraphEdithttp://go.microsoft.com/fwlink/p/?linkid=62332).

步驟 1。移到 Windows SDK 的 [ Bin ] 資料夾並執行graphedt.exe

步驟 2。從 [圖表] 功能表中,按一下 [插入篩選器]。一份依篩選條件分類來組織您的系統上的篩選條件會出現一個對話方塊。

步驟 3。找到下適當的類別 (通常是DirectShow 的篩選器] 類別底下找到),並按一下 [將篩選器插入篩選] 按鈕。如果您的篩選條件不是來源過濾器,然後請確定您已新增所需的來源篩選器對它。

步驟 4。插入需要下游的篩選器。

步驟 5。新增篩選器之後,您就可以從一個篩選器的輸出 pin 的滑鼠拖曳到另一個篩選條件輸入 pin 連接兩個篩選器。如果針腳接受連線,GraphEdit 會繪製箭號連接圖形。嘗試在下游的篩選器篩選條件。您會看到-
  • 輸入的 pin 和輸出 pin 碼,將連線不會在 Windows 7 SP1 上的任何錯誤。
  • GraphEdit 均會顯示錯誤訊息視窗 8 和 Windows 7 SP1 與已安裝 KB 2670838。
在這份文件中所用的詞彙:

緩衝區溢位:

當我們試著到非配置的緩衝區,適用於更多的資料時,就會發生緩衝區滿溢的情況。緩衝區滿溢的情況,可用於在系統中執行惡意程式碼。

緩衝區滿溢:

A 緩衝區滿溢基本上被因未核取、 外部輸入視為可信任的資料。複製此資料,請使用 CopyMemory、 strcat、 strcpy 或 wcscpy 等作業的行為造成意料之外的結果,可讓系統是否損毀。

相關的連結:

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 Community 利用 Community Translation Framework技術或人工進行事後編修。翻譯過程並無專業譯者參與。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