ความขัดแย้งของไดรเวอร์ Windows 7 การวินิจฉัยไดรเวอร์

โดยใช้ของที่ให้มา วินโดว์ วิสต้า/7 ยูทิลิตี้ระบบ Driver Verifier Manager คุณสามารถดำเนินการวินิจฉัยที่ครอบคลุมของไดรเวอร์ที่ติดตั้งในระบบ และค้นหาส่วนประกอบที่มีปัญหาซึ่งขัดขวางการทำงานที่เสถียรของคอมพิวเตอร์และอุปกรณ์ที่เชื่อมต่ออยู่

ในการเรียกใช้เครื่องมือดังกล่าว คุณต้องเข้าสู่ระบบ Windows ด้วยสิทธิ์ของผู้ดูแลระบบ จากนั้นในแถบที่อยู่ของเมนู Start -> Run ให้ป้อนคำสั่ง verifier.exe แล้วคลิก OK ด้วยเหตุนี้ หน้าต่างตัวจัดการการตรวจสอบไดรเวอร์จะเปิดขึ้น ซึ่งคุณจะต้องเกาหัวและตัดสินใจเลือกตัวเลือกที่เหมาะสมเพื่อเปิดใช้ยูทิลิตี้นี้ คุณสามารถทำการทดสอบทั้งแบบเลือกและแบบเต็มของไดรเวอร์ทั้งหมดได้โดยไม่มีข้อยกเว้น

หลังจากตั้งค่าโหมดการทำงานของโปรแกรมและกดปุ่ม "เสร็จสิ้น" คุณจะต้องรีสตาร์ทคอมพิวเตอร์และรอให้ระบบปฏิบัติการโหลด หากพบไดรเวอร์ที่ไม่ดี Windows จะตกอยู่ในสิ่งที่เรียกว่า “ หน้าจอสีน้ำเงินความตาย" (BSOD - หน้าจอสีน้ำเงินแห่งความตาย) และรายงานข้อผิดพลาดที่สำคัญซึ่งมีข้อมูลเกี่ยวกับส่วนประกอบที่เป็นปัญหาซึ่งจะต้องดำเนินการด้วยดินสอโดยไม่ล้มเหลว

ขั้นตอนต่อไปคือการลบไฟล์ไดรเวอร์ที่มีข้อบกพร่อง ในการทำเช่นนี้ ให้กดปุ่ม F8 ค้างไว้ในขณะที่เริ่มคอมพิวเตอร์ เริ่มต้นระบบใน โหมดปลอดภัย(โหมดปลอดภัย) และมาตรฐานแล้ว เครื่องมือ Windowsลบส่วนประกอบที่ล้มเหลว จากนั้นคุณจะต้องเปิดคอนโซลอีกครั้งและป้อนคำสั่ง verifier.exe /reset เพื่อปิดใช้งานแอปพลิเคชัน Driver Verifier Manager โปรดทราบว่าจำเป็นต้องป้อนคำสั่งสุดท้ายด้วยหากคอมพิวเตอร์บู๊ตสำเร็จ ซึ่งแสดงว่าไม่มีไดรเวอร์ที่มีปัญหา

ข้อมูลอ้างอิงเพิ่มเติมบน ปัญหานี้ดู "การใช้ตัวตรวจสอบไดรเวอร์เพื่อวินิจฉัยปัญหาเกี่ยวกับไดรเวอร์ Windows (ผู้ใช้ขั้นสูง)" บนเว็บไซต์ Microsoft Support

เราเตือนคุณว่าการทดลองใดๆ กับไดรเวอร์เป็นสิ่งที่อันตรายและอาจทำให้ระบบเสียหายได้ เป็นการดีกว่าที่จะสำรองข้อมูลระบบไว้ล่วงหน้าจากนั้นอย่าข้ามนิ้วของคุณโดยการลบไดรเวอร์ที่น่าสงสัยอื่นออกจาก Windows

และทันทีที่พวกเขาไม่ดุ หน้าต่างจาก ไมโครซอฟท์เรียกสิ่งที่น่าสงสารว่าทั้งช้าและบั๊กกี้และไม่เสถียร ตอนนี้ไม่มีใครรีบปฏิเสธและโดยทั่วไปแล้วไม่น่าเป็นไปได้ที่พวกเขาจะปฏิเสธ ดังนั้นแทนที่จะดุนักพัฒนาที่น่าสงสารและจุดไฟที่ไร้ความหมาย จะเป็นการดีที่จะคิดออกว่า แท้จริงแล้วทำไมระบบถึงบั๊ก ฉันจะบอกความลับเล็กน้อย ในหน้าจอแห่งความตายที่ฉาวโฉ่และการงานที่ไม่มั่นคง หน้าต่างในกรณีส่วนใหญ่ ไดรเวอร์ของบุคคลที่สามจะต้องถูกตำหนิ และระบบปฏิบัติการเองก็ไม่มีส่วนเกี่ยวข้องกับมันเลย ตอนนี้เราจะบอกวิธีตรวจจับไดรเวอร์ดังกล่าวและนำออกจากระบบ

ข้อบกพร่องของการออกแบบไดรเวอร์อาจมีลักษณะที่แตกต่างกันมาก: จากการตกอยู่ในหน้าจอสีน้ำเงินแห่งความตาย ( BSOD- หน้าจอสีน้ำเงินแห่งความตาย) และการชะลอตัวของคอมพิวเตอร์และพฤติกรรมแปลก ๆ ของแอพพลิเคชั่นบางตัวที่ไม่เกี่ยวข้องกับไดรเวอร์เลย

หน้าจอสีน้ำเงินแห่งความตายนั้นน่าทึ่ง (โดยไม่มีการประชดประชัน!) เนื่องจากมันส่งสัญญาณอย่างชัดเจนถึงปัญหาร้ายแรงและให้คำแนะนำว่าควรขุดที่ไหน บ่อยครั้ง (แต่ไม่เสมอไป) ชื่อของไดรเวอร์ "มีความผิด" จะปรากฏโดยตรงที่มุมขวาบนของหน้าจอสีน้ำเงินแห่งความตาย อย่างไรก็ตามอาจไม่มีหรือแย่กว่านั้นคือชื่อของคนขับต่างชาติทั้งหมดอาจอยู่ที่นั่น

