หากคุณเป็นผู้ที่ใช้งาน ระบบปฏิบัติการ Windows แล้วบอกว่าตัวเองไม่เคยสัมผัสประสบการณ์ หน้าจอฟ้ามรณะ หรือที่เรียกกันว่า Blue Screen of Death (BSoD) บอกได้เลยว่าคุณนั้นยังใช้งานระบบปฏิบัติการ Windows ได้ไม่ครบทุกฟังก์ชัน
Blue Screen of Death (BSoD) เป็นสิ่งที่ทุกคนกลัวไม่อยากให้เกิดกับคอมพิวเตอร์ของตนเอง เพราะมันเป็นสัญญาณอันตรายที่บ่งบอกว่าซอฟต์แวร์ หรือฮาร์ดแวร์ของคอมพิวเตอร์ที่คุณใช้อยู่กำลังเริ่มมีปัญหาแล้ว
แต่ไม่ว่าจะอย่างไร ? หากเจอแล้วก็อย่ามัวแต่เสียเวลาตกใจ เมื่อหน้าจอเข้าสู่ BSoD ตัวระบบปฏิบัติการ Windows จะมีการแจ้งเตือนข้อผิดพลาดเป็นรหัส เพื่อบอกให้รู้ถึงอาการ และสาเหตุคร่าว ๆ ให้เรานำมาใช้แก้ปัญหาได้
อย่างไรก็ดี ก็ไม่รู้ว่าทำไม ทาง Microsoft ไม่ยอมบอกเป็นประโยคธรรมดาที่เข้าใจง่าย แต่เลือกใช้รหัสเป็นตัวเลข และตัวอักษรที่ไม่มีความหมาย ในบทความนี้เราก็จะมาอธิบายว่ารหัสไหน หมายถึงอะไร ? และจะมีวิธีการแก้ไขปัญหาได้อย่างไร ?
ภาพจาก : https://www.anyrecover.com/tips/attempted-write-to-readonly-memory/
ปัญหานี้มักเกิดจากการที่ไดร์เวอร์พยายามที่จะเขียนข้อมูลลงบนหน่วยความจำ ที่ถูกกำหนดเอาไว้ให้เป็นแบบอ่านข้อมูลได้เพียงอย่างเดียว (Read-only) หากระบบตรวจสอบแล้วพบว่าไดร์เวอร์เป็นสาเหตุของการกระทำดังกล่าว ก็จะแจ้งเตือนข้อความ BSoD ในทันที
ภาพจาก : https://www.deskdecode.com/bad-pool-caller-0x000000c2/
Bad Pool Caller (error code 0x000000C2) เป็นปัญหาที่ผู้ใช้งานหลายคนพบเจอหลังจากที่อัปเดตเป็นระบบปฏิบัติการ Windows 10 โดยสาเหตุเกิดจากการที่หน่วยความจำทำงานผิดพลาด ไม่ก็ซอฟต์แวร์ หรือฮาร์ดแวร์เกิดปัญหาด้านความเข้ากันได้ ส่งผลให้มีการเรียกใช้หน่วยความจำ หรือทรัพยากรผิดพลาด
นอกจากมันจะทำให้เกิด BSoD แล้ว มันยังส่งผลให้กราฟิกแสดงผลผิดพลาด, รีบูตลูป, 100% Disk usage ฯลฯ ได้อีกด้วย
0x2E - DATA_BUS_ERROR เป็นข้อผิดพลาดหนึ่งที่สามารถพบเจอได้ในระบบปฏิบัติการ Windows ซึ่งจัดว่าเป็นปัญหาที่ค่อนข้างร้ายแรงอยู่พอสมควร เพราะมันจะมาคู่กับ 0x0000002E ที่จะบังคับให้รีสตาร์ทเครื่องทันที โดยไม่สามารถทำอย่างอื่นได้เลย งานที่กำลังทำค้างไว้อยู่ก็ไม่สามารถบันทึกข้อมูลก่อนได้
สาเหตุที่ทำให้เกิด 0x2E - DATA_BUS_ERROR นั้น โดยปกติแล้วก็มาจากมีการทำงานที่ผิดปกติใน ฮาร์ดแวร์คอมพิวเตอร์ (Computer Hardware) , ไดร์เวอร์ (Driver) หรือไม่ก็หน่วยความจำ (Memory)
ภาพจาก : https://neosmart.net/wiki/irql-not-less-or-equal/
ข้อผิดพลาด DRIVER_IRQL_NOT_LESS_OR_EQUAL นั้นเกี่ยวข้องกับการทำงานระบบไดร์เวอร์ และมี Stop code คือ 0x000000D1 ที่บ่งชี้ว่า Kernel-mode Driver พยายามเข้าถึงหน่วยความจำในขณะที่การประมวลผล IRQL นั้นสูงเกินไป
โดยเมื่อฮาร์ดแวร์ต้องการบอกไปยัง หน่วยประมวลผลกลาง (CPU) ว่า "เฮ้ พวกมีเรื่องแบบนี้ แบบนั้นเกิดขึ้นนะ" ซึ่งความจริง CPU ก็ออกแบบมาให้ทำงานแบบมัลติทาสก์ได้แหละ แต่บางครั้งถ้ามีฮาร์ดแวร์จำนวนมากทักไปหา CPU ในเวลาเดียวกัน มันก็อาจจะทำให้เกิดข้อผิดพลาดขึ้นได้ เรียกว่า "Interrupt Request Level (IRQL)"
การสื่อสารระหว่างฮาร์ดแวร์จะมีไดร์เวอร์เป็นตัวช่วย ดังนั้น เมื่อไดร์เวอร์พยายามช่วยฮาร์ดแวร์ให้เข้าถึงหน่วยความจำระบบที่ต้องการใช้งาน แต่เข้าถึงไม่ได้ เพราะ CPU กำลังประมวลผลอย่างอื่นอยู่ เลยยังไม่ได้เตรียมข้อมูลที่จำเป็นเอาไว้ให้ ระบบก็จะแครชเกิด BSOD - DRIVER_IRQL_NOT_LESS_OR_EQUAL นั่นเอง
ภาพจาก : https://windowsreport.com/driver-power-state-failure-windows-10-nvidia-ssd/
สาเหตุของข้อความข้อผิดพลาด DRIVER_POWER_STATE_FAILURE เกิดจากการที่ Network Driver Interface Specification ไม่สามารถจัดการกับการร้องขอการเปลี่ยนสถานะการใช้พลังงานได้อย่างถูกต้อง ซึ่งปัญหาดังกล่าวสามารถแก้ได้โดยการอัปเดตระบบปฏิบัติการ Windows เเละการอัปเดตไดร์เวอร์
สาเหตุของการเกิด 0X000000CE Driver Unloaded Without Cancelling Pending Operations นั้นก็ตรงตามที่มันบอกเลย โดยเกิดจากการที่ไดร์เวอร์นั้นถูก "ยกเลิก" การดาวน์โหลดในขณะที่การดำเนินการอื่นที่เรียกใช้งานไดร์เวอร์ดังกล่าวยังไม่ถูกยกเลิก ซึ่งสถานการณ์ดังกล่าวสามารถเกิดขึ้นได้เมื่อการดำเนินงานยังอยู่ในช่วงระหว่างรอคิว และยังทำงานไม่เสร็จ
ในหลายกรณี ข้อผิดพลาดนี้ก็เกิดขึ้นเมื่อไม่ได้รับการติดตั้ง Windows updates เวอร์ชันล่าสุดได้เช่นกัน เพราะมันจะมาพร้อมกับการแก้ไขข้อผิดพลาดต่าง ๆ ด้วย
ปัญหานี้เกิดขึ้นจากการที่ ส่วนประกอบหลักของระบบปฏิบัติการ หรือ เคอร์เนล (Kernel) ตรวจพบ Interupt Storm โดย Interrupt Storm นั้นหมายถึงสัญญาณการถูกขัดจังหวะที่เกิดขึ้นในสถานะยืนยัน ทำให้ระบบหยุดทำงานในทันที หรือที่เรียกว่า "Bus Lock" โดยมักเกิดขึ้นได้จากสาเหตุดังต่อไปนี้
ภาพจาก : https://neosmart.net/wiki/0x0000007b/
ภาพจาก : https://neosmart.net/wiki/0x0000007a-kernel-data-inpage-error/
มีความเป็นไปได้จากสองเหตุการณ์ต่อไปนี้ ไม่อันใดก็อันหนึ่ง หรือทั้งคู่เลย
ภาพจาก : https://neosmart.net/wiki/0x0000001e-kmode-exception-not-handled/
0X00000079 (Mismatched Hal) เกิดขึ้นได้เมื่อผู้ใช้พยายามอัปเดต Ntoskrnl.exe หรือ Hal.dll ด้วยตนเอง ซึ่งหากมันถูกตรวจพบว่าไฟล์ใดไฟล์หนึ่งไม่ได้รับการอัปเดตเป็นไฟล์เวอร์ชันล่าสุด หรือผิดเวอร์ชัน
Ntoskrnl.exe เป็นไฟล์ Kernel ของระบบที่ใช้ชิปประมวลผลเดี่ยว ส่วน Ntkrnlmp.exe เป็นของระบบที่ใช้ชิปประมวลผลหลายตัว อย่างไรก็ตาม เมื่อระบบปฏิบัติการ Windows ถูกติดตั้ง ทั้งคู่จะถูกเปลี่ยนชื่อเป็น Ntoskrnl.exe ส่วนไฟล์ Hal ก็จะเปลี่ยนเป็น Hal.dll ซึ่งไฟล์พวกนี้มีหลายเวอร์ชัน เราอาจได้เวอร์ชันที่ไม่ถูกต้องหากติดตั้งระบบปฏิบัติการ Windows จากตัวติดตั้งเวอร์ชันเก่า
โดนส่วนใหญ่แล้ว ปัญหานี้ไม่ได้เกิดจากการที่ระบบไม่มี PTEs เพียงพอ แต่เป็นเพราะไดร์เวอร์มีการส่งคำร้องหน่วยความจำเป็น Block ขนาดใหญ่ แต่ว่าบนหน่วยความจำไม่มีพื้นที่ว่างติดกันมากพอสำหรับ Block ที่ใหญ่ขนาดนั้น
ซึ่งมักเกิดขึ้นกับไดร์เวอร์ของวิดีโอ หรือซอฟต์แวร์สำรองข้อมูล ที่ต้องการใช้หน่วยความจำขนาดใหญ่
ปัญหานี้มักเกิดขึ้นเวลาที่คอมพิวเตอร์ทำงานหนัก จนทรัพยากรในการทำงานไม่เพียงพอ โดยค่าที่อยู่ของหน่วยความจำ (Memory Address) อาจเกิดความผิดพลาดขึ้น อาจจะที่อยู่ผิด หรือถูกชี้ไปยังพื้นที่ว่าง, ฮาร์ดแวร์ชำรุด, ไฟล์ระบบเกิดความผิดพลาด, ถูกรบกวนจากซอฟต์แวร์ป้องกันไวรัส หรือข้อมูลของ ระบบไฟล์ NTFS เกิดความเสียหายขึ้น
มีข้อผิดพลาด หรือความเสียหายเกิดขึ้นกับไดร์เวอร์ หรือไฟล์ระบบ ทำให้ระบบตรวจสอบไฟล์ไม่สามารถทำการ Checksum ได้ค่าไม่ตรงกับค่าที่ต้องการ และอาจเกิดขึ้นจากเส้นทางข้อมูล I/O ที่ฮาร์ดแวร์ใช้ก็ได้ เช่น Disk Error, RAM พัง หรือไฟล์ Pages เสียหาย ก็เป็นได้
ภาพจาก : https://neosmart.net/wiki/0x0000007f-unexpected-kernel-mode-trap/
หากตกหล่นรหัสอันไหนไป เวลาที่เจอ BSoD ให้รีบหยิบมือถือขึ้นมาสแกน QR Code ดูครับ มันจะพาเราไปยังหน้าช่วยเหลือของ Microsoft ทันที เพื่อบอกสาเหตุ และแนวทางในการแก้ไข