Problemy z funkcją CreateWindowEx dla aplikacji 32-bitowych w systemie Windows 10

W niektórych przypadkach po uaktualnieniu do nowszej wersji system Windows 10 powoduje awarie lub inne problemy, gdy wywołuje funkcję CreateWindowEx z pliku msctf.dll(msctf.dll) , gdy okna są tworzone w niektórych aplikacjach 32-bitowych. W tym poście zrozumiemy, czym  jest funkcja CreateWindowEx – zbadaj możliwe przyczyny błędu tej funkcji, a następnie podaj zalecane rozwiązanie, aby złagodzić problem.

Zrozumienie funkcji CreateWindowEx

Funkcja CreateWindowEx

Aplikacje systemu Windows(Windows) , w tym aplikacje .NET, które używają Windows Forms lub Windows Presentation Foundation ( WPF ), tworzą swoje okna, wywołując funkcje CreateWindowExA lub CreateWindowExW .

Obie funkcje wewnętrznie wywołują wspólną funkcję USER32 , która wykona pewne walidacje parametrów, takie jak style okna i uchwyty określone w wywołaniu, obsłużą tworzenie okna potomnego MDI , jeśli określono rozszerzony styl okna WS_EX_MDICHILD i przetwarza bieżący kontekst aktywacji dla wywołania wątek. Jeśli wszystko jest w porządku po stronie USER32(USER32-side) wywołania CreateWindowEx , następnie wywołuje implementację trybu jądra ( WIN32K ) CreateWindowEx .

CreateWindowEx wykona następujące zadania podczas próby utworzenia nowego obiektu okna:

  • Określ, czy utworzenie uchwytu dla nowego obiektu okna spowoduje przekroczenie  limitu przydziału uchwytu użytkownika(User) dla procesu wywołującego.
  • Przydziela pamięć dla nowego obiektu okna ze sterty pulpitu.
  • Inicjuje pamięć dla nowego obiektu okna.
  • Tworzy uchwyt dla nowego obiektu okna w tabeli uchwyt użytkownika .(User)

Przyczyny niepowodzeń CreateWindowEx

Niektóre warunki, które mogą wywołać problem z funkcją CreateWindowEx , są wyliczane w następujący sposób:

  • Określona klasa okna nie istnieje.
  • Używanie nieprawidłowych stylów okien lub rozszerzonych stylów okien.
  • Używanie nieprawidłowych uchwytów użytkownika(User) , takich jak uchwyty okien i uchwyty menu.
  • Próba utworzenia okna potomnego bez określenia okna nadrzędnego.
  • Próba utworzenia okna podrzędnego lub okna będącego własnością, a określony rodzic/właściciel należy do innego pulpitu niż wątek wywołujący.
  • Utworzenie okna podrzędnego lub własnego spowoduje przekroczenie limitu zagnieżdżonych okien.
  • Utworzenie nowego obiektu okna spowoduje przekroczenie limitu obsługi dla procesu wywołującego.
  • W stercie pulpitu jest niewystarczająca ilość dostępnej sterty, aby przydzielić pamięć dla nowego obiektu okna.
  • Brak dostępnych wpisów w tabeli dojścia użytkownika .(User)

Napraw(Fix CreateWindowEx) problemy z funkcją CreateWindowEx dla aplikacji 32-bitowych w systemie Windows 10(Windows 10)

Firma Microsoft(Microsoft) udostępniła obejście problemów z funkcją CreateWindowEx .

Aby obejść ten problem, musisz przywrócić instalację systemu Windows 10 do poprzedniej wersji.

Opcja wycofania w systemie Windows 10(Windows 10) jest dostępna przez 10 dni(10 days) (w większości przypadków) po uaktualnieniu instalacji systemu Windows 10.

Ta operacja zachowuje pliki osobiste, ale usuwa aplikacje i sterowniki, które zostały zainstalowane po uaktualnieniu, a także cofa wszelkie zmiany wprowadzone w ustawieniach.

Jeśli opcja wycofania nie jest dostępna — wykonaj kopię zapasową swoich plików osobistych , możesz skontaktować się z działem pomocy technicznej lub pomocą techniczną firmy Microsoft(Microsoft Support) , aby uzyskać pomoc w przywróceniu urządzenia do poprzedniej wersji systemu Windows 10(Window 10) .

That’s it!

PS : Microsoft pracuje nad rozwiązaniem i udostępni aktualizację w nadchodzącym wydaniu systemu Windows 10 .(Windows 10)



About the author

Jestem inżynierem oprogramowania z ponad 10-letnim doświadczeniem w branży Xbox. Specjalizuję się w tworzeniu gier i testowaniu bezpieczeństwa. Jestem także doświadczonym recenzentem i pracowałem nad projektami dla największych nazwisk w branży gier, w tym Ubisoft, Microsoft i Sony. W wolnym czasie lubię grać w gry wideo i oglądać programy telewizyjne.



Related posts