ตัวอย่างเช่น ไดรเวอร์การ์ดแสดงผลที่ค่อนข้างธรรมดาหนึ่งตัว มาทรอกซ์ G450มีแนวโน้มที่จะทำลายโครงสร้างพื้นฐานของระบบย่อยกราฟิก หน้าต่าง 2000 ส่งผลให้ชื่อปรากฏใน BSOD โปรแกรมควบคุมระบบ win32k.sysซึ่งใช้ส่วนสำคัญของฟังก์ชัน USER และ GDI ซึ่งแน่นอนว่าไม่มีส่วนเกี่ยวข้องใดๆ ดังนั้นการตีความประจักษ์พยานของจอฟ้าแห่งความตายจึงเป็นเวทมนตร์ สัญชาตญาณ วิทยาศาสตร์และศิลปะ เป็นเพียงส่วนเล็กๆ น้อยๆ ของทุกสิ่ง

นอกจากความบกพร่องของไดรเวอร์แล้ว หน้าจอสีน้ำเงินแห่งความตายยังอาจเกิดจากความล้มเหลวของฮาร์ดแวร์ เช่น โปรเซสเซอร์ที่โอเวอร์คล็อก, RAM ที่ผิดพลาด, คอนโทรลเลอร์ที่คด ฮาร์ดไดรฟ์, การ์ด PCI ที่เสียบไม่เข้าในช่องเสียบจนสุด, ขั้วต่อตัวใดตัวหนึ่งไม่สัมผัส, แหล่งจ่ายไฟไม่ดี, ตัวเก็บประจุอิเล็กโทรลีติคบวม เมนบอร์ด. และหลังมุ่ยด้วยเหตุผลหลายประการ: เนื่องจากความร้อนสูงเกินไปจากโปรเซสเซอร์ที่อยู่ใกล้เคียง, การขาดตัวเก็บประจุเซรามิก "ต่ำกว่ามาตรฐาน" โดยผู้ผลิต (อันเป็นผลมาจากการที่ส่วนประกอบ HF ผ่านอิเล็กโทรไลต์และทำให้ร้อนขึ้น) ในที่สุดเนื่องจาก การรั่วไหลของทรานซิสเตอร์หลักในโคลงของโหนด ดังนั้นก่อนทำการสับไม้จำเป็นต้องตรวจสอบให้แน่ใจว่าเหล็กที่เรานั่งนั้นใช้งานได้อย่างสมบูรณ์ และสิ่งนี้สามารถทำได้อย่างไร?

ประลองกับเหล็ก

หน้าจอสีน้ำเงินแห่งความตายที่เกิดจากความล้มเหลวของฮาร์ดแวร์นั้นเกิดขึ้นเองโดยไม่คาดคิดและไม่คำนึงถึงการกระทำของผู้ใช้โดยเฉพาะ แอพก็เริ่มมีปัญหาเช่นกัน ข้อผิดพลาดที่สำคัญในสถานที่ต่างๆ และรหัสข้อผิดพลาด ที่อยู่ และข้อมูลอื่นๆ ที่ออกโดยระบบจะแตกต่างกันในทุกกรณี! อย่างไรก็ตาม ไดรเวอร์ที่ประมวลผลคำขอแบบอะซิงโครนัสจากอุปกรณ์ I / O เป็นต้น เครือข่ายไร้สายพฤติกรรมเกือบเหมือนกันทุกประการ หน้าจอสีน้ำเงินแห่งความตายที่เกิดจากไดรเวอร์ที่มีข้อบกพร่องมักจะเกิดขึ้นเมื่อดำเนินการบางอย่างและมีข้อมูลถาวรไม่มากก็น้อย

เพื่อขจัดข้อสงสัยทั้งหมดออกจากเตารีดก็เพียงพอแล้วที่จะเชื่อมต่ออีกอันหนึ่งเข้ากับระบบ ฮาร์ดดิสก์ติดตั้งบนมันบริสุทธิ์ หน้าต่างและทำงานกับมันสักระยะหนึ่ง หากหน้าจอสีน้ำเงินแห่งความตายไม่หายไปแสดงว่าฮาร์ดแวร์ต้องตำหนิและถึงเวลาเปลี่ยนแล้ว การค้นหาส่วนประกอบที่มีข้อบกพร่องเป็นหัวข้อสำหรับการอภิปรายแยกต่างหาก ซึ่งเราจะทิ้งไว้ในครั้งต่อไป แต่สำหรับตอนนี้ เมื่อพับแขนเสื้อแล้ว เราจะได้สัมผัสกับไดรเวอร์ที่ร้ายกาจเหล่านี้

ฟืนที่ไม่มีใบรับรองเข้าไปในเตาเผาทันที

เครื่องมือทั้งชุดที่จำเป็นสำหรับการพัฒนาไดรเวอร์ ( ดี.ดี.เค– Driver Development Kit) Microsoft แจกจ่ายให้ฟรีพร้อมกับเอกสารประกอบ ไดรเวอร์ บางครั้งบั๊กมากและไม่เสถียร

เพื่อป้องกันไม่ให้เกิดเรื่องวุ่นวายเช่นนี้ขึ้น ไมโครซอฟท์ย้อนกลับไปในสมัยโบราณ บริษัทได้แนะนำขั้นตอนในการรับรองผู้ขับขี่เพื่อให้เป็นไปตามข้อกำหนดสำหรับพวกเขา หลังจากนั้นจะมีการออกลายเซ็นดิจิทัลให้กับผู้ขับขี่ หรือ ... ไม่ออกและเขาไปแก้ไข และแม้ว่าการรับรองจะเป็นเพียงขั้นตอนที่เป็นทางการซึ่งไม่ได้รับประกันว่าจะไม่มีข้อผิดพลาดร้ายแรงและข้อบกพร่องในการพัฒนา แต่ก็ยังคงกำจัดไดรเวอร์ "ผู้บุกเบิก" ที่ตรงไปตรงมาบางส่วน

