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.

188 lines
4.5 KiB

  1. ;****************************************************************************
  2. ;
  3. ; This file contains all global data that must be modified at interrupt
  4. ; level. Everthing in this file is placed in a fixed data segment
  5. ; named INTDATA. Only things that must be accessed and modified at
  6. ; interrupt level may be placed in this file. All values here must be
  7. ; referenced as FAR in the code.
  8. ;
  9. ; The creation of this segment allowed USER to eliminate all code segment
  10. ; variables. This was needed for protect mode as well as moving USER's
  11. ; text segment into HIMEM.
  12. ;****************************************************************************
  13. NOEXTERNS = 1
  14. .xlist
  15. include user.inc
  16. .list
  17. createSeg _INTDS, INTDS, BYTE, PUBLIC, DATA
  18. sBegin INTDS
  19. GlobalW hqSysQueue, 00h
  20. ifndef WOW
  21. GlobalW fMouseMoved, 00h
  22. ;; GlobalB fAltKeyUp, 80h ; no longer used
  23. GlobalW fInt24 00h ; used for INT24 detection in NCMOUSEDOWN
  24. ;
  25. ; For Asynchronous key state information.
  26. ;
  27. public rgbAsyncKeyState
  28. rgbAsyncKeyState db 64 DUP(0) ; 512 bits of information, 2 per key.
  29. GlobalW fEnableInput, TRUE
  30. endif ; !WOW
  31. GlobalW hqSysModal, 0 ; hq of system modal window
  32. ifndef WOW
  33. ;
  34. ; These are for the code that always keeps enough room for KEYUP/MOUSEUP msgs.
  35. ;
  36. GlobalW cMsgRsrv, 0
  37. GlobalB vKeyDown, 0
  38. ;
  39. ; Mouse Code Variables
  40. ;
  41. GlobalW x_mickey_rate, 0 ; mickeys/pixel ratio for x
  42. GlobalW y_mickey_rate, 0 ; mickeys/pixel ratio for y
  43. GlobalW cur_x_mickey, 0 ; current mickey count in x
  44. GlobalW cur_y_mickey, 0 ; current mickey count in y
  45. GlobalW fSwapButtons, 0 ; TRUE if L/R are to be swapped.
  46. public ptTrueCursor
  47. ptTrueCursor POINT <0, 0> ; interrupt-level cursor position
  48. public ptCursor
  49. ptCursor POINT <0, 0> ; cursor position as of last SkipSysMsg
  50. public rcCursorClip
  51. rcCursorClip RECT <0, 0, 0, 0>
  52. GlobalD dwMouseMoveExtraInfo, 0 ; Extra info for deferred MOUSE MOVE msgs
  53. ;
  54. ; CS copies of cxScreen, cyScreen for abs mouse scaling
  55. ;
  56. GlobalW cxScreenCS, 0
  57. GlobalW cyScreenCS, 0
  58. ;
  59. ; These are CS copies of msInfo.msXThresh & msYThresh
  60. ; (copied at initialization)
  61. ;
  62. GlobalW MouseThresh1,0
  63. GlobalW MouseThresh2,0
  64. GlobalW MouseSpeed, 0 ;0 - no accel, 1 - singel accel, 2 - dual accel
  65. ifndef PMODE
  66. ;
  67. ; Mouse interrupt stack
  68. ;
  69. public lpMouseStack
  70. public prevSSSP
  71. public NestCount
  72. endif
  73. lpMouseStack dd ?
  74. prevSSSP dd ? ;Previous stack when inside our hook
  75. NestCount db 0
  76. ;
  77. ; Hardware level (interrupt) hook addresse. Called from event proc's
  78. ;
  79. GlobalW fJournalPlayback, 0 ; != 0 if WH_JOURNALPLAYBACK hook installed
  80. ; Table of interrupt-level hotkey hooks
  81. GlobalW cHotKeyHooks, 0
  82. public rghkhHotKeyHooks
  83. rghkhHotKeyHooks dw CHOTKEYHOOKMAX * (size HOTKEYHOOK)/2 dup (0)
  84. ; Hardware event hook
  85. GlobalD hwEventHook, NULL
  86. endif ; !WOW
  87. ;
  88. ; Q management.
  89. ;
  90. GlobalW hqList, 0 ; list of allocated queues
  91. GlobalW hqCursor, 0 ; hq of window under cursor
  92. GlobalW hqCapture, 0 ; hq of capture
  93. GlobalW hqActive, 0 ; hq of active window
  94. GlobalW hqMouse, 0 ; hq last to get mouse msg
  95. GlobalW hqKeyboard, 0 ; hq last to get kbd msg
  96. GlobalW cQEntries, 120 ; System queue size
  97. GlobalW hqSysLock 0 ; HQ of guy looking at the current event
  98. GlobalW idSysLock 0ffffh ; Msg ID of event that's locking sys queue
  99. ifndef WOW
  100. ;
  101. ; Timer management
  102. ;
  103. public timerInfo
  104. timerInfo STIMERINFO <0>
  105. ;
  106. ; Timer related stuff
  107. ;
  108. public TimerTable
  109. TimerTable dw (size TIMER)/2 * CTIMERSMAX dup (0)
  110. GlobalW hSysTimer, 0 ; system timer handle
  111. GlobalD tSysTimer, 0 ; system timer time
  112. GlobalW dtSysTimer, 0 ; delta time before next timer goes off
  113. GlobalB fInScanTimers, 0 ; flag to prevent ScanTimers recursion
  114. GlobalW TimerTableMax, 0 ; end of active timer entries
  115. ;
  116. ; Journalling stuff
  117. ;
  118. GlobalD dtJournal, 0 ; dt till next event is ready
  119. GlobalW msgJournal, 0 ; next journal message.
  120. ;
  121. ; Used in SaveEvent()
  122. ;
  123. GlobalB fDontMakeAltUpASysKey 0 ; whether any intervening chars have arrived
  124. ;*--------------------------------------------------------------------------*
  125. ;* Internal Strings *
  126. ;*--------------------------------------------------------------------------*
  127. ; These strings reside in user.rc but are loaded at boot time. They must
  128. ; remain in user.rc for localization reasons.
  129. endif ; !WOW
  130. public szSysError
  131. public szDivZero
  132. szSysError db 20 DUP(0) ; "System Error"
  133. szDivZero db 50 DUP(0) ; "Divide By Zero or Overflow Error"
  134. ifndef WOW
  135. public szNull
  136. szNull db 0,13
  137. endif ; !WOW
  138. sEnd INTDS
  139. end