User:Alvinhochun/Localization/IME/IMM
< User:Alvinhochun | Localization | IME
Operations of IMM under XP.
Loading of imm32.dll
IMM32 is loaded by user32.dll
from _InitializeImmEntryTable
. It loads the library (if not already) and fill in a structure of function pointers gImmApiEntries
. This function is supposed to be called in the DllMain of USER32 but the relevant code is currently commented out.
In ReactOS, the related functions are located under win32ss\user\user32\misc\imm.c
. The functions it loads is different from that of Windows XP.
A simple trace (hopefully I got it correct):
- user32!DllMain
- user32!_InitializeImmEntryTable
- GetModuleHandle (and fail)
- LoadLibrary(imm32.dll)
- imm32!DllMain
- imm32!ImmInitializeGlobals
- user32!User32InitializeImmEntryTable
- user32!_InitializeImmEntryTable
- GetProcAddress and fill in the function table
- imm32!ImmRegisterClient
- imm32!ImmInitializeGlobals
- user32!_InitializeImmEntryTable
- imm32!DllMain
- imm32!ImmRegisterClient
- imm32!ImmInitializeGlobals
- user32!_InitializeImmEntryTable
TODO: Log all calls to Imm* functions with stack traces.