ตามหลักการแล้วควรเก็บเฉพาะไดรเวอร์ที่เซ็นชื่อแบบดิจิทัลไว้ในระบบ และแม้ว่าลายเซ็นดิจิทัลจะไม่ใช่นโยบายการประกัน แต่การมีอยู่ของมันบ่งชี้ถึงวัฒนธรรมการพัฒนาในระดับหนึ่งแล้ว ไม่มีไดรเวอร์ ลายเซ็นดิจิทัลแย่กว่าหมูในการแหย่และควรกำจัดหากเป็นไปได้ (โดยเฉพาะอย่างยิ่งเนื่องจากมัลแวร์จำนวนมากติดตั้งโดยรูทคิทหรือกลไกการป้องกันเชิงรุกที่เจาะลึกเข้าไปในระบบและทำให้ระบบไม่เสถียร) กล่าวโดยย่อคือจะไม่ก่อให้เกิดการดูหมิ่นศาสนา แต่ลองตอบคำถามง่ายๆ หนึ่งข้อ: จะสร้างรายชื่อไดรเวอร์โดยไม่มีลายเซ็นดิจิทัลได้อย่างไร

ยูทิลิตีจะช่วยเราในเรื่องนี้ sigverif.exeรวมอยู่ในชุดการส่งมอบระบบปฏิบัติการมาตรฐานและอยู่ในไดเร็กทอรี WINNT\System32 เรียกใช้และดูกล่องโต้ตอบ คลิกปุ่ม "ขั้นสูง" และในแท็บ "ค้นหา" กำหนดเกณฑ์การเลือกโดยย้ายปุ่มตัวเลือกจากตำแหน่ง "แจ้งเกี่ยวกับที่ไม่ได้ลงชื่อ ไฟล์ระบบ” (โดยค่าเริ่มต้น) ไปที่ตำแหน่ง “ค้นหาไฟล์อื่นที่ไม่ได้เซ็นชื่อด้วยลายเซ็นดิจิทัล” หลังจากนั้นใน "ตัวเลือกการค้นหา" ให้เปิดช่อง "ค้นหาไฟล์ประเภทต่อไปนี้" และเลือก "*.sys" และด้านล่างเราจะระบุโฟลเดอร์เพื่อค้นหา "C: \ WINNT" อย่าลืมทำเครื่องหมาย กล่อง “รวมโฟลเดอร์ย่อย”

ในความเป็นจริง พูดอย่างเคร่งครัด ไดรเวอร์ไม่จำเป็นต้องมีส่วนขยาย sys และไม่ได้ถูกจำกัดไว้ที่ไดเร็กทอรี WINNT เสมอไป โดยอยู่ในไดเร็กทอรีของแอปพลิเคชัน "ของพวกเขา" และบางแอปพลิเคชันยังจัดเก็บไดรเวอร์ ... ไว้ในตัวมันเอง! ทันทีหลังจากเปิดตัว (หรือเวลาอื่น) พวกเขาบันทึกไฟล์ลงในไดเร็กทอรีปัจจุบันหรือชั่วคราวโหลดไดรเวอร์ลงในหน่วยความจำและ ... ลบออกจากดิสก์ทันที! ไม่เพียง แต่ไวรัสที่เป็นอันตรายเท่านั้นที่ทำเช่นนี้ แต่ยังรวมถึงโปรแกรมที่น่านับถือเช่นยูทิลิตี้บางอย่างของ Mark Russinovich นักวิจัย Windows ที่มีชื่อเสียง

ดังนั้นเพื่อความบริสุทธิ์ของการทดลองจึงไม่ทำให้เราเจ็บปวดเลยที่จะได้รับรายชื่อไดรเวอร์ที่อยู่ในนั้น ช่วงเวลานี้ในหน่วยความจำและเปรียบเทียบกับไดรเวอร์บนดิสก์ คำว่า "ในขณะนี้" เป็นกุญแจสำคัญเนื่องจากการโหลด / ยกเลิกการโหลดไดรเวอร์สามารถเกิดขึ้นได้ฟรีโดยไม่ต้องรีบูตระบบปฏิบัติการ ขอแนะนำให้ดำเนินการนี้หลายครั้งโดยเรียกใช้ยูทิลิตีบรรทัดคำสั่ง drivers.exe ซึ่งเป็นส่วนหนึ่งของ DDK ซึ่งสามารถดาวน์โหลดได้จากเซิร์ฟเวอร์ Microsoft เปิดตัวโดยไม่มีสวิตช์บรรทัดคำสั่ง ยูทิลิตี drives.exeทิ้งข้อมูลทั้งหมดบนหน้าจอซึ่งไม่ดีเนื่องจากมักจะมีไดรเวอร์จำนวนมากในระบบและไม่พอดีกับหน้าจอ อย่างไรก็ตาม ศาสนาอนุญาตให้เราเปลี่ยนเส้นทางเอาต์พุตสตรีมไปที่ ไฟล์ข้อความ(drivers.exe >file-name.txt ) เปิดโดยใครก็ได้ โปรแกรมแก้ไขข้อความ- แม้กระทั่งกับ Word แม้กระทั่งกับแผ่นจดบันทึก จากนั้นจะเหลือเพียงการเลือกบล็อกแนวตั้ง (ซึ่งแผ่นจดบันทึกไม่อนุญาต) และรับรายการไดรเวอร์ ส่งตรงจากเคอร์เนลของระบบปฏิบัติการ!

หากไม่มีไดรเวอร์เหล่านี้อย่างน้อยหนึ่งตัวในไดเร็กทอรี C:\WINNT\ ลายเซ็นดิจิทัลนั้นจะไม่ได้รับการยืนยัน! โดยธรรมชาติแล้วคนขับดังกล่าวจะดึงดูดความสนใจในทันทีและเรามีคำถามที่สมเหตุสมผล: มันมาจากไหน? ขั้นแรกให้สแกนไดเร็กทอรีทั้งหมดบนดิสก์ หากไม่มี ให้ตั้งค่าเบรกพอยต์บนฟังก์ชัน CreateFileW ของ Soft-Ice และดูอาร์กิวเมนต์ที่ส่งไป ไม่ช้าก็เร็วเราจะพบกับคนขับรถบั๊กกี้ของเรา หลังจากนั้น สิ่งที่เหลืออยู่ก็คือการดูที่มุมขวาล่างของหน้าจอ Soft-Ice ซึ่งชื่อของกระบวนการที่สร้างขึ้นนั้นจะปรากฏขึ้น สำหรับรายละเอียดเพิ่มเติม โปรดดูที่หนังสือ "เทคนิคการดีบักโปรแกรมโดยไม่มีซอร์สโค้ด" สำเนาอิเล็กทรอนิกส์ซึ่งสามารถพบได้บน ftp- หรือ http-server nezumi.org.ru รวมถึงบนดิสก์ของเรา และเรายังคงทรมานยูทิลิตี้ต่อไป sigverif.exe.

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

