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

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

Понимание функции CreateWindowEx

Функция CreateWindowEx

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

Обе функции внутренне вызывают общую функцию USER32 , которая будет выполнять проверку некоторых параметров, таких как стили окон и дескрипторы, указанные в вызове, обрабатывать создание дочернего окна MDI , если указан расширенный стиль окна WS_EX_MDICHILD , и обрабатывать текущий контекст активации для вызова. нить. Если на стороне USER32(USER32-side) вызова CreateWindowEx все в порядке, он вызывает реализацию (CreateWindowEx)CreateWindowEx в режиме ядра ( WIN32K ) .

CreateWindowEx будет выполнять следующие задачи при попытке создать новый объект окна:

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

Причины сбоев CreateWindowEx

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

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

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

Корпорация Майкрософт(Microsoft) предоставила обходной путь для проблем с функцией CreateWindowEx(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-летним опытом работы с продуктами Windows, Office и Google. Я эксперт в Word, Excel и PowerPoint и написал несколько книг на эту тему. В свободное время я люблю играть в видеоигры, читать книги и смотреть фильмы.



Related posts