mirror of https://github.com/tongzx/nt5src
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
157 lines
4.0 KiB
157 lines
4.0 KiB
IME_CONFIG_REGISTERWORD equ 2
|
|
|
|
REGWORD_STRUC_SIZE equ 8
|
|
|
|
;-----------------------------------------------------------------------;
|
|
;
|
|
; bodyqt_IMMCONFIGUREIMEA
|
|
;
|
|
;-----------------------------------------------------------------------;
|
|
bodyqt_IMMCONFIGUREIMEA macro index
|
|
local type_ok
|
|
local get_out
|
|
local inserted_ok
|
|
local push_task
|
|
ebp_hKL equ <ebp_top>
|
|
ebp_hWnd equ <ebp_top+4>
|
|
ebp_hSubFunc equ <ebp_top+8>
|
|
ebp_dwData equ <ebp_top+12>
|
|
|
|
ebp_SavePtr0 equ <[ebp-68]>
|
|
ebp_SavePtr1 equ <[ebp-72]>
|
|
ebp_SavePtr2 equ <[ebp-76]>
|
|
|
|
xor eax,eax
|
|
push eax ;ebp_SavePtr0
|
|
push eax ;ebp_SavePtr1
|
|
push eax ;ebp_SavePtr2
|
|
|
|
sub esp, REGWORD_STRUC_SIZE
|
|
mov eax, edi
|
|
mov edi, esp
|
|
push eax ; preserve edi
|
|
|
|
mov eax,dword ptr ebp_hSubFunc ;will need more than once
|
|
cmp eax,IME_CONFIG_REGISTERWORD
|
|
jnz call_it_A
|
|
|
|
mov eax, dword ptr ebp_dwData
|
|
test eax,eax
|
|
jz call_it_A ;don't map if dwData is NULL
|
|
|
|
push eax ; preserve eax
|
|
push [eax] ; map lpReading
|
|
call MapLS
|
|
mov dword ptr [edi], eax
|
|
mov dword ptr ebp_SavePtr0, eax
|
|
pop eax
|
|
push dword ptr [eax+4] ; map lpWord
|
|
call MapLS
|
|
mov dword ptr [edi+4], eax
|
|
mov dword ptr ebp_SavePtr1, eax
|
|
|
|
push dword ptr ebp_hKL
|
|
push word ptr ebp_hWnd
|
|
push dword ptr ebp_hSubFunc
|
|
push edi
|
|
call MapLS
|
|
mov dword ptr ebp_SavePtr2, eax
|
|
push eax
|
|
call dword ptr [pfnQT_Thunk_ImmFThk]
|
|
|
|
push dword ptr ebp_SavePtr0
|
|
call UnMapLS
|
|
push dword ptr ebp_SavePtr1
|
|
call UnMapLS
|
|
push dword ptr ebp_SavePtr2
|
|
call UnMapLS
|
|
jmp get_out
|
|
|
|
call_it_A:
|
|
push dword ptr ebp_hKL
|
|
push word ptr ebp_hWnd
|
|
push dword ptr ebp_hSubFunc
|
|
push dword ptr ebp_dwData
|
|
call dword ptr [pfnQT_Thunk_ImmFThk]
|
|
|
|
get_out:
|
|
pop edi
|
|
endm
|
|
|
|
;-----------------------------------------------------------------------;
|
|
;
|
|
; bodyqt_IMMCONFIGUREIMEW
|
|
;
|
|
;-----------------------------------------------------------------------;
|
|
bodyqt_IMMCONFIGUREIMEW macro index
|
|
local type_ok
|
|
local get_out
|
|
local inserted_ok
|
|
local push_task
|
|
ebp_hKL equ <ebp_top>
|
|
ebp_hWnd equ <ebp_top+4>
|
|
ebp_hSubFunc equ <ebp_top+8>
|
|
ebp_dwData equ <ebp_top+12>
|
|
|
|
ebp_SavePtr0 equ <[ebp-68]>
|
|
ebp_SavePtr1 equ <[ebp-72]>
|
|
ebp_SavePtr2 equ <[ebp-76]>
|
|
|
|
xor eax,eax
|
|
push eax ;ebp_SavePtr0
|
|
push eax ;ebp_SavePtr1
|
|
push eax ;ebp_SavePtr2
|
|
|
|
sub esp, REGWORD_STRUC_SIZE
|
|
mov eax, edi
|
|
mov edi, esp
|
|
push eax ; preserve edi
|
|
|
|
mov eax,dword ptr ebp_hSubFunc ;will need more than once
|
|
cmp eax,IME_CONFIG_REGISTERWORD
|
|
jnz call_it_W
|
|
|
|
mov eax, dword ptr ebp_dwData
|
|
test eax,eax
|
|
jz call_it_W ;don't map if dwData is NULL
|
|
|
|
push eax ; preserve eax
|
|
push [eax] ; map lpReading
|
|
call MapLS
|
|
mov dword ptr [edi], eax
|
|
mov dword ptr ebp_SavePtr0, eax
|
|
pop eax
|
|
push dword ptr [eax+4] ; map lpWord
|
|
call MapLS
|
|
mov dword ptr [edi+4], eax
|
|
mov dword ptr ebp_SavePtr1, eax
|
|
|
|
push dword ptr ebp_hKL
|
|
push word ptr ebp_hWnd
|
|
push dword ptr ebp_hSubFunc
|
|
push edi
|
|
call MapLS
|
|
mov dword ptr ebp_SavePtr2, eax
|
|
push eax
|
|
call dword ptr [pfnQT_Thunk_ImmFThk]
|
|
|
|
push dword ptr ebp_SavePtr0
|
|
call UnMapLS
|
|
push dword ptr ebp_SavePtr1
|
|
call UnMapLS
|
|
push dword ptr ebp_SavePtr2
|
|
call UnMapLS
|
|
jmp get_out
|
|
|
|
call_it_W:
|
|
push dword ptr ebp_hKL
|
|
push word ptr ebp_hWnd
|
|
push dword ptr ebp_hSubFunc
|
|
push dword ptr ebp_dwData
|
|
call dword ptr [pfnQT_Thunk_ImmFThk]
|
|
|
|
get_out:
|
|
pop edi
|
|
endm
|
|
|
|
|