คนหัวร้อนบางคนแนะนำให้ลบไดรเวอร์ที่ไม่ได้ลงชื่อออกทั้งหมดเพื่อล้างระบบบาป - จากนั้นพวกเขากล่าวว่าปัญหาทั้งหมดจะถูกลบออกเหมือนหาง และสิ่งนี้สามารถทำได้อย่างไร? วิธีแก้ปัญหาที่หยาบคายที่สุดคือเพียงแค่รับและลบออกจากดิสก์ผ่าน FAR หรือ Explorer (แน่นอนด้วยสิทธิ์ของผู้ดูแลระบบ!) แต่ผลที่ตามมาของการดำเนินการดังกล่าวอาจกลายเป็นเรื่องน่าเสียดายมากและเป็นการดีกว่าโดยคลิกขวาที่ไอคอนไดรเวอร์ใน Explorer เพื่อค้นหาชื่อผู้ผลิตใน "คุณสมบัติ" ซึ่งคุณสามารถระบุได้ว่า แอปพลิเคชัน / ชิ้นส่วนของฮาร์ดแวร์ติดตั้งไดรเวอร์นี้และถอนการติดตั้งด้วยวิธีที่มีอารยธรรม จริงมีหนึ่ง "แต่"

รูปภาพต่อไปนี้เน้นไดรเวอร์ g400m.sysซึ่งมาพร้อมกับการ์ด Matrox G450 และแม้ว่า Matrox จะไม่ใช่บริษัทที่อ่อนแอเลย แต่ก็ไม่ได้รับลายเซ็นดิจิทัล (ทั้ง Microsoft ไม่ได้ให้มา หรือ Matrox เองก็ไม่อยากรบกวน) โดยธรรมชาติแล้วหลังจากลบออกจากระบบแล้ว คุณจะต้องลืมเกี่ยวกับโหมด SVGA อย่างไรก็ตาม คุณสามารถไปที่เว็บไซต์ Matrox ได้โดยดาวน์โหลดไดรเวอร์เวอร์ชันล่าสุด (มีการเซ็นชื่อแบบดิจิทัลแล้ว) เฉพาะตอนนี้ ... ทั้งเวอร์ชันที่ลงนามและไม่ได้ลงนามมีข้อผิดพลาดร้ายแรงจำนวนมาก โดยเฉพาะอย่างยิ่ง อันเป็นผลมาจากการรวมกันของสถานการณ์บางอย่างเมื่อพยายามเปลี่ยนเป็นโหมดโอเวอร์เลย์ ระบบจะหยุดทำงานเป็น BSOD เนื่องจากไดรเวอร์พยายามทำให้ว่างขึ้น หน่วยความจำที่ว่างแล้ว

ดังนั้น การมี/ไม่มีลายเซ็นดิจิทัลในตัวเองไม่ได้มีความหมายอะไรเลย และแม้ว่าเราจะใช้เฉพาะไดรเวอร์ที่มีลายเซ็น ก็ไม่ได้รับประกันความเสถียรใดๆ แก่เรา

นี่คือจุดที่เราจะไปยังส่วนที่สองของบทความ นั่นคือ การทดสอบไดรเวอร์ในสภาพที่ใกล้เคียงกับการรบ

เราจัดให้มีการทดสอบจริงสำหรับฟืน

DDK มียูทิลิตี้ที่ยอดเยี่ยม คนขับรถ ผู้ตรวจสอบซึ่งสร้างเงื่อนไขที่รุนแรงที่สุดสำหรับไดรเวอร์ ติดกับความรุนแรงและการฆ่าตัวตายซึ่งความน่าจะเป็นของความล้มเหลวสูงสุด และชื่อของไดรเวอร์ที่มีข้อบกพร่องจะถูกกำหนดด้วยความแม่นยำสูงสุด (แม้ว่าจะไม่ได้รับผลกระทบจากข้อบกพร่องในการพัฒนาก็ตาม แต่ทำลายโครงสร้างข้อมูลของไดรเวอร์อื่น)

เป็นสิ่งสำคัญที่จะต้องทราบว่า คนขับรถ ผู้ตรวจสอบไม่ใช่การรักษา แต่เป็นเพียงเครื่องมือวินิจฉัยเท่านั้น มันยังคงไม่ช่วยคุณจากความล้มเหลว (ตรงกันข้าม มันจะเพิ่มความรุนแรงขึ้นสองสามลำดับของขนาด) แต่มันจะช่วยระบุไดรเวอร์ที่ "ใจร้าย" ด้วยความมั่นใจในระดับที่เพียงพอ

