In some cases, after an upgrade to a newer version, the Windows 10 causes crashes or other issues when it calls the CreateWindowEx function from msctf.dll when windows are created in some 32-bit applications. In this post, we will understand what the CreateWindowEx function is – explore the possible causes of this function error and then provide the recommended solution to mitigate the issue.
Understanding the CreateWindowEx function
Windows applications, including .NET applications that use Windows Forms or Windows Presentation Foundation (WPF), create their windows by calling the CreateWindowExA or CreateWindowExW functions.
Both functions internally call a common USER32 function that will perform some parameter validation, such as the window styles and handles specified in the call, handle creating a MDI child window if the WS_EX_MDICHILD extended window style is specified and processes the current activation context for the calling thread. If all is well on the USER32-side of the CreateWindowEx call, it then calls into the kernel-mode (WIN32K) implementation of CreateWindowEx.
CreateWindowEx will perform the following tasks when attempting to create a new window object:
- Determine if creating a handle for the new window object will exceed the User handle quota limit for the calling process.
- Allocates memory for the new window object from the desktop’s heap.
- Initializes the memory for the new window object.
- Creates a handle for the new window object in the User handle table.
Causes of CreateWindowEx failures
Some conditions that can trigger the CreateWindowEx function issue are enumerated as follows:
- The specified window class does not exist.
- Using invalid window styles or extended window styles.
- Using invalid User handles, such as window handles and menu handles.
- Attempting to create a child window without specifying a parent window.
- Attempting to create a child window or an owned window and the specified parent/owner belongs to a different desktop than the calling thread.
- Creating a child or owned window will exceed the nested window limit.
- Creating a new window object will exceed the handle quota for the calling process.
- There is insufficient heap available in the desktop’s heap to allocate memory for the new window object.
- There are no available entries in the User handle table.
Fix CreateWindowEx function issues for 32-bit apps in Windows 10
Microsoft has provided a workaround to the CreateWindowEx function issues.
To work around this issue, you’ll have to roll back your Windows 10 installation to the previous version.
The rollback option in Windows 10 is available for 10 days (in most cases) after you’ve upgraded your Windows 10 installation.
This operation keeps your personal files, but removes applications and drivers that were installed after the upgrade, and also reverses any changes that you made to settings.
If the roll back option isn’t available – backup your personal files, then you can contact your IT support or helpdesk or Microsoft Support for help to restore your device to the previous Window 10 version.
PS: Microsoft is working on a resolution and will provide an update in Windows 10 upcoming release.