Computer >> 컴퓨터 >  >> 시스템 >> Windows

Windows 10에서 32비트 앱의 CreateWindowEx 함수 오류, 원인과 해결 방법

일부 경우 Windows 10을 최신 버전으로 업그레이드한 후, 특정 32비트 응용 프로그램에서 창을 생성할 때 msctf.dllCreateWindowEx 함수를 호출하면서 프로그램이 충돌하거나 여러 가지 문제가 발생할 수 있습니다. 이 글에서는 CreateWindowEx 함수가 어떤 역할을 하는지 살펴보고, 해당 함수 오류가 발생하는 원인을 분석한 뒤 문제를 완화하기 위한 권장 해결 방법까지 안내해 드립니다.

CreateWindowEx 함수란?

Windows 10에서 32비트 앱의 CreateWindowEx 함수 오류, 원인과 해결 방법

Windows Forms나 WPF(Windows Presentation Foundation)를 사용하는 .NET 응용 프로그램을 포함한 대부분의 Windows 응용 프로그램은 CreateWindowExA 또는 CreateWindowExW 함수를 호출하여 창을 생성합니다.

두 함수는 내부적으로 공통 USER32 함수를 호출합니다. 이 함수는 창 스타일과 호출 시 지정된 핸들 등의 매개변수 유효성을 검사하고, WS_EX_MDICHILD 확장 창 스타일이 지정된 경우 MDI 자식 창 생성을 처리하며, 호출 스레드의 현재 활성화 컨텍스트(activation context)를 처리합니다. USER32 단계에서 모든 검사가 정상적으로 통과되면, 이어서 커널 모드(WIN32K)의 CreateWindowEx 구현부를 호출하게 됩니다.

CreateWindowEx는 새 창 개체를 생성하는 과정에서 다음과 같은 작업을 수행합니다.

  • 새 창 개체의 핸들 생성이 호출 프로세스의 User 핸들 할당량 한도를 초과하는지 확인합니다.
  • 데스크톱 힙(desktop heap)에서 새 창 개체에 필요한 메모리를 할당합니다.
  • 새 창 개체를 위한 메모리를 초기화합니다.
  • User 핸들 테이블에 새 창 개체의 핸들을 등록합니다.

CreateWindowEx 오류가 발생하는 원인

CreateWindowEx 함수 문제를 유발할 수 있는 주요 조건은 다음과 같습니다.

  • 지정된 창 클래스(window class)가 존재하지 않는 경우
  • 잘못된 창 스타일 또는 확장 창 스타일을 사용한 경우
  • 창 핸들, 메뉴 핸들 등 유효하지 않은 User 핸들을 사용한 경우
  • 부모 창을 지정하지 않은 상태에서 자식 창을 생성하려는 경우
  • 자식 창 또는 소유 창을 생성하려는데 지정된 부모/소유자 창이 호출 스레드와 다른 데스크톱에 속해 있는 경우
  • 자식 또는 소유 창 생성 시 중첩 창(nested window) 한도를 초과하는 경우
  • 새 창 개체 생성으로 인해 호출 프로세스의 핸들 할당량을 초과하는 경우
  • 데스크톱 힙에 새 창 개체용 메모리를 할당할 공간이 부족한 경우
  • User 핸들 테이블에 사용 가능한 빈 항목이 없는 경우

Windows 10에서 32비트 앱의 CreateWindowEx 문제 해결하기

Microsoft는 CreateWindowEx 함수 관련 문제에 대한 임시 해결 방법(workaround)을 제공하고 있습니다.

이 문제를 우회하려면 Windows 10 설치를 이전 버전으로 롤백해야 합니다.

Windows 10의 롤백 옵션은 대부분의 경우 업그레이드 후 10일간 사용할 수 있습니다.

롤백 작업을 진행하면 개인 파일은 그대로 유지되지만, 업그레이드 이후에 설치한 응용 프로그램과 드라이버는 제거되며, 설정에서 변경한 사항도 이전 상태로 되돌아갑니다.

만약 롤백 옵션을 더 이상 사용할 수 없다면, 먼저 개인 파일을 백업한 뒤 IT 지원팀이나 헬프데스크, 또는 Microsoft 고객 지원에 문의하여 장치를 이전 Windows 10 버전으로 복원하는 도움을 받으시기 바랍니다.

지금까지 CreateWindowEx 함수 오류의 원인과 해결 방법을 알아보았습니다!

참고: Microsoft는 현재 근본적인 해결책을 준비 중이며, 향후 Windows 10 업데이트를 통해 수정 사항을 제공할 예정입니다.

Windows 10에서 32비트 앱의 CreateWindowEx 함수 오류, 원인과 해결 방법