ดังนั้นเรียกใช้ verifier.exe ดูหน้าต่าง คนขับรถ ผู้ตรวจสอบ ผู้จัดการไปที่แท็บการตั้งค่าและเลื่อนปุ่มตัวเลือกไปที่ตำแหน่งตรวจสอบไดรเวอร์ทั้งหมด หลังจากนั้นเรากดปุ่ม "การตั้งค่าที่ต้องการ" ซึ่งจะตั้งค่าการตรวจสอบประเภทต่อไปนี้ (ประเภทการตรวจสอบ):

  • พิเศษ สระน้ำ- ไดรเวอร์ที่ตรวจสอบแล้วจะได้รับการจัดสรรพื้นที่หน่วยความจำพิเศษสำหรับการจัดสรรซึ่งไม่เร็วมาก แต่สามารถตรวจจับการทำลายข้อมูลของตัวเองและข้อมูลของผู้อื่นได้เกือบทุกประเภท
  • บังคับ ไออาร์คิวแอลกำลังตรวจสอบ IRQL ย่อมาจาก Interrupt Request Level ที่สุด ข้อผิดพลาดทั่วไปนักพัฒนาไดรเวอร์พยายามเข้าถึงหน่วยความจำในระดับ IRQL ซึ่งตัวจัดการการแลกเปลี่ยนไม่ทำงาน และหากหน้าที่ต้องการถูกบังคับให้ออกจากดิสก์ระบบจะกลายเป็นหน้าจอสีน้ำเงินพร้อมข้อความ "IRQL_LESS_OR_EQULAR" การบังคับโหมดนี้บังคับให้หน้าไดรเวอร์ลงดิสก์ เพื่อให้ข้อบกพร่องในการพัฒนาแสดงออกมาใน 100% ของกรณี
  • ต่ำ ทรัพยากร การจำลองมีประโยชน์ในการติดตั้งเพื่อดูว่าไดรเวอร์จะทำงานอย่างไรในกรณีที่ทรัพยากรระบบขาดหายอย่างรุนแรง แต่ไม่สามารถทำได้ แต่จะเป็นการดีกว่าถ้าออกจากช่องทำเครื่องหมายติดตามพูล (ติดตามความถูกต้องของการจัดการพูลหน่วยความจำ ). ข้อผิดพลาดอินพุต / เอาท์พุต (การตรวจสอบ I / O) เป็นส่วนที่ไม่มีนัยสำคัญของข้อผิดพลาดทั้งหมด ดังนั้นโดยทั่วไปแล้ว ตำแหน่งของช่องทำเครื่องหมายนี้จึงไม่สำคัญเลย

เมื่อเลือกการตั้งค่าเสร็จแล้วให้กดปุ่ม "สมัคร" (ใช้) และเมื่อเราเสนอให้รีบูต

ทันทีที่เริ่มบู๊ต ระบบจะช้าลงอย่างเห็นได้ชัด ซึ่งควรจะเป็น เนื่องจากเคอร์เนลทำการตรวจสอบมากกว่าปกติ เมื่อพบข้อผิดพลาดหน้าจอสีน้ำเงินแห่งความตายจะกะพริบพร้อมชื่อไดรเวอร์และข้อมูลอื่น ๆ ที่เป็นประโยชน์สำหรับนักพัฒนา แต่ไม่มีประโยชน์สำหรับเรา สิ่งที่เราทำได้คืออัปเดตไดรเวอร์เป็นเวอร์ชันล่าสุดหรือหยุดใช้โปรแกรม (ฮาร์ดแวร์) ที่ใช้งาน อันที่จริง เรามีตัวเลือกเพิ่มเติมเล็กน้อยสำหรับการจุดไฟฟืนดิบ แต่จะเพิ่มเติมในภายหลัง

คุณสามารถดูสถานะการยืนยันได้ทุกเมื่อโดยเรียกใช้ verifier.exe แท็บสถานะไดรเวอร์แสดงรายการสถานะของไดรเวอร์ที่ตรวจพบทั้งหมดพร้อมคำอธิบายสถานการณ์ปัจจุบัน สถานะโหลดหมายความว่า ได้รับไดรเวอร์ได้รับการดาวน์โหลดและทดสอบอย่างน้อยหนึ่งครั้ง (แต่อาจไม่สมบูรณ์ กล่าวคือ ไม่ใช่ทุกส่วนของไดรเวอร์ที่มีเวลาทำงาน) สถานะ Unloaded หมายความว่าไดรเวอร์ได้รับการโหลด ตรวจสอบ (อาจบางส่วน) และยกเลิกการโหลดโดยระบบ/โปรแกรมที่ใช้หรือตามความประสงค์ของมันเอง โดยเฉพาะอย่างยิ่งสำหรับไดรเวอร์ที่เหลือจากอุปกรณ์ที่ถูกนำออกโดยการดึงการ์ดเอ็กซ์แพนชันออกจากสล็อตอย่างป่าเถื่อน นั่นคือไม่ได้ทำการถอนการติดตั้ง คนขับที่รอดชีวิตจะสแกนรถบัส พยายามหาอุปกรณ์ "ของมัน" หยุดพักจากการค้นหา จากนั้นยกเลิกการโหลดตัวเองจากหน่วยความจำ ในทางกลับกัน ทำให้การบูตระบบช้าลง (บางครั้งสำคัญมาก) และขัดแย้งกับไดรเวอร์อื่นๆ คุณธรรม: อุปกรณ์ออกจากระบบต้องถูกลบออกตามกฎทั้งหมด! อย่างไรก็ตาม ไม่ใช่ว่าทุกสถานะไม่ได้โหลดจะเป็นสัญญาณของสถานการณ์ที่ผิดปกติ และก่อนที่จะลบไดรเวอร์ที่มีสถานะดังกล่าว คุณจำเป็นต้องค้นหาว่าเป็นกวางเรนเดียร์ชนิดใดและมาจากไหน

สถานะ Never Loaded แสดงว่าไดรเวอร์นี้ยังไม่ได้โหลด ซึ่งหมายความว่ายังไม่ได้ตรวจสอบ ดังนั้นคุณต้องรอโดยเรียกใช้ โปรแกรมต่างๆที่อาจเกี่ยวข้องกับมัน อย่างไรก็ตามไดรเวอร์บางตัว (โดยเฉพาะไดรเวอร์ที่ถอนการติดตั้งไม่ถูกต้อง) จะไม่ถูกโหลดและจะไม่มีการตรวจสอบ

หลังจากทำงานกับระบบในโหมดการทดสอบอย่างหนักเป็นระยะเวลาหนึ่ง (จากหลายชั่วโมงถึงหลายวัน) เราจะระบุไดรเวอร์ที่มีข้อบกพร่องเกือบทั้งหมดที่เราได้รับก่อนหน้านี้และเขียนชื่อลงในกระดาษ

คุณสามารถทำให้ระบบกลับสู่โหมดปกติ (นั่นคือ โดยไม่ต้องมีการตรวจสอบเพิ่มเติมที่กินประสิทธิภาพ) โดยใช้ตัวตรวจสอบเดียวกัน เรากลับไปที่แท็บการตั้งค่า เลื่อนปุ่มตัวเลือกไปที่ตำแหน่งยืนยันไดรเวอร์ที่เลือก (ในกรณีนี้ไม่ควรเลือกไดรเวอร์) คลิกที่ "รีเซ็ตทั้งหมด" จากนั้นเลือก "นำไปใช้" และรีบูต ทั้งหมด! ขณะนี้ระบบทำงานด้วยความเร็วปกติ แต่ไม่มีการตรวจสอบ

