Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> ระบบ >> Windows

ปัญหาฟังก์ชัน CreateWindowEx สำหรับแอป 32-bit ใน Windows 10

ในบางกรณี หลังอัปเกรดเป็น Windows 10 เวอร์ชันใหม่ จะเกิดข้อผิดพลาดหรือปัญหาอื่นๆ เมื่อเรียกฟังก์ชัน CreateWindowEx จาก msctf.dll ขณะสร้างหน้าต่างในแอปพลิเคชัน 32-bit บางตัว บทความนี้จะอธิบายว่าฟังก์ชัน CreateWindowEx คืออะไร สาเหตุที่เป็นไปได้ของข้อผิดพลาด และวิธีแก้ไขที่แนะนำ

ทำความเข้าใจฟังก์ชัน CreateWindowEx

ปัญหาฟังก์ชัน CreateWindowEx สำหรับแอป 32-bit ใน Windows 10

แอปพลิเคชัน Windows รวมถึงแอป .NET ที่ใช้ Windows Forms หรือ WPF สร้างหน้าต่างโดยการเรียกฟังก์ชัน CreateWindowExA หรือ CreateWindowExW

ทั้งสองฟังก์ชันเรียกฟังก์ชัน USER32 ร่วมกันซึ่งจะตรวจสอบพารามิเตอร์ เช่น สไตล์หน้าต่างและแฮนด์ที่ระบุ การสร้างหน้าต่างลูก MDI หากระบุสไตล์ขยาย WS_EX_MDICHILD และประมวลผลบริบทการเปิดใช้งานปัจจุบันสำหรับเธรดที่เรียก หากทุกอย่างดีในฝั่ง USER32 ของการเรียก CreateWindowEx จะเรียกไปที่การใช้งานโหมดเคอร์เนล (WIN32K) ของ CreateWindowEx

CreateWindowEx จะดำเนินการต่อไปนี้เมื่อพยายามสร้างออบเจกต์หน้าต่างใหม่:

  • ตรวจสอบว่าการสร้างแฮนด์สำหรับออบเจกต์หน้าต่างใหม่จะเกินโควต้าแฮนด์ผู้ใช้สำหรับกระบวนการที่เรียกหรือไม่
  • จัดสรรหน่วยความจำสำหรับออบเจกต์หน้าต่างใหม่จากฮีปของเดสก์ท็อป
  • เริ่มต้นหน่วยความจำสำหรับออบเจกต์หน้าต่างใหม่
  • สร้างแฮนด์สำหรับออบเจกต์หน้าต่างใหม่ในตารางแฮนด์ผู้ใช้

สาเหตุของความล้มเหลวของ CreateWindowEx

เงื่อนไขบางอย่างที่สามารถกระตุ้นปัญหาฟังก์ชัน CreateWindowEx ได้แก่:

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

แก้ไขปัญหาฟังก์ชัน CreateWindowEx สำหรับแอป 32-bit ใน Windows 10

Microsoft ได้เสนอวิธีแก้ปัญหาชั่วคราวสำหรับปัญหาฟังก์ชัน CreateWindowEx

เพื่อแก้ปัญหานี้ ต้องย้อนกลับการติดตั้ง Windows 10 เป็นเวอร์ชันก่อนหน้า

ตัวเลือกย้อนกลับใน Windows 10 พร้อมใช้งานเป็นเวลา 10 วัน (ในกรณีส่วนใหญ่) หลังจากอัปเกรด Windows 10

การดำเนินการนี้เก็บไฟล์ส่วนตัวไว้ แต่ลบแอปพลิเคชันและไดรเวอร์ที่ติดตั้งหลังอัปเกรด และย้อนกลับการเปลี่ยนแปลงการตั้งค่า

หากตัวเลือกย้อนกลับไม่พร้อมใช้งาน – ให้สำรองไฟล์ส่วนตัว แล้วติดต่อฝ่ายสนับสนุน IT หรือ Microsoft Support เพื่อช่วยกู้คืนอุปกรณ์เป็น Windows 10 เวอร์ชันก่อนหน้า

แค่นี้ก็จบ!

หมายเหตุ: Microsoft กำลังทำงานหาวิธีแก้ไขและจะให้การอัปเดตใน Windows 10 รุ่นหน้า