ตัวกรอง DirectShow ไม่ได้เชื่อมต่อกับตัวกรองแบบดาวน์สตรีมบน Windows 8 และ Windows 7 SP1 กับ KB 2670838

การแปลบทความ การแปลบทความ
หมายเลขบทความ (Article ID): 2841589 - ผลิตภัณฑ์ที่เกี่ยวข้องในบทความนี้
ขยายทั้งหมด | ยุบทั้งหมด

อาการ

คุณกำลังใช้ตัวกรอง DirectShow ที่เชื่อมต่อกับตัวกรองแบบดาวน์สตรีมบน Windows 8 และ Windows 7 SP1 หลังจากติดตั้ง KB 2670838  ก่อนที่จะติดตั้ง KB 2670838 นี้ไม่ได้เกิดปัญหาใน Windows 7 SP1
  • เมื่อเรียกแบบCBasePin.ReceiveConnection เป็นฟังก์ชันที่จะคืนค่า VFW_E_INVALIDMEDIATYPE (0x80040200)

สาเหตุ

ตรวจสอบชนิดของสื่อวิดีโอใหม่ถูกเพิ่มเข้าไปคลาสพื้นฐานของ DirectShow บน Windows 8  ตรวจสอบเหล่านี้อาจปฏิเสธชนิดของสื่อที่ไม่ถูกต้อง หรือไม่รู้จัก ตรวจสอบเหล่านี้จะเพิ่มการป้องกันระบบจากบัฟเฟอร์โอเวอร์โฟลว์ และบัฟเฟอร์ overruns 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:

GraphEdit จะพร้อมใช้งานในทาง(Microsoft Windows ซอฟต์แวร์พัฒนา Kit (SDK)http://go.microsoft.com/fwlink/p/?linkid=62332).

ขั้นตอนที่ 1 ไปยังโฟลเดอร์ของช่องเก็บของ Windows SDK และเรียกใช้graphedt.exe

ขั้นตอนที่ 2 จากเมนูกราฟคลิกแทรกตัวกรอง กล่องโต้ตอบปรากฏขึ้นพร้อมกับรายการของตัวกรองที่อยู่บนระบบของคุณ การจัดระเบียบตามประเภทของตัวกรอง

ขั้นตอนที่ 3 ค้นหาตัวกรองของคุณภายใต้ประเภทที่เหมาะสม (โดยปกติแล้วจะพบภายใต้ประเภทตัวกรอง DirectShow ) และคลิกบนปุ่มแทรกตัวกรอง ถ้าตัวกรองของคุณไม่มีตัวกรองต้นฉบับแล้วทำให้แน่ใจว่า คุณได้เพิ่มตัวกรองต้นฉบับที่จำเป็นสำหรับตารางนั้น

ขั้นตอนที่ 4 ใส่ตัวกรองแบบดาวน์สตรีมที่จำเป็น

ขั้นตอนที่ 5 หลังจากที่คุณเพิ่มตัวกรอง คุณสามารถเชื่อมต่อตัวกรองที่สอง โดยการลากเมาส์จากหมุดการแสดงผลของตัวกรองหนึ่งไปหมุดของตัวกรองอื่น ถ้าหมุดยอมรับการเชื่อมต่อ GraphEdit วาดลูกศรเชื่อมต่อเหล่านั้น ลองนี้สำหรับตัวกรองของคุณด้วยตัวกรองแบบดาวน์สตรีม คุณจะเห็น-
  • หมุดและหมุดผลลัพธ์จะเชื่อมต่อ โดยไม่มีข้อผิดพลาดใด ๆ ใน Windows 7 SP1
  • GraphEdit จะแสดงข้อผิดพลาดข้อบน Windows 8 และ Windows 7 SP1 กับ 2670838 กิโลไบต์ที่ติดตั้ง
คำศัพท์ที่ใช้ในบทความนี้:

บัฟเฟอร์มากเกินไป:

มีบัฟเฟอร์มากเกินไปเกิดขึ้นเมื่อเราพยายามที่จะพอดีกับข้อมูลเพิ่มเติมลงในบัฟเฟอร์จากที่มีการปันส่วน สามารถใช้เป็นบัฟเฟอร์มากเกินไปเมื่อต้องการเรียกใช้โค้ดที่เป็นอันตรายในระบบ

Overruns บัฟเฟอร์:

A บัฟเฟอร์มากเกินไปจะพิจารณาสาเหตุมาจากการจัดการภายนอก ไม่ได้ตรวจสอบการป้อนข้อมูลเป็นข้อมูลที่น่าเชื่อถือ บัญญัติการคัดลอกข้อมูลนี้ ใช้การดำเนินงานเช่น CopyMemory, strcat, strcpy หรือ wcscpy, สามารถสร้างผลลัพธ์ที่เจอ ซึ่งอนุญาตให้มีความเสียหายของระบบได้

การเชื่อมโยงที่เกี่ยวข้อง:

วิธีการ CBasePin.ReceiveConnection

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

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

วิธีการ CMediaType.AllocFormatBuffer
.aspx http://msdn.microsoft.com/en-us/library/windows/desktop/dd374728 (v=vs.85)

โครงสร้าง AM_MEDIA_TYPE
.aspx http://msdn.microsoft.com/en-us/library/windows/desktop/dd373477 (v=vs.85)

โครงสร้าง BITMAPINFOHEADER
.aspx http://msdn.microsoft.com/en-us/library/windows/desktop/dd183376 (v=vs.85)

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

คุณสมบัติ

หมายเลขบทความ (Article ID): 2841589 - รีวิวครั้งสุดท้าย: 24 เมษายน 2556 - Revision: 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
Keywords: 
kbmt KB2841589 KbMtth
แปลโดยคอมพิวเตอร์
ข้อมูลสำคัญ: บทความนี้แปลโดยซอฟต์แวร์การแปลด้วยคอมพิวเตอร์ของ Microsoft แทนที่จะเป็นนักแปลที่เป็นบุคคล Microsoft มีบทความที่แปลโดยนักแปลและบทความที่แปลด้วยคอมพิวเตอร์ เพื่อให้คุณสามารถเข้าถึงบทความทั้งหมดในฐานความรู้ของเรา ในภาษาของคุณเอง อย่างไรก็ตาม บทความที่แปลด้วยคอมพิวเตอร์นั้นอาจมีข้อบกพร่อง โดยอาจมีข้อผิดพลาดในคำศัพท์ รูปแบบการใช้ภาษาและไวยากรณ์ เช่นเดียวกับกรณีที่ชาวต่างชาติพูดผิดเมื่อพูดภาษาของคุณ Microsoft ไม่มีส่วนรับผิดชอบต่อความคลาดเคลื่อน ความผิดพลาดหรือความเสียหายที่เกิดจากการแปลเนื้อหาผิดพลาด หรือการใช้บทแปลของลูกค้า และ Microsoft มีการปรับปรุงซอฟต์แวร์การแปลด้วยคอมพิวเตอร์อยู่เป็นประจำ
ต่อไปนี้เป็นฉบับภาษาอังกฤษของบทความนี้:2841589

ให้ข้อเสนอแนะ

 

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