Проблеми с функцията CreateWindowEx за 32-битови приложения в Windows 10

В някои случаи, след надграждане до по-нова версия, Windows 10 причинява сривове или други проблеми, когато извиква функцията CreateWindowEx от msctf.dll , когато прозорците се създават в някои 32-битови приложения. В тази публикация ще разберем какво представлява  функцията CreateWindowEx – проучете възможните причини за тази грешка във функцията и след това ще предоставите препоръчителното решение за смекчаване на проблема.

Разбиране на функцията CreateWindowEx

Функция CreateWindowEx

Приложенията за Windows(Windows) , включително .NET приложения, които използват Windows Forms или Windows Presentation Foundation ( WPF ), създават своите прозорци чрез извикване на функциите CreateWindowExA(CreateWindowExA) или CreateWindowExW .

И двете функции вътрешно извикват обща функция USER32 , която ще извърши проверка на някои параметри, като например стиловете на прозорците и манипулаторите, посочени в повикването, обработва създаването на MDI дъщерен прозорец, ако е посочен стилът на разширения прозорец WS_EX_MDICHILD и обработва текущия контекст за активиране за извикването конец. Ако всичко е наред от страната(USER32-side) на USER32(CreateWindowEx) на извикването CreateWindowEx, то след това извиква реализацията на CreateWindowEx в режим на ядрото ( (CreateWindowEx)WIN32K ) .

CreateWindowEx ще изпълнява следните задачи, когато се опитва да създаде нов обект на прозорец:

  • Определете дали създаването на манипулатор за новия обект на прозореца ще надхвърли  ограничението на квотата за манипулатор на потребителя за процеса на извикване.(User)
  • Разпределя памет за новия обект на прозореца от купчината на работния плот.
  • Инициализира паметта за новия обект на прозореца.
  • Създава манипулатор за новия обект на прозореца в таблицата User handle.(User)

Причини за неуспехите на CreateWindowEx

Някои условия, които могат да задействат проблема с функцията CreateWindowEx , са изброени по следния начин:

  • Посоченият клас на прозореца не съществува.
  • Използване на невалидни стилове на прозорци или разширени стилове на прозорци.
  • Използване на невалидни потребителски(User) манипулатори, като дръжки на прозорци и дръжки на менюта.
  • Опит за създаване на дъщерен прозорец без посочване на родителски прозорец.
  • Опит за създаване на дъщерен прозорец или собствен прозорец и посоченият родител/собственик принадлежи към различен работен плот от извикващата нишка.
  • Създаването на дъщерен или притежаван прозорец ще надхвърли ограничението за вложени прозорци.
  • Създаването на нов обект прозорец ще надхвърли квотата за манипулации за процеса на извикване.
  • В купчината на работния плот няма достатъчно налична памет, за да се разпредели памет за новия обект прозорец.
  • Няма налични записи в таблицата с потребителски(User) манипулатори.

Поправете проблеми(Fix CreateWindowEx) с функцията CreateWindowEx за 32-битови приложения в Windows 10

Microsoft предостави решение за проблеми с функцията CreateWindowEx .

За да заобиколите този проблем, ще трябва да върнете инсталацията на Windows 10 до предишната версия.

Опцията за връщане назад в Windows 10 е налична за 10 дни(10 days) (в повечето случаи), след като сте надстроили вашата инсталация на Windows 10.

Тази операция запазва вашите лични файлове, но премахва приложенията и драйверите, които са били инсталирани след надстройката, и също така отменя всички промени, които сте направили в настройките.

Ако опцията за връщане назад не е налична – архивирайте личните си файлове , тогава можете да се свържете с вашата ИТ поддръжка, бюро за помощ или поддръжка на Microsoft(Microsoft Support) за помощ за възстановяване на вашето устройство до предишната версия на Windows 10(Window 10) .

That’s it!

PS : Microsoft работи върху резолюция и ще предостави актуализация в предстоящата версия на Windows 10 .



About the author

Аз съм компютърен учен с над 10 години опит в разработката на софтуер и сигурността. Имам силен интерес към игрите за Firefox, Chrome и Xbox. По-специално, особено ме интересува как да се уверя, че кодът ми е безопасен и ефективен.



Related posts