จะทำอย่างไรกับฟืนดิบ?

แต่จริงๆแล้วไดรเวอร์ที่ชำรุดสามารถทำอะไรได้บ้าง? แฮ็กเกอร์ที่รู้วิธีถือดีบักเกอร์ไว้ในมือ มีเวลาว่างเพียงพอสามารถแยกชิ้นส่วนได้ (ขอบคุณ ไดรเวอร์มักมีขนาดเล็ก) ค้นหาข้อผิดพลาดและหาวิธีแก้ไข แต่ ... สิ่งนี้ ลำบากเกินไป

การทิ้งไดรเวอร์ (พร้อมกับฮาร์ดแวร์/โปรแกรมที่ใช้งาน) ก็ไม่ใช่ทางเลือกเช่นกัน แม้ว่าจะทราบกันดีว่าหน้าจอสีน้ำเงินแห่งความตายจะต้องถูกตำหนิ การ์ดเสียงผู้ผลิตชาวจีนที่ไม่คุ้นเคยซึ่งมีมูลค่า 20 ดอลลาร์ เราก็มีแรงจูงใจค่อนข้างมากที่จะแทนที่ด้วยสิ่งที่คุ้มค่ากว่า แต่อันที่จริงแล้วสิ่งนี้ชัดเจนสำหรับทุกคนและไม่ต้องการความคิดเห็นเพิ่มเติม

แต่ไม่ใช่ทุกคนที่รู้ว่าการขัดข้องจำนวนมากและหน้าจอสีน้ำเงินแห่งความตายนั้นเกิดจากความจริงที่ว่ามีการติดตั้งไดรเวอร์ที่พัฒนา (และทดสอบ) ในสภาพแวดล้อมที่มีโปรเซสเซอร์เดียวในเครื่องที่มีโปรเซสเซอร์คู่ "โปรเซสเซอร์คู่" ในที่นี้หมายถึงทั้งแพลตฟอร์มจริงที่มีสองก้อน และโปรเซสเซอร์ Hyper-Threading / มัลติคอร์ เป็นที่ทราบกันดี (และได้รับการยืนยันจากการทดสอบจำนวนมาก) ว่า คอมพิวเตอร์ที่บ้านโปรเซสเซอร์สองตัวนั้นไร้ประโยชน์อย่างแน่นอนเนื่องจากในแอพพลิเคชั่นส่วนใหญ่นั้นไม่มีประสิทธิภาพเพิ่มขึ้น

ดังนั้นหากระบบไม่เสถียรและไม่สามารถกำจัดไดรเวอร์ที่มีข้อบกพร่องได้ด้วยเหตุผลใดก็ตาม คุณสามารถลองเข้าสู่การตั้งค่า BIOS เปลี่ยนเครื่อง "โปรเซสเซอร์คู่เสมือน" ของคุณเป็นโปรเซสเซอร์เดียว . เอฟเฟกต์ที่คล้ายกันสามารถทำได้โดยเปิดไฟล์ boot.ini (บนคอมพิวเตอร์ที่มี วินโดว์ NT/2000/XPมันอยู่ในไดเร็กทอรีรากของไดรฟ์แบบลอจิคัลที่ติดตั้งระบบ) และเพิ่มคีย์ /ONECPU เข้าไป จากนั้นรีบูตโดยหวังว่าข้อผิดพลาดจะหายไป

รายการ 1

ตัวอย่างของไฟล์ boot.ini ทั่วไป


หมดเวลา=30

หลาย(0)ดิสก์(0)rdisk(0)พาร์ติชัน(1)\WINNT="Windows 2000 Pro" /fastdetect /SOS

รายการ 2

เรากำหนดค่าระบบให้ใช้โปรเซสเซอร์เพียงตัวเดียวจากทั้งหมดที่มีอยู่


หมดเวลา=30
ค่าเริ่มต้น = หลาย (0) ดิสก์ (0) rdisk (0) พาร์ติชัน (1) \ WINNT
หลาย(0)ดิสก์(0)rdisk(0)พาร์ติชัน(1)\WINNT="Windows 2000 Pro" /fastdetect /SOS /ONECPU

แต่บน หน้าต่าง วิสต้าไม่มีไฟล์ boot.ini และในขณะที่มีตัวเลือก (ชั่วคราว) เพื่อกำหนดการตั้งค่าการบู๊ตด้วยยูทิลิตี้ Microsoft วางแผนที่จะกำจัดช่องโหว่นี้ทั้งหมด เหลือเพียงการตั้งค่า BIOS อย่างไรก็ตามในเรื่อง วิสต้าเมื่อถึงเวลาที่พวกเขาเปลี่ยนมาใช้ นักพัฒนาไดรเวอร์มักจะได้รับเครื่องที่มีโปรเซสเซอร์หลายตัว (เนื่องจากจะไม่มีตัวอื่นวางจำหน่าย) และจะทดสอบการสร้างสรรค์ของพวกเขาในสภาพแวดล้อมที่มีตัวประมวลผลหลายตัว

อีกจุดที่ละเอียดอ่อน โปรดจำไว้ว่าเราได้กล่าวไว้ข้างต้นว่าข้อผิดพลาดที่พบบ่อยที่สุดที่เกิดขึ้นโดยนักพัฒนาไดรเวอร์คือการเข้าถึงหน่วยความจำที่จองไว้ล่วงหน้าที่ระดับ IRQL ซึ่งตัวจัดการ swap ไม่ทำงาน และหากหน้าที่ขอไม่อยู่ในหน่วยความจำ ทางออกที่ชัดเจนในที่นี้คือการเพิ่มขึ้น หน่วยความจำเข้าถึงโดยสุ่มจนถึงปริมาณที่การแทนที่ของเพจไปยังดิสก์จะไม่เกิดขึ้นจริง ในราคาปัจจุบันสำหรับหน่วยความจำเกือบทุกคนสามารถซื้อ "ลูกเต๋า" ใหม่สองสามอันได้ แต่มีวิธีแก้ปัญหาที่สามารถเข้าถึงได้มากขึ้น (และสวยงามกว่า) ถ้าพารามิเตอร์ ปิดการใช้งาน PagingExecutiveซึ่งอยู่ในสาขารีจิสทรีต่อไปนี้ HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\MemoryManagement, เท่ากับหนึ่ง (ศูนย์ตามค่าเริ่มต้น) ส่วนประกอบนิวเคลียร์จะไม่ถูกแทนที่ ดังนั้นเราจึงเปิด "Registry Editor" เปลี่ยนพารามิเตอร์ที่มีค่านี้และรีบูต (การเปลี่ยนแปลงจะมีผลหลังจากรีบูตเท่านั้น) โดยหวังว่าสิ่งนี้จะช่วยแก้ปัญหาความล้มเหลวได้


บางครั้งข้อผิดพลาดหน้าจอสีน้ำเงิน DRIVER_VERIFIER_DETECTED_VIOLATION ที่เกี่ยวข้องกับฮาร์ดแวร์อาจเกิดจากความเสียหายของหน่วยความจำ (RAM) หากคุณพบการรีสตาร์ทคอมพิวเตอร์แบบสุ่ม สัญญาณเสียงเมื่อบูทเครื่องหรือคอมพิวเตอร์เครื่องอื่นทำงานผิดปกติ (นอกเหนือจากข้อผิดพลาด BSOD 0xC4) มีโอกาสสูงที่หน่วยความจำจะเสียหาย อันที่จริงแล้ว เกือบ 10% ของแอพพลิเคชั่น Windows ล่มเกิดจากหน่วยความจำเสียหาย

หากคุณเพิ่งเพิ่มหน่วยความจำใหม่ลงในคอมพิวเตอร์ของคุณ เราขอแนะนำให้ลบออกชั่วคราวเพื่อให้แน่ใจว่าไม่ได้ทำให้เกิดข้อผิดพลาด DRIVER_VERIFIER_DETECTED_VIOLATION หากการดำเนินการนี้แก้ไข BSOD แสดงว่านั่นคือต้นตอของปัญหา ดังนั้นหน่วยความจำใหม่จึงเข้ากันไม่ได้กับฮาร์ดแวร์บางส่วนของคุณหรือเสียหาย ในกรณีนี้ คุณจะต้องเปลี่ยนโมดูลหน่วยความจำใหม่

หากคุณยังไม่ได้เพิ่มหน่วยความจำใหม่ ขั้นตอนต่อไปคือเรียกใช้การทดสอบวินิจฉัยหน่วยความจำที่มีอยู่ของคอมพิวเตอร์ของคุณ การทดสอบหน่วยความจำช่วยให้คุณสแกนหาความล้มเหลวของหน่วยความจำอย่างรุนแรงและข้อผิดพลาดเป็นระยะๆ ซึ่งอาจทำให้หน้าจอสีน้ำเงินแห่งความตาย 0xC4 ของคุณ

แม้ว่าสุดท้าย รุ่นของ Windowsมียูทิลิตี้ทดสอบ RAM ฉันขอแนะนำให้ใช้ Memtest86 แทน Memtest86 เป็นการทดสอบ ซอฟต์แวร์ขึ้นอยู่กับ BIOS ซึ่งแตกต่างจากโปรแกรมทดสอบอื่น ๆ ที่ทำงาน สภาพแวดล้อมของ Windows. ข้อดีของวิธีการนี้คือ ยูทิลิตีนี้ช่วยให้คุณตรวจสอบหน่วยความจำปฏิบัติการทั้งหมดเพื่อหาข้อผิดพลาด DRIVER_VERIFIER_DETECTED_VIOLATION ในขณะที่โปรแกรมอื่นๆ ไม่สามารถตรวจสอบพื้นที่หน่วยความจำที่ตัวโปรแกรมเอง ระบบปฏิบัติการ และโปรแกรมที่กำลังทำงานอยู่อื่นๆ ครอบครอง

ในกรณีดังกล่าวเพื่อตรวจสอบว่าไดรเวอร์ทำงานอย่างไรใน Windows XP มี ยูทิลิตี้พิเศษ ตรวจสอบ. exe. คุณประโยชน์ คนขับรถ ผู้ตรวจสอบ, สร้างเงื่อนไขที่รุนแรงที่สุดสำหรับไดรเวอร์ซึ่งมีความเป็นไปได้สูงที่จะล้มเหลว และชื่อของไดรเวอร์ที่ล้มเหลวจะถูกกำหนดด้วยความแม่นยำสูงสุด ดังนั้นในกรณีที่ระบบล้มเหลว การรันยูทิลิตี้จึงมีประโยชน์ คนขับรถ ผู้ตรวจสอบexeไม่จำเป็นต้องดาวน์โหลด Verifier เนื่องจากยูทิลิตี้นี้มาพร้อมกับ Windows และอยู่ในไดเร็กทอรี Windows\system32


1 ร่วมงานกับ ผู้ตรวจสอบexe

1.1. วิ่งกันเถอะ ตรวจสอบ. exeเริ่ม - เรียกใช้ - ตรวจสอบexe:

1.3. คุณประโยชน์ คนขับรถ ผู้ตรวจสอบexeจะขอรีบูต:



1.4. พารามิเตอร์ใหม่สองตัวจะปรากฏในรีจิสทรี:


-- HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\VerifyDriverLevel

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\VerifyDrivers


การตั้งค่ารีจิสทรีที่เกี่ยวข้องกับ คนขับรถ ผู้ตรวจสอบexe

2 ผลการทดสอบ

2.1. หากอยู่ในหน้าต่างแรกของโปรแกรมอรรถประโยชน์ คนขับรถ ผู้ตรวจสอบexeเลือก "แสดงข้อมูลเกี่ยวกับไดรเวอร์ที่ทดสอบในปัจจุบัน"จากนั้นจะปรากฏหน้าต่างแบบนี้ มันแสดงให้เห็นว่ามีการตรวจสอบไดรเวอร์ใดและไม่ได้ตรวจสอบ การกด "ไกลออกไป"คุณสามารถดูข้อมูลอื่นๆ เกี่ยวกับไดรเวอร์ที่ผ่านการทดสอบ:



2.2. อันเป็นผลมาจากการตรวจสอบไดรเวอร์ด้วยยูทิลิตี้ คนขับรถ ผู้ตรวจสอบexeเป็นไปได้ที่ระบบจะล่มใน. เมื่อเกิดข้อผิดพลาดขณะตรวจสอบไดรเวอร์ ลักษณะของ ข้อผิดพลาดของระบบและ . รหัสทั่วไปและรหัสข้อผิดพลาดแสดงอยู่ด้านล่าง

0xC1: SPECIAL_POOL_DETECTED_MEMORY_CORRUPTION
0xC4: DRIVER_VERIFIER_DETECTED_VIOLATION
0xC6: DRIVER_CAUGHT_MODIFYING_FREED_POOL
0xC9: DRIVER_VERIFIER_IOMANAGER_VIOLATION
0xD6: DRIVER_PAGE_FAULT_BEYOND_END_OF_ALLOCATION
0xE6: DRIVER_VERIFIER_DMA_VIOLATION


2.3. ตัวอย่างการถอดรหัสดัมพ์โดยโปรแกรม :


3. ลิงค์ที่มีประโยชน์

ยูทิลิตี้ที่เราจะอธิบายในวันนี้เรียกว่า Driver Verifier และรวมอยู่ในทั้งหมด ระบบปฏิบัติการรวมถึง Windows XP โปรแกรมนี้ช่วยให้คุณตรวจสอบและระบุปัญหาที่อาจเป็นอันตรายต่อระบบอย่างมาก ปัญหาที่มีชื่อเสียงที่สุดคือหน้าจอสีน้ำเงินแห่งความตาย

ข้อมูลเกี่ยวกับไดรเวอร์ดังกล่าวจะถูกบันทึกไว้ในการถ่ายโอนข้อมูลหน่วยความจำเพื่อให้สามารถทำการวิเคราะห์ในภายหลังได้ ดังนั้นยูทิลิตีนี้จึงเปิดเผยไดรเวอร์ไปยังสิ่งที่เรียกว่าสถานการณ์ที่ตึงเครียด (การทดสอบ) สร้างสภาวะที่รุนแรงทางสายตา เช่น หน่วยความจำไม่เพียงพอ การล็อกต่างๆ IRQL การตรวจสอบ IRP DMA เป็นต้น I / O - การควบคุม กล่าวอีกนัยหนึ่งมีการเลียนแบบสถานการณ์ที่รุนแรงเช่นนี้ซึ่งไม่ควรเกิดขึ้นระหว่างการทำงานปกติกับ Windows หรือไม่เกิดขึ้นบ่อยนัก ดังนั้นยูทิลิตี้นี้จึงช่วยให้คุณระบุไดรเวอร์ดังกล่าวที่อาจนำไปสู่การปิดระบบในกรณีฉุกเฉิน

ดังที่ฉันได้กล่าวไปแล้ว ยูทิลิตี้นี้มีอยู่ใน Windows ทุกรุ่นและตั้งอยู่ตามเส้นทาง %windir%\system32. นอกจากนี้ยังสามารถใช้ยูทิลิตีในสองเวอร์ชัน: บรรทัดคำสั่งและอินเทอร์เฟซแบบกราฟิก

ดังนั้นในการเรียกใช้ยูทิลิตี้สำหรับตรวจสอบไดรเวอร์จึงจำเป็นในหน้าต่าง "วิ่ง"พิมพ์คำสั่งต่อไปนี้:

ผู้ตรวจสอบ

หน้าต่างจะเปิดขึ้นพร้อมกับการตั้งค่าที่จำเป็นซึ่งเราเลือกรายการที่สอง - "สร้างตัวเลือกที่กำหนดเอง"หรือ "สร้างการตั้งค่าแบบกำหนดเอง".

ตอนนี้เราต้องจัดเรียงเนื้อหาสำหรับสิ่งนี้ที่ด้านบนของตารางให้คลิกที่คำ ผู้ให้บริการ. ตอนนี้คุณสามารถเลือกไดรเวอร์ทั้งหมดได้แล้ว อย่างไรก็ตาม ไม่สามารถเลือกไดรเวอร์จาก Microsoft ได้

ตอนนี้คุณสามารถกดปุ่ม เสร็จจากนั้นคุณจะถูกขอให้รีบูตระบบ

ดังนั้นการรีบูตจึงผ่านไป ตอนนี้ระบบจะบู๊ตในโหมดตรวจสอบไดรเวอร์ ยูทิลิตีจะทำงานในพื้นหลัง ทำการทดสอบต่างๆ คุณสามารถทำงานที่คอมพิวเตอร์ได้อย่างปลอดภัยจนกว่าจะสิ้นสุดยูทิลิตี้ หลังเลิกงาน, ไฟล์ข้อมูลบันทึกไว้ในการถ่ายโอนข้อมูลหน่วยความจำ ไฟล์ดังกล่าวมักจะอยู่ตามเส้นทาง: C:\Windows\Minidump\*.dmp. ตอนนี้สามารถวิเคราะห์ได้ เช่น ใช้ Windbg หรือโปรแกรมอื่นที่คล้ายกัน

หากภายในสองสามวันปรากฎว่าปัญหาไม่เกิดขึ้นอีก เราสามารถพูดได้ว่าเรื่องนี้ไม่ได้อยู่ที่ไดรเวอร์เลย และคุณจะต้องค้นหาสาเหตุจากที่อื่น ระหว่างนี้เราก็ปิดโหมดตรวจสอบคนขับได้แล้ว ฉันอยากจะบอกทันทีว่าโหมดนี้ทำให้ระบบช้าลงอย่างมาก ดังนั้นจึงไม่แนะนำให้ใช้งานบ่อยๆ

คุณสามารถปิดการใช้งานยูทิลิตี้ได้ดังนี้: บรรทัดคำสั่งป้อนคำสั่งต่อไปนี้:

นั่นคือทั้งหมด ฉันหวังว่าบทความนี้จะช่วยคุณแก้ปัญหาของคุณได้



กำลังโหลด...
สูงสุด