Source code of Windows XP (NT5)
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

  1. IME_CONFIG_REGISTERWORD equ 2
  2. REGWORD_STRUC_SIZE equ 8
  3. ;-----------------------------------------------------------------------;
  4. ;
  5. ; bodyqt_IMMCONFIGUREIMEA
  6. ;
  7. ;-----------------------------------------------------------------------;
  8. bodyqt_IMMCONFIGUREIMEA macro index
  9. local type_ok
  10. local get_out
  11. local inserted_ok
  12. local push_task
  13. ebp_hKL equ <ebp_top>
  14. ebp_hWnd equ <ebp_top+4>
  15. ebp_hSubFunc equ <ebp_top+8>
  16. ebp_dwData equ <ebp_top+12>
  17. ebp_SavePtr0 equ <[ebp-68]>
  18. ebp_SavePtr1 equ <[ebp-72]>
  19. ebp_SavePtr2 equ <[ebp-76]>
  20. xor eax,eax
  21. push eax ;ebp_SavePtr0
  22. push eax ;ebp_SavePtr1
  23. push eax ;ebp_SavePtr2
  24. sub esp, REGWORD_STRUC_SIZE
  25. mov eax, edi
  26. mov edi, esp
  27. push eax ; preserve edi
  28. mov eax,dword ptr ebp_hSubFunc ;will need more than once
  29. cmp eax,IME_CONFIG_REGISTERWORD
  30. jnz call_it_A
  31. mov eax, dword ptr ebp_dwData
  32. test eax,eax
  33. jz call_it_A ;don't map if dwData is NULL
  34. push eax ; preserve eax
  35. push [eax] ; map lpReading
  36. call MapLS
  37. mov dword ptr [edi], eax
  38. mov dword ptr ebp_SavePtr0, eax
  39. pop eax
  40. push dword ptr [eax+4] ; map lpWord
  41. call MapLS
  42. mov dword ptr [edi+4], eax
  43. mov dword ptr ebp_SavePtr1, eax
  44. push dword ptr ebp_hKL
  45. push word ptr ebp_hWnd
  46. push dword ptr ebp_hSubFunc
  47. push edi
  48. call MapLS
  49. mov dword ptr ebp_SavePtr2, eax
  50. push eax
  51. call dword ptr [pfnQT_Thunk_ImmFThk]
  52. push dword ptr ebp_SavePtr0
  53. call UnMapLS
  54. push dword ptr ebp_SavePtr1
  55. call UnMapLS
  56. push dword ptr ebp_SavePtr2
  57. call UnMapLS
  58. jmp get_out
  59. call_it_A:
  60. push dword ptr ebp_hKL
  61. push word ptr ebp_hWnd
  62. push dword ptr ebp_hSubFunc
  63. push dword ptr ebp_dwData
  64. call dword ptr [pfnQT_Thunk_ImmFThk]
  65. get_out:
  66. pop edi
  67. endm
  68. ;-----------------------------------------------------------------------;
  69. ;
  70. ; bodyqt_IMMCONFIGUREIMEW
  71. ;
  72. ;-----------------------------------------------------------------------;
  73. bodyqt_IMMCONFIGUREIMEW macro index
  74. local type_ok
  75. local get_out
  76. local inserted_ok
  77. local push_task
  78. ebp_hKL equ <ebp_top>
  79. ebp_hWnd equ <ebp_top+4>
  80. ebp_hSubFunc equ <ebp_top+8>
  81. ebp_dwData equ <ebp_top+12>
  82. ebp_SavePtr0 equ <[ebp-68]>
  83. ebp_SavePtr1 equ <[ebp-72]>
  84. ebp_SavePtr2 equ <[ebp-76]>
  85. xor eax,eax
  86. push eax ;ebp_SavePtr0
  87. push eax ;ebp_SavePtr1
  88. push eax ;ebp_SavePtr2
  89. sub esp, REGWORD_STRUC_SIZE
  90. mov eax, edi
  91. mov edi, esp
  92. push eax ; preserve edi
  93. mov eax,dword ptr ebp_hSubFunc ;will need more than once
  94. cmp eax,IME_CONFIG_REGISTERWORD
  95. jnz call_it_W
  96. mov eax, dword ptr ebp_dwData
  97. test eax,eax
  98. jz call_it_W ;don't map if dwData is NULL
  99. push eax ; preserve eax
  100. push [eax] ; map lpReading
  101. call MapLS
  102. mov dword ptr [edi], eax
  103. mov dword ptr ebp_SavePtr0, eax
  104. pop eax
  105. push dword ptr [eax+4] ; map lpWord
  106. call MapLS
  107. mov dword ptr [edi+4], eax
  108. mov dword ptr ebp_SavePtr1, eax
  109. push dword ptr ebp_hKL
  110. push word ptr ebp_hWnd
  111. push dword ptr ebp_hSubFunc
  112. push edi
  113. call MapLS
  114. mov dword ptr ebp_SavePtr2, eax
  115. push eax
  116. call dword ptr [pfnQT_Thunk_ImmFThk]
  117. push dword ptr ebp_SavePtr0
  118. call UnMapLS
  119. push dword ptr ebp_SavePtr1
  120. call UnMapLS
  121. push dword ptr ebp_SavePtr2
  122. call UnMapLS
  123. jmp get_out
  124. call_it_W:
  125. push dword ptr ebp_hKL
  126. push word ptr ebp_hWnd
  127. push dword ptr ebp_hSubFunc
  128. push dword ptr ebp_dwData
  129. call dword ptr [pfnQT_Thunk_ImmFThk]
  130. get_out:
  131. pop edi
  132. endm