ในบางกรณี หลังจากอัปเกรดเป็นเวอร์ชันที่ใหม่กว่า Windows 10 จะทำให้เกิดปัญหาหรือปัญหาอื่นๆ เมื่อเรียกใช้ CreateWindowEx ฟังก์ชันจาก msctf.dll เมื่อ windows ถูกสร้างขึ้นในแอพพลิเคชั่น 32 บิตบางตัว ในบทความนี้ เราจะมาทำความเข้าใจว่า CreateWindowEx ฟังก์ชันคือ – สำรวจสาเหตุที่เป็นไปได้ของข้อผิดพลาดของฟังก์ชันนี้ จากนั้นให้วิธีแก้ไขปัญหาที่แนะนำเพื่อลดปัญหา
ทำความเข้าใจเกี่ยวกับฟังก์ชัน CreateWindowEx
แอปพลิเคชัน Windows รวมถึงแอปพลิเคชัน .NET ที่ใช้ Windows Forms หรือ Windows Presentation Foundation (WPF) สร้างหน้าต่างโดยการเรียก CreateWindowExA หรือ CreateWindowExW ฟังก์ชัน
ทั้งสองฟังก์ชันภายในเรียก USER32 . ทั่วไป ฟังก์ชันที่จะทำการตรวจสอบพารามิเตอร์บางอย่าง เช่น รูปแบบหน้าต่างและหมายเลขอ้างอิงที่ระบุในการเรียก จัดการการสร้างหน้าต่างลูก MDI หาก WS_EX_MDICHILD มีการระบุลักษณะหน้าต่างแบบขยายและประมวลผลบริบทการเปิดใช้งานปัจจุบันสำหรับเธรดที่เรียก ถ้าทุกอย่างเรียบร้อยดีใน USER32-side ของการเรียก CreateWindowEx จากนั้นจะเรียกเข้าสู่การใช้งานโหมดเคอร์เนล (WIN32K) ของ CreateWindowEx
CreateWindowEx จะทำงานต่อไปนี้เมื่อพยายามสร้างวัตถุหน้าต่างใหม่:
- กำหนดว่าการสร้างแฮนเดิลสำหรับออบเจ็กต์หน้าต่างใหม่จะเกินขีดจำกัดโควตาจัดการผู้ใช้สำหรับกระบวนการโทรหรือไม่
- จัดสรรหน่วยความจำสำหรับวัตถุหน้าต่างใหม่จากฮีปของเดสก์ท็อป
- เริ่มต้นหน่วยความจำสำหรับวัตถุหน้าต่างใหม่
- สร้างหมายเลขอ้างอิงสำหรับวัตถุหน้าต่างใหม่ในตารางหมายเลขอ้างอิงของผู้ใช้
สาเหตุของความล้มเหลวของ CreateWindowEx
เงื่อนไขบางประการที่สามารถทำให้เกิดปัญหาฟังก์ชัน CreateWindowEx ถูกระบุดังนี้:
- ไม่มีคลาสหน้าต่างที่ระบุ
- การใช้รูปแบบหน้าต่างที่ไม่ถูกต้องหรือรูปแบบหน้าต่างแบบขยาย
- การใช้หมายเลขอ้างอิงผู้ใช้ที่ไม่ถูกต้อง เช่น หมายเลขอ้างอิงหน้าต่างและหมายเลขอ้างอิงเมนู
- พยายามสร้างหน้าต่างย่อยโดยไม่ระบุหน้าต่างหลัก
- ความพยายามที่จะสร้างหน้าต่างย่อยหรือหน้าต่างที่เป็นเจ้าของ และพาเรนต์/เจ้าของที่ระบุเป็นของเดสก์ท็อปที่แตกต่างจากเธรดที่เรียก
- การสร้างลูกหรือหน้าต่างที่เป็นเจ้าของจะเกินขีดจำกัดหน้าต่างที่ซ้อนกัน
- การสร้างวัตถุหน้าต่างใหม่จะเกินโควตาหมายเลขอ้างอิงสำหรับกระบวนการโทร
- มีฮีปไม่เพียงพอในฮีปของเดสก์ท็อปในการจัดสรรหน่วยความจำสำหรับออบเจ็กต์หน้าต่างใหม่
- ไม่มีรายการที่พร้อมใช้งานในตารางจัดการผู้ใช้
แก้ไขปัญหาฟังก์ชัน CreateWindowEx สำหรับแอป 32 บิตใน Windows 10
Microsoft ได้จัดเตรียมวิธีแก้ปัญหาเกี่ยวกับฟังก์ชัน CreateWindowEx
ในการแก้ไขปัญหานี้ คุณจะต้องย้อนกลับการติดตั้ง Windows 10 ไปเป็นเวอร์ชันก่อนหน้า
ตัวเลือกย้อนกลับใน Windows 10 ใช้งานได้ 10 วัน (โดยส่วนใหญ่) หลังจากคุณอัปเกรดการติดตั้ง Windows 10 แล้ว
การดำเนินการนี้จะเก็บไฟล์ส่วนบุคคลของคุณ แต่จะลบแอปพลิเคชันและไดรเวอร์ที่ติดตั้งหลังจากการอัปเกรด และยังย้อนกลับการเปลี่ยนแปลงใดๆ ที่คุณทำกับการตั้งค่า
หากไม่มีตัวเลือกย้อนกลับ – สำรองไฟล์ส่วนบุคคลของคุณ คุณสามารถติดต่อฝ่ายสนับสนุนด้านไอทีหรือฝ่ายช่วยเหลือหรือฝ่ายสนับสนุนของ Microsoft เพื่อขอความช่วยเหลือในการกู้คืนอุปกรณ์ของคุณเป็น Window 10 เวอร์ชันก่อนหน้า
แค่นั้นแหละ!
ป.ล. :Microsoft กำลังทำงานในการแก้ปัญหาและจะจัดเตรียมการอัปเดตใน Windows 10 ที่ออกวางจำหน่ายเร็วๆ นี้