Leaked source code of windows server 2003
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.

2376 lines
50 KiB

  1. /****************************** Module Header ******************************\
  2. * Module Name: globals.c
  3. *
  4. * Copyright (c) 1985 - 1999, Microsoft Corporation
  5. *
  6. * This module contains all the server's global variables. One must be
  7. * executing on the server's context to manipulate any of these variables.
  8. * Serializing access to them is also a good idea.
  9. *
  10. * History:
  11. * 10-15-90 DarrinM Created.
  12. \***************************************************************************/
  13. #include "precomp.h"
  14. #pragma hdrstop
  15. #ifdef AUTORUN_CURSOR
  16. /*
  17. * Timer for autorun cursor.
  18. */
  19. UINT_PTR gtmridAutorunCursor;
  20. #endif
  21. /*
  22. * Per user data is global in non-Hydra.
  23. */
  24. DWORD gdwPUDFlags = ACCF_FIRSTTICK | PUDF_BEEP | PUDF_ANIMATE;
  25. /*
  26. * Wallpaper Data.
  27. */
  28. HBITMAP ghbmWallpaper;
  29. HPALETTE ghpalWallpaper;
  30. SIZERECT gsrcWallpaper;
  31. UINT gwWPStyle;
  32. HBITMAP ghbmDesktop;
  33. LPWSTR gpszWall;
  34. /*
  35. * Policy Settings.
  36. */
  37. DWORD gdwPolicyFlags = POLICY_ALL;
  38. /*
  39. * SafeBoot
  40. */
  41. #if DBG
  42. DWORD gDrawVersionAlways = TRUE;
  43. #else
  44. DWORD gDrawVersionAlways;
  45. #endif
  46. /*
  47. * TS override flag for painting desktop version.
  48. */
  49. DWORD gdwTSExcludeDesktopVersion;
  50. /*
  51. * External drivers
  52. */
  53. BOOL gfUnsignedDrivers;
  54. /*
  55. * Full-Drag.
  56. */
  57. HRGN ghrgnUpdateSave;
  58. int gnUpdateSave;
  59. PWND gspwndAltTab;
  60. PWND gspwndShouldBeForeground;
  61. /*
  62. * full screen variables
  63. */
  64. PWND gspwndScreenCapture;
  65. PWND gspwndInternalCapture;
  66. PWND gspwndFullScreen;
  67. /*
  68. * pre-cached monitor for mode changes
  69. */
  70. PMONITOR gpMonitorCached;
  71. /*
  72. * logon notify window
  73. */
  74. PWND gspwndLogonNotify;
  75. PKEVENT gpEventDiconnectDesktop;
  76. /*
  77. * handle for WinSta0_DesktopSwitch event
  78. *
  79. * Note: originally intended for Hydra support,
  80. * now some other modules rely on this event.
  81. * Consider this as exposed.
  82. */
  83. HANDLE ghEventSwitchDesktop;
  84. PKEVENT gpEventSwitchDesktop;
  85. /*
  86. * Thread Info Variables
  87. */
  88. PTHREADINFO gptiTasklist;
  89. PTHREADINFO gptiShutdownNotify;
  90. PTHREADINFO gptiLockUpdate;
  91. PTHREADINFO gptiForeground;
  92. PTHREADINFO gptiBlockInput;
  93. PWOWTHREADINFO gpwtiFirst;
  94. PWOWPROCESSINFO gpwpiFirstWow;
  95. /*
  96. * Queue Variables
  97. */
  98. PQ gpqForeground;
  99. PQ gpqForegroundPrev;
  100. PQ gpqCursor;
  101. /*
  102. * Accessibility globals
  103. */
  104. FILTERKEYS gFilterKeys;
  105. STICKYKEYS gStickyKeys;
  106. MOUSEKEYS gMouseKeys;
  107. ACCESSTIMEOUT gAccessTimeOut;
  108. TOGGLEKEYS gToggleKeys;
  109. SOUNDSENTRY gSoundSentry;
  110. HIGHCONTRAST gHighContrast;
  111. WCHAR gHighContrastDefaultScheme[MAX_SCHEME_NAME_SIZE];
  112. /*
  113. * Fade animation globals
  114. */
  115. FADE gfade;
  116. /*
  117. * FilterKeys Support
  118. */
  119. UINT_PTR gtmridFKActivation;
  120. UINT_PTR gtmridFKResponse;
  121. UINT_PTR gtmridFKAcceptanceDelay;
  122. int gFilterKeysState;
  123. KE gFKKeyEvent;
  124. CONST PKE gpFKKeyEvent = &gFKKeyEvent;
  125. ULONG gFKExtraInformation;
  126. int gFKNextProcIndex;
  127. /*
  128. * ToggleKeys Support
  129. */
  130. UINT_PTR gtmridToggleKeys;
  131. ULONG gTKExtraInformation;
  132. int gTKNextProcIndex;
  133. /*
  134. * TimeOut Support
  135. */
  136. UINT_PTR gtmridAccessTimeOut;
  137. /*
  138. * MouseKeys Support
  139. */
  140. WORD gwMKButtonState;
  141. WORD gwMKCurrentButton = MOUSE_BUTTON_LEFT;
  142. UINT_PTR gtmridMKMoveCursor;
  143. LONG gMKDeltaX;
  144. LONG gMKDeltaY;
  145. UINT giMouseMoveTable;
  146. HWND ghwndSoundSentry;
  147. UINT_PTR gtmridSoundSentry;
  148. MOUSECURSOR gMouseCursor;
  149. /*
  150. * Multilingual keyboard layout support.
  151. */
  152. PKL gspklBaseLayout;
  153. HKL gLCIDSentToShell;
  154. DWORD gSystemFS; // System font's font signature (single bit)
  155. KBDLANGTOGGLE gLangToggle[] = {
  156. VK_MENU, 0, KLT_ALT,
  157. 0, SCANCODE_LSHIFT, KLT_LEFTSHIFT,
  158. 0, SCANCODE_RSHIFT, KLT_RIGHTSHIFT
  159. };
  160. int gLangToggleKeyState;
  161. /*
  162. * Multiple flag for hex Alt+NumPad mode.
  163. */
  164. BYTE gfInNumpadHexInput;
  165. BOOL gfEnableHexNumpad;
  166. /*
  167. * Grave accent keyboard switch for thai locales
  168. */
  169. BOOL gbGraveKeyToggle;
  170. /*
  171. * Points to currently active Keyboard Layer tables
  172. */
  173. PKBDTABLES gpKbdTbl = &KbdTablesFallback;
  174. PKL gpKL;
  175. BYTE gSystemCPCharSet = ANSI_CHARSET; // System's input locale charset
  176. PKBDNLSTABLES gpKbdNlsTbl;
  177. DWORD gdwKeyboardAttributes; // see KLLF_SHIFTLOCK etc.
  178. DWORD gtimeStartCursorHide;
  179. RECT grcCursorClip;
  180. ULONG_PTR gdwMouseMoveExtraInfo;
  181. DWORD gdwMouseMoveTimeStamp;
  182. LASTINPUT glinp;
  183. POINT gptCursorAsync;
  184. PPROCESSINFO gppiInputProvider;
  185. PPROCESSINFO gppiLockSFW;
  186. UINT guSFWLockCount;
  187. #if DBG
  188. BOOL gfDebugForegroundIgnoreDebugPort;
  189. #endif
  190. /*
  191. * Cursor related Variables
  192. */
  193. PCURSOR gpcurLogCurrent;
  194. PCURSOR gpcurPhysCurrent;
  195. RECT grcVDMCursorBounds;
  196. DWORD gdwLastAniTick;
  197. UINT_PTR gidCursorTimer;
  198. PWND gspwndActivate;
  199. PWND gspwndLockUpdate;
  200. PWND gspwndMouseOwner;
  201. HWND ghwndSwitch;
  202. UINT gwMouseOwnerButton;
  203. BOOL gbMouseButtonsRecentlySwapped;
  204. UINT gdtMNDropDown;
  205. int gcountPWO; /* count of pwo WNDOBJs in gdi */
  206. int gnKeyboardSpeed = 15;
  207. int giScreenSaveTimeOutMs;
  208. BOOL gbBlockSendInputResets;
  209. PBWL gpbwlList;
  210. UINT gdtDblClk = 500;
  211. /*
  212. * TrackMouseEvent related globals
  213. */
  214. UINT gcxMouseHover;
  215. UINT gcyMouseHover;
  216. UINT gdtMouseHover;
  217. CAPTIONCACHE gcachedCaptions[CCACHEDCAPTIONS];
  218. /*
  219. * list of thread attachments
  220. */
  221. PATTACHINFO gpai;
  222. PDESKTOP gpdeskRecalcQueueAttach;
  223. PWND gspwndCursor;
  224. PPROCESSINFO gppiStarting;
  225. PPROCESSINFO gppiList;
  226. PPROCESSINFO gppiWantForegroundPriority;
  227. PPROCESSINFO gppiForegroundOld;
  228. PW32JOB gpJobsList;
  229. UINT_PTR gtmridAniCursor;
  230. int gcHotKey;
  231. PHOTKEYSTRUCT gpHotKeyList;
  232. int gcHotKeyAlloc;
  233. /*
  234. * IME HotKeys
  235. */
  236. PIMEHOTKEYOBJ gpImeHotKeyListHeader;
  237. int gMouseSpeed;
  238. int gMouseThresh1;
  239. int gMouseThresh2;
  240. int gMouseSensitivityFactor = 256;
  241. int gMouseSensitivity;
  242. int gMouseTrails;
  243. int gMouseTrailsToHide;
  244. UINT_PTR gtmridMouseTrails;
  245. UINT guDdeSendTimeout;
  246. INT gnFastAltTabRows; /* Rows of icons in quick switch window */
  247. INT gnFastAltTabColumns; /* Columns of icons in quick switch window */
  248. DWORD gdwThreadEndSession; /* Shutting down system? */
  249. HBRUSH ghbrHungApp; /* Brush used to redraw hung app windows. */
  250. HBITMAP ghbmBits;
  251. HBITMAP ghbmCaption;
  252. int gcxCaptionFontChar;
  253. int gcyCaptionFontChar;
  254. HFONT ghSmCaptionFont;
  255. int gcxSmCaptionFontChar;
  256. int gcySmCaptionFontChar;
  257. HFONT ghMenuFont;
  258. HFONT ghMenuFontDef;
  259. int gcxMenuFontChar;
  260. int gcyMenuFontChar;
  261. int gcxMenuFontOverhang;
  262. int gcyMenuFontExternLeading;
  263. int gcyMenuFontAscent;
  264. int gcyMenuScrollArrow;
  265. #ifdef LAME_BUTTON
  266. HFONT ghLameFont;
  267. DWORD gdwLameFlags;
  268. #endif
  269. #if DBG
  270. UINT guModalMenuStateCount;
  271. #endif
  272. /*
  273. * From mnstate.c
  274. */
  275. POPUPMENU gpopupMenu;
  276. MENUSTATE gMenuState;
  277. HFONT ghStatusFont;
  278. HFONT ghIconFont;
  279. /*
  280. * Cached SMWP structure
  281. */
  282. SMWP gSMWP;
  283. /*
  284. * SystemParametersInfo bit mask and DWORD array.
  285. *
  286. * Bit mask. Manipulate these values using the TestUP, SetUP and ClearUP macros.
  287. * Set the default value here by ORing the corresponding UPBOOLMask value.
  288. * Write the actual value here to make it easier to read the value stored
  289. * in the registry. OR the value even if defaulting to 0; just make sure to
  290. * preceed with a not (!) operator.
  291. * Note that this is an array of DWORDs, so if your value happens to start a new
  292. * DWORD, make sure to add a comma at the end of previous UPMask line.
  293. *
  294. * This initialization is made just for documentation and it doesn't cost anything.
  295. * The default values are actually read from the registry.
  296. */
  297. DWORD gpdwCPUserPreferencesMask [SPI_BOOLMASKDWORDSIZE] = {
  298. !0x00000001 /* !ACTIVEWINDOWTRACKING */
  299. | 0x00000002 /* MENUANIMATION */
  300. | 0x00000004 /* COMBOBOXANIMATION */
  301. | 0x00000008 /* LISTBOXSMOOTHSCROLLING */
  302. | 0x00000010 /* GRADIENTCAPTIONS */
  303. | !0x00000020 /* KEYBOARDCUES = MENUUNDERLINES */
  304. | !0x00000040 /* !ACTIVEWNDTRKZORDER */
  305. | 0x00000080 /* HOTTRACKING */
  306. | 0x00000200 /* MENUFADE */
  307. | 0x00000400 /* SELECTIONFADE */
  308. | 0x00000800 /* TOOLTIPANIMATION */
  309. | 0x00001000 /* TOOLTIPFADE */
  310. | 0x00002000 /* CURSORSHADOW */
  311. | !0x00008000 /* CLICKLOCK */
  312. | 0x00010000 /* MOUSEVANISH */
  313. | 0x00020000 /* FLATMENU */
  314. | !0x00040000 /* DROPSHADOW */
  315. | 0x80000000 /* UIEFFECTS */
  316. };
  317. /*
  318. * SPI_GET/SETUSERPREFENCES.
  319. * Each SPI_UP_* define in winuser.w must have a corresponding entry here.
  320. */
  321. PROFILEVALUEINFO gpviCPUserPreferences[1 + SPI_DWORDRANGECOUNT] = {
  322. /*Default Registry key name Registry value name */
  323. {0, PMAP_DESKTOP, (LPCWSTR)STR_USERPREFERENCESMASK},
  324. {200000, PMAP_DESKTOP, (LPCWSTR)STR_FOREGROUNDLOCKTIMEOUT},
  325. {0, PMAP_DESKTOP, (LPCWSTR)STR_ACTIVEWNDTRKTIMEOUT},
  326. {3, PMAP_DESKTOP, (LPCWSTR)STR_FOREGROUNDFLASHCOUNT},
  327. {1, PMAP_DESKTOP, (LPCWSTR)STR_CARETWIDTH},
  328. {1200, PMAP_DESKTOP, (LPCWSTR)STR_CLICKLOCKTIME},
  329. {1, PMAP_DESKTOP, (LPCWSTR)STR_FONTSMOOTHINGTYPE},
  330. {0, PMAP_DESKTOP, (LPCWSTR)STR_FONTSMOOTHINGGAMMA}, /* 0 mean use the default from the display driver */
  331. {1, PMAP_DESKTOP, (LPCWSTR)STR_FOCUSBORDERWIDTH},
  332. {1, PMAP_DESKTOP, (LPCWSTR)STR_FOCUSBORDERHEIGHT},
  333. {1, PMAP_DESKTOP, (LPCWSTR)STR_FONTSMOOTHINGORIENTATION},
  334. };
  335. /*
  336. * Sys expunge control data.
  337. */
  338. DWORD gdwSysExpungeMask; // hmods to be expunged
  339. DWORD gcSysExpunge; // current count of expunges performed
  340. /*
  341. * System classes
  342. */
  343. PCLS gpclsList;
  344. PCURSOR gpcurFirst;
  345. SYSCFGICO gasyscur[COCR_CONFIGURABLE] = {
  346. {OCR_NORMAL, STR_CURSOR_ARROW , NULL }, // OCR_ARROW_DEFAULT
  347. {OCR_IBEAM, STR_CURSOR_IBEAM , NULL }, // OCR_IBEAM_DEFAULT
  348. {OCR_WAIT, STR_CURSOR_WAIT , NULL }, // OCR_WAIT_DEFAULT
  349. {OCR_CROSS, STR_CURSOR_CROSSHAIR , NULL }, // OCR_CROSS_DEFAULT
  350. {OCR_UP, STR_CURSOR_UPARROW , NULL }, // OCR_UPARROW_DEFAULT
  351. {OCR_SIZENWSE, STR_CURSOR_SIZENWSE , NULL }, // OCR_SIZENWSE_DEFAULT
  352. {OCR_SIZENESW, STR_CURSOR_SIZENESW , NULL }, // OCR_SIZENESW_DEFAULT
  353. {OCR_SIZEWE, STR_CURSOR_SIZEWE , NULL }, // OCR_SIZEWE_DEFAULT
  354. {OCR_SIZENS, STR_CURSOR_SIZENS , NULL }, // OCR_SIZENS_DEFAULT
  355. {OCR_SIZEALL, STR_CURSOR_SIZEALL , NULL }, // OCR_SIZEALL_DEFAULT
  356. {OCR_NO, STR_CURSOR_NO , NULL }, // OCR_NO_DEFAULT
  357. {OCR_APPSTARTING, STR_CURSOR_APPSTARTING, NULL }, // OCR_APPSTARTING_DEFAULT
  358. {OCR_HELP, STR_CURSOR_HELP , NULL }, // OCR_HELP_DEFAULT
  359. {OCR_NWPEN, STR_CURSOR_NWPEN , NULL }, // OCR_NWPEN_DEFAULT
  360. {OCR_HAND, STR_CURSOR_HAND , NULL }, // OCR_HAND_DEFAULT
  361. {OCR_ICON, STR_CURSOR_ICON , NULL }, // OCR_ICON_DEFAULT
  362. {OCR_AUTORUN, STR_CURSOR_AUTORUN , NULL }, // OCR_AUTORUN_DEFAULT
  363. };
  364. SYSCFGICO gasysico[COIC_CONFIGURABLE] = {
  365. {OIC_SAMPLE, STR_ICON_APPLICATION , NULL }, // OIC_APPLICATION_DEFAULT
  366. {OIC_WARNING, STR_ICON_HAND , NULL }, // OIC_WARNING_DEFAULT
  367. {OIC_QUES, STR_ICON_QUESTION , NULL }, // OIC_QUESTION_DEFAULT
  368. {OIC_ERROR, STR_ICON_EXCLAMATION , NULL }, // OIC_ERROR_DEFAULT
  369. {OIC_INFORMATION, STR_ICON_ASTERISK , NULL }, // OIC_INFORMATION_DEFAULT
  370. {OIC_WINLOGO, STR_ICON_WINLOGO , NULL }, // OIC_WINLOGO_DEFAULT
  371. };
  372. /*
  373. * Screen Saver Info
  374. */
  375. PPROCESSINFO gppiScreenSaver;
  376. POINT gptSSCursor;
  377. /*
  378. * Orphaned fullscreen mode changes that DDraw used to cleanup.
  379. */
  380. PPROCESSINFO gppiFullscreen;
  381. /*
  382. * accessibility byte-size data
  383. */
  384. BYTE gLastVkDown;
  385. BYTE gBounceVk;
  386. BYTE gPhysModifierState;
  387. BYTE gCurrentModifierBit;
  388. BYTE gPrevModifierState;
  389. BYTE gLatchBits;
  390. BYTE gLockBits;
  391. BYTE gTKScanCode;
  392. BYTE gMKPreviousVk;
  393. BYTE gbMKMouseMode;
  394. PSCANCODEMAP gpScancodeMap;
  395. BYTE gStickyKeysLeftShiftCount; // # of consecutive left shift key presses.
  396. BYTE gStickyKeysRightShiftCount; // # of consecutive right shift key presses.
  397. /*
  398. * Some terminal data is global in non-Hydra.
  399. */
  400. DWORD gdwGTERMFlags; // GTERMF_ flags
  401. PTHREADINFO gptiRit;
  402. PDESKTOP grpdeskRitInput;
  403. PKEVENT gpkeMouseData;
  404. /*
  405. * Video Information
  406. */
  407. BYTE gbFullScreen = GDIFULLSCREEN;
  408. PDISPLAYINFO gpDispInfo;
  409. BOOL gbMDEVDisabled;
  410. /*
  411. * Count of available cacheDC's. This is used in determining a threshold
  412. * count of DCX_CACHE types available.
  413. */
  414. int gnDCECount;
  415. int gnVisibleRedirectedCount;
  416. /*
  417. * Hung redraw list
  418. */
  419. PVWPL gpvwplHungRedraw;
  420. /*
  421. * SetWindowPos() related globals
  422. */
  423. HRGN ghrgnInvalidSum;
  424. HRGN ghrgnVisNew;
  425. HRGN ghrgnSWP1;
  426. HRGN ghrgnValid;
  427. HRGN ghrgnValidSum;
  428. HRGN ghrgnInvalid;
  429. HRGN ghrgnInv0; // Temp used by InternalInvalidate()
  430. HRGN ghrgnInv1; // Temp used by InternalInvalidate()
  431. HRGN ghrgnInv2; // Temp used by InternalInvalidate()
  432. HDC ghdcMem;
  433. HDC ghdcMem2;
  434. /*
  435. * DC Cache related globals
  436. */
  437. HRGN ghrgnGDC; // Temp used by GetCacheDC et al
  438. /*
  439. * SPB related globals
  440. */
  441. HRGN ghrgnSCR; // Temp used by SpbCheckRect()
  442. HRGN ghrgnSPB1;
  443. HRGN ghrgnSPB2;
  444. /*
  445. * ScrollWindow/ScrollDC related globals
  446. */
  447. HRGN ghrgnSW; // Temps used by ScrollDC/ScrollWindow
  448. HRGN ghrgnScrl1;
  449. HRGN ghrgnScrl2;
  450. HRGN ghrgnScrlVis;
  451. HRGN ghrgnScrlSrc;
  452. HRGN ghrgnScrlDst;
  453. HRGN ghrgnScrlValid;
  454. /*
  455. * General Device and Driver information
  456. */
  457. PDEVICEINFO gpDeviceInfoList;
  458. PERESOURCE gpresDeviceInfoList;
  459. #if DBG
  460. DWORD gdwDeviceInfoListCritSecUseCount; // bumped for every enter and leave
  461. DWORD gdwInAtomicDeviceInfoListOperation; // inc/dec for BEGIN/ENDATOMICDEVICEINFOLISTCHECK
  462. #endif
  463. PDRIVER_OBJECT gpWin32kDriverObject;
  464. DWORD gnRetryReadInput;
  465. /*
  466. * Mouse Information
  467. */
  468. MOUSEEVENT gMouseEventQueue[NELEM_BUTTONQUEUE];
  469. DWORD gdwMouseQueueHead;
  470. DWORD gdwMouseEvents;
  471. PERESOURCE gpresMouseEventQueue;
  472. int gnMice;
  473. #ifdef GENERIC_INPUT
  474. /*
  475. * USB based Human Input Device (HID) Information
  476. */
  477. PKEVENT gpkeHidChange;
  478. HID_REQUEST_TABLE gHidRequestTable;
  479. /*
  480. * Number of the HID device currently attached to the system
  481. */
  482. int gnHid;
  483. /*
  484. * Number of the processes that are HID aware
  485. * N.b. this may not include the process only interested in
  486. * raw input of the legacy devices (kbd/mouse)
  487. */
  488. int gnHidProcess;
  489. #endif
  490. /*
  491. * Keyboard Information
  492. */
  493. KEYBOARD_ATTRIBUTES gKeyboardInfo = {
  494. // Initial default settings:
  495. {4, 0}, // Keyboard Identifier (Type, Subtype)
  496. 1, // KeyboardMode (Scancode Set 1)
  497. 12, // NumberOfFunction keys
  498. 3, // NumberOfIndicators (CapsLock, NumLock ScrollLock)
  499. 104, // NumberOfKeysTotal
  500. 0, // InputDataQueueLength
  501. {0, 0, 0}, // KeyRepeatMinimum (UnitId, Rate, Delay)
  502. {0, 0, 0}, // KeyRepeatMaximum (UnitId, Rate, Delay)
  503. };
  504. CONST KEYBOARD_ATTRIBUTES gKeyboardDefaultInfo = {
  505. // Initial default settings:
  506. {4, 0}, // Keyboard Identifier (Type, Subtype)
  507. 1, // KeyboardMode (Scancode Set 1)
  508. 12, // NumberOfFunction keys
  509. 3, // NumberOfIndicators (CapsLock, NumLock ScrollLock)
  510. 104, // NumberOfKeysTotal
  511. 0, // InputDataQueueLength
  512. {0, 2, 250}, // KeyRepeatMinimum (UnitId, Rate, Delay)
  513. {0, 30, 1000}, // KeyRepeatMaximum (UnitId, Rate, Delay)
  514. };
  515. KEYBOARD_INDICATOR_PARAMETERS gklp;
  516. KEYBOARD_INDICATOR_PARAMETERS gklpBootTime;
  517. KEYBOARD_TYPEMATIC_PARAMETERS gktp;
  518. int gnKeyboards;
  519. /*
  520. * This is the IO Status block used for IOCTL_KEYBOARD_ICA_SCANMAP,
  521. * IOCTL_KEYBOARD_QUERY_ATTRIBUTES and IOCTL_KEYBOARD_SET_INDICATORS
  522. */
  523. IO_STATUS_BLOCK giosbKbdControl;
  524. /*
  525. * IME status for keyboard device
  526. */
  527. KEYBOARD_IME_STATUS gKbdImeStatus;
  528. /*
  529. * Async key state tables. gafAsyncKeyState holds the down bit and toggle
  530. * bit, gafAsyncKeyStateRecentDown hold the bits indicates a key has gone
  531. * down since the last read.
  532. */
  533. BYTE gafAsyncKeyState[CBKEYSTATE];
  534. BYTE gafAsyncKeyStateRecentDown[CBKEYSTATERECENTDOWN];
  535. /*
  536. * Raw Key state: this is the low-level async keyboard state.
  537. * (assuming Scancodes are correctly translated to Virtual Keys). It is used
  538. * for modifying and processing key events as they are received in ntinput.c
  539. * The Virtual Keys recorded here are obtained directly from the Virtual
  540. * Scancode via the awVSCtoVK[] table: no shift-state, numlock or other
  541. * conversions are applied.
  542. * This IS affected by injected keystrokes (SendInput, keybd_event) so that
  543. * on-screen-keyboards and other accessibility components work just like the
  544. * real keyboard: with the exception of the SAS (Ctrl-Alt-Del), which checks
  545. * real physically pressed modifier keys (gfsSASModifiersDown).
  546. * Left & right SHIFT, CTRL and ALT keys are distinct. (VK_RSHIFT etc.)
  547. * See also: SetRawKeyDown() etc.
  548. */
  549. BYTE gafRawKeyState[CBKEYSTATE];
  550. BOOLEAN gfKanaToggle;
  551. DWORD gdwUpdateKeyboard;
  552. HARDERRORHANDLER gHardErrorHandler;
  553. /*
  554. * WinLogon specific information:
  555. * Note: SAS modifiers are a combination of MOD_SHIFT, MOD_CONTROL, MOD_ALT
  556. * not a combination of KBDSHIFT, KBDCTRL, KBDALT (different values!)
  557. */
  558. UINT gfsSASModifiers; // SAS modifiers
  559. UINT gfsSASModifiersDown; // SAS modifiers really physically down
  560. UINT gvkSAS; // The Secure Attention Sequence (SAS) key.
  561. /*
  562. * IME status for shell and keyboard driver notification
  563. */
  564. DWORD gdwIMEOpenStatus = 0xffffffff;
  565. DWORD gdwIMEConversionStatus = 0xffffffff;
  566. HIMC gHimcFocus = (HIMC)(INT_PTR)(INT)0xffffffff;
  567. BOOL gfIMEShowStatus;
  568. #ifdef MOUSE_IP
  569. /*
  570. * Sonar
  571. */
  572. int giSonarRadius = -1;
  573. BYTE gbLastVkForSonar;
  574. BYTE gbVkForSonarKick = VK_CONTROL;
  575. POINT gptSonarCenter;
  576. #endif
  577. /*
  578. * Clicklock
  579. */
  580. BOOL gfStartClickLock;
  581. DWORD gdwStartClickLockTick;
  582. /*
  583. * The global array used by GetMouseMovePointsEx
  584. */
  585. MOUSEMOVEPOINT gaptMouse[MAX_MOUSEPOINTS];
  586. /*
  587. * Index in the gaptMouse array where the next mouse point will
  588. * be written. gptInd goes circular in the gaptMouse array.
  589. * It is initialized to 1 so the first point is (0, 0)
  590. */
  591. UINT gptInd = 1;
  592. /*
  593. * We get this warning if we don't explicitly initalize gZero:
  594. *
  595. * C4132: 'gZero' : const object should be initialized
  596. *
  597. * But we can't explicitly initialize it since it is a union. So
  598. * we turn the warning off.
  599. */
  600. #pragma warning(disable:4132)
  601. CONST ALWAYSZERO gZero;
  602. #pragma warning(default:4132)
  603. PSMS gpsmsList;
  604. TERMINAL gTermIO;
  605. TERMINAL gTermNOIO;
  606. PWINDOWSTATION grpWinStaList;
  607. /*
  608. * the logon desktop
  609. */
  610. PDESKTOP grpdeskLogon;
  611. HANDLE CsrApiPort;
  612. CONST LUID luidSystem = SYSTEM_LUID;
  613. PKBDFILE gpkfList;
  614. PTHREADINFO gptiCurrent;
  615. PTIMER gptmrFirst;
  616. PKTIMER gptmrMaster;
  617. DWORD gcmsLastTimer;
  618. BOOL gbMasterTimerSet;
  619. /*
  620. * Time this session was created.
  621. */
  622. ULONGLONG gSessionCreationTime;
  623. BOOL gbDisableAlpha;
  624. /*
  625. * This constant is the max USER handles allowed in a process. It is
  626. * meant to prevent runaway apps from eating the system. It is changed
  627. * via a registry setting -- PMAP_WINDOWSM/USERProcessHandleQuota.
  628. */
  629. LONG gUserProcessHandleQuota;
  630. /*
  631. * This global variable limits the maximum number of posted message
  632. * per thread. If the number of message posted to a thread exceeds
  633. * this value, PostMessage will fail.
  634. */
  635. DWORD gUserPostMessageLimit;
  636. /*
  637. * Active Accessibility - Window Events
  638. */
  639. PEVENTHOOK gpWinEventHooks; // list of installed hooks
  640. PNOTIFY gpPendingNotifies; // FILO of outstanding notifications
  641. PNOTIFY gpLastPendingNotify; // end of above list.
  642. DWORD gdwDeferWinEvent; // Defer notification is > 0
  643. /*
  644. * This is the timeout value used for callbacks to low level hook procs.
  645. */
  646. int gnllHooksTimeout;
  647. /*
  648. * UserApiHook
  649. */
  650. int gihmodUserApiHook = -1;
  651. ULONG_PTR goffPfnInitUserApiHook;
  652. PPROCESSINFO gppiUserApiHook;
  653. /*
  654. * gpusMouseVKey
  655. */
  656. extern CONST USHORT ausMouseVKey[];
  657. PUSHORT gpusMouseVKey = (PUSHORT)ausMouseVKey;
  658. USHORT gNumLockVk = VK_NUMLOCK;
  659. USHORT gOemScrollVk = VK_SCROLL;
  660. CONST WCHAR szNull[2] = { TEXT('\0'), TEXT('\015') };
  661. WCHAR szWindowStationDirectory[MAX_SESSION_PATH];
  662. CONST WCHAR szOneChar[] = TEXT("0");
  663. CONST WCHAR szY[] = TEXT("Y");
  664. CONST WCHAR szy[] = TEXT("y");
  665. CONST WCHAR szN[] = TEXT("N");
  666. HBRUSH ghbrWhite;
  667. HBRUSH ghbrBlack;
  668. HFONT ghFontSys;
  669. HANDLE hModuleWin; // win32k.sys hmodule
  670. HANDLE hModClient; // user32.dll hModule
  671. #if DBG
  672. LONG TraceInitialization;
  673. #endif
  674. DESKTOPINFO diStatic;
  675. /*
  676. * DWORD incremented with each new desktop, so GDI can match display devices
  677. * with desktops appropriately. Since at boot time there is no desktop
  678. * structure, we cannot use the desktop itself for this purpose.
  679. */
  680. ULONG gdwDesktopId = GW_DESKTOP_ID + 1;
  681. PERESOURCE gpresUser;
  682. PFAST_MUTEX gpHandleFlagsMutex;
  683. PROC gpfnwp[ICLS_MAX];
  684. #ifdef HUNGAPP_GHOSTING
  685. PKEVENT gpEventScanGhosts;
  686. ATOM gatomGhost;
  687. #endif
  688. ATOM gatomShadow;
  689. ATOM gatomConsoleClass;
  690. ATOM gatomFirstPinned;
  691. ATOM gatomLastPinned;
  692. ATOM gatomMessage;
  693. ATOM gaOleMainThreadWndClass;
  694. ATOM gaFlashWState;
  695. ATOM atomCheckpointProp;
  696. ATOM atomDDETrack;
  697. ATOM atomQOS;
  698. ATOM atomDDEImp;
  699. ATOM atomWndObj;
  700. ATOM atomImeLevel;
  701. ATOM atomLayer;
  702. #ifdef POOL_INSTR
  703. DWORD gdwAllocCrt; // the index for the current allocation
  704. #endif // POOL_INSTR
  705. UINT guiOtherWindowCreated;
  706. UINT guiOtherWindowDestroyed;
  707. UINT guiActivateShellWindow;
  708. ATOM atomUSER32;
  709. HANDLE gpidLogon;
  710. PEPROCESS gpepCSRSS;
  711. PEPROCESS gpepInit;
  712. int giLowPowerTimeOutMs;
  713. int giPowerOffTimeOutMs;
  714. /*
  715. * Security info
  716. */
  717. CONST GENERIC_MAPPING KeyMapping = {KEY_READ, KEY_WRITE, KEY_EXECUTE, KEY_ALL_ACCESS};
  718. CONST GENERIC_MAPPING WinStaMapping = {
  719. WINSTA_ENUMDESKTOPS | WINSTA_READATTRIBUTES | WINSTA_ENUMERATE |
  720. WINSTA_READSCREEN | STANDARD_RIGHTS_READ,
  721. WINSTA_ACCESSCLIPBOARD | WINSTA_CREATEDESKTOP | WINSTA_WRITEATTRIBUTES |
  722. STANDARD_RIGHTS_WRITE,
  723. WINSTA_ACCESSGLOBALATOMS | WINSTA_EXITWINDOWS | STANDARD_RIGHTS_EXECUTE,
  724. WINSTA_ENUMDESKTOPS | WINSTA_READATTRIBUTES | WINSTA_ENUMERATE |
  725. WINSTA_READSCREEN | WINSTA_ACCESSCLIPBOARD | WINSTA_CREATEDESKTOP |
  726. WINSTA_WRITEATTRIBUTES | WINSTA_ACCESSGLOBALATOMS |
  727. WINSTA_EXITWINDOWS | STANDARD_RIGHTS_REQUIRED
  728. };
  729. /*
  730. * Desktop generic mapping.
  731. */
  732. CONST GENERIC_MAPPING DesktopMapping = {
  733. DESKTOP_READOBJECTS | DESKTOP_ENUMERATE |
  734. #ifdef REDIRECTION
  735. DESKTOP_QUERY_INFORMATION |
  736. #endif // REDIRECTION
  737. STANDARD_RIGHTS_READ,
  738. DESKTOP_WRITEOBJECTS | DESKTOP_CREATEWINDOW | DESKTOP_CREATEMENU |
  739. DESKTOP_HOOKCONTROL | DESKTOP_JOURNALRECORD |
  740. DESKTOP_JOURNALPLAYBACK |
  741. #ifdef REDIRECTION
  742. DESKTOP_REDIRECT |
  743. #endif // REDIRECTION
  744. STANDARD_RIGHTS_WRITE,
  745. DESKTOP_SWITCHDESKTOP | STANDARD_RIGHTS_EXECUTE,
  746. DESKTOP_READOBJECTS | DESKTOP_WRITEOBJECTS | DESKTOP_ENUMERATE |
  747. DESKTOP_CREATEWINDOW | DESKTOP_CREATEMENU | DESKTOP_HOOKCONTROL |
  748. DESKTOP_JOURNALRECORD | DESKTOP_JOURNALPLAYBACK |
  749. #ifdef REDIRECTION
  750. DESKTOP_QUERY_INFORMATION | DESKTOP_REDIRECT |
  751. #endif // REDIRECTION
  752. DESKTOP_SWITCHDESKTOP | STANDARD_RIGHTS_REQUIRED
  753. };
  754. /*
  755. * Pointer to shared SERVERINFO data.
  756. */
  757. PSERVERINFO gpsi;
  758. SHAREDINFO gSharedInfo;
  759. /*
  760. * Handle table globals.
  761. */
  762. DWORD giheLast; /* index to last allocated handle entry */
  763. DWORD gdwDesktopSectionSize;
  764. DWORD gdwNOIOSectionSize;
  765. #if defined (USER_PERFORMANCE)
  766. /*
  767. * To turn on performance counters, you have to set the environment variable
  768. * USER_PERFORMANCE when compiling win32k.sys
  769. */
  770. CSSTATISTICS gCSStatistics;
  771. #endif // USER_PERFORMANCE
  772. SECURITY_QUALITY_OF_SERVICE gqosDefault = {
  773. sizeof(SECURITY_QUALITY_OF_SERVICE),
  774. SecurityImpersonation,
  775. SECURITY_STATIC_TRACKING,
  776. TRUE
  777. };
  778. CONST COLORREF gargbInitial[COLOR_MAX] = {
  779. RGB(192, 192, 192), // COLOR_SCROLLBAR
  780. RGB( 58, 110, 165), // COLOR_BACKGROUND
  781. RGB(000, 000, 128), // COLOR_ACTIVECAPTION
  782. RGB(128, 128, 128), // COLOR_INACTIVECAPTION
  783. RGB(192, 192, 192), // COLOR_MENU
  784. RGB(255, 255, 255), // COLOR_WINDOW
  785. RGB(000, 000, 000), // COLOR_WINDOWFRAME
  786. RGB(000, 000, 000), // COLOR_MENUTEXT
  787. RGB(000, 000, 000), // COLOR_WINDOWTEXT
  788. RGB(255, 255, 255), // COLOR_CAPTIONTEXT
  789. RGB(192, 192, 192), // COLOR_ACTIVEBORDER
  790. RGB(192, 192, 192), // COLOR_INACTIVEBORDER
  791. RGB(128, 128, 128), // COLOR_APPWORKSPACE
  792. RGB(000, 000, 128), // COLOR_HIGHLIGHT
  793. RGB(255, 255, 255), // COLOR_HIGHLIGHTTEXT
  794. RGB(192, 192, 192), // COLOR_BTNFACE
  795. RGB(128, 128, 128), // COLOR_BTNSHADOW
  796. RGB(128, 128, 128), // COLOR_GRAYTEXT
  797. RGB(000, 000, 000), // COLOR_BTNTEXT
  798. RGB(192, 192, 192), // COLOR_INACTIVECAPTIONTEXT
  799. RGB(255, 255, 255), // COLOR_BTNHIGHLIGHT
  800. RGB(000, 000, 000), // COLOR_3DDKSHADOW
  801. RGB(223, 223, 223), // COLOR_3DLIGHT
  802. RGB(000, 000, 000), // COLOR_INFOTEXT
  803. RGB(255, 255, 225), // COLOR_INFOBK
  804. RGB(180, 180, 180), // COLOR_3DALTFACE /* unused */
  805. RGB( 0, 0, 255), // COLOR_HOTLIGHT
  806. RGB( 16, 132, 208), // COLOR_GRADIENTACTIVECAPTION
  807. RGB(181, 181, 181), // COLOR_GRADIENTINACTIVECAPTION
  808. RGB(210, 210, 255), // COLOR_MENUHILIGHT
  809. RGB(212, 208, 200) // COLOR_MENUBAR
  810. };
  811. POWERSTATE gPowerState;
  812. WCHAR gszMIN[15];
  813. WCHAR gszMAX[15];
  814. WCHAR gszRESUP[20];
  815. WCHAR gszRESDOWN[20];
  816. WCHAR gszHELP[20];
  817. /* Commented out due to TandyT ...
  818. * WCHAR gszSMENU[30];
  819. */
  820. WCHAR gszSCLOSE[15];
  821. WCHAR gszCAPTIONTOOLTIP[CAPTIONTOOLTIPLEN];
  822. /*
  823. * Pointer to shared SERVERINFO data.
  824. */
  825. HANDLE ghSectionShared;
  826. PVOID gpvSharedBase;
  827. PWIN32HEAP gpvSharedAlloc;
  828. BOOL gbVideoInitialized;
  829. BOOL gbNoMorePowerCallouts;
  830. BOOL gbCleanedUpResources;
  831. WSINFO gWinStationInfo;
  832. ULONG gSessionId; // the session id. The fisrt session has the id 0
  833. BOOL gbRemoteSession; // TRUE if win32k is for a remote session
  834. PDESKTOP gspdeskDisconnect;
  835. PDESKTOP gspdeskShouldBeForeground;
  836. BOOL gbDesktopLocked;
  837. HANDLE ghRemoteVideoChannel;
  838. HANDLE ghRemoteMouseChannel;
  839. HANDLE ghRemoteBeepChannel;
  840. PVOID gpRemoteBeepDevice;
  841. HANDLE ghRemoteKeyboardChannel;
  842. HANDLE ghRemoteThinwireChannel;
  843. USHORT gProtocolType; /* Starts as PROTOCOL_CONSOLE */
  844. USHORT gConsoleShadowProtocolType;
  845. BOOL gfSwitchInProgress;
  846. BOOL gfRemotingConsole;
  847. HANDLE ghConsoleShadowVideoChannel;
  848. HANDLE ghConsoleShadowMouseChannel;
  849. HANDLE ghConsoleShadowBeepChannel;
  850. PVOID gpConsoleShadowBeepDevice;
  851. HANDLE ghConsoleShadowKeyboardChannel;
  852. HANDLE ghConsoleShadowThinwireChannel;
  853. KHANDLE gConsoleShadowhDev;
  854. PKEVENT gpConsoleShadowDisplayChangeEvent;
  855. CLIENTKEYBOARDTYPE gRemoteClientKeyboardType;
  856. BOOL gfSessionSwitchBlock;
  857. BOOL gbExitInProgress;
  858. BOOL gbCleanupInitiated;
  859. BOOL gbStopReadInput;
  860. BOOL gbFreezeScreenUpdates;
  861. ULONG gSetLedReceived;
  862. BOOL gbClientDoubleClickSupport;
  863. BOOL gfEnableWindowsKey = TRUE;
  864. BOOL gbDisconnectHardErrorAttach;
  865. PKEVENT gpevtDesktopDestroyed;
  866. PKEVENT gpevtVideoportCallout;
  867. HDESK ghDisconnectDesk;
  868. HWINSTA ghDisconnectWinSta;
  869. ULONG gnShadowers;
  870. BOOL gbConnected;
  871. WCHAR gstrBaseWinStationName[WINSTATIONNAME_LENGTH];
  872. PFILE_OBJECT gVideoFileObject;
  873. PFILE_OBJECT gThinwireFileObject;
  874. PFILE_OBJECT gConsoleShadowVideoFileObject;
  875. PFILE_OBJECT gConsoleShadowThinwireFileObject;
  876. PVOID gpThinWireCache;
  877. PVOID gpConsoleShadowThinWireCache;
  878. WMSNAPSHOT gwms;
  879. BOOL gbSnapShotWindowsAndMonitors;
  880. BOOL gbPnPWaiting;
  881. PKEVENT gpEventPnPWainting;
  882. PVOID ghKbdTblBase;
  883. ULONG guKbdTblSize;
  884. DWORD gdwHydraHint;
  885. DWORD gdwCanPaintDesktop;
  886. WCHAR gszUserName[40];
  887. WCHAR gszDomainName[40];
  888. WCHAR gszComputerName[40];
  889. /*
  890. * Used for keeping track of stub parent processes that exit too early.
  891. */
  892. HANDLE ghCanActivateForegroundPIDs[ACTIVATE_ARRAY_SIZE];
  893. DWORD gdwGuiThreads;
  894. /////////////////////////////////////////////////////////////////////////////
  895. /////////////////////////////////////////////////////////////////////////////
  896. /*
  897. * The section below has debug only globals
  898. *
  899. */
  900. /////////////////////////////////////////////////////////////////////////////
  901. /////////////////////////////////////////////////////////////////////////////
  902. /*
  903. * Debug only globals
  904. */
  905. #if DBG
  906. BOOL gbTraceHydraApi;
  907. BOOL gbTraceDesktop;
  908. DWORD gdwCritSecUseCount; // bumped for every enter and leave
  909. DWORD gdwInAtomicOperation;
  910. /*
  911. * Debug Active Accessibility - ensure deferred win events are not lost.
  912. */
  913. int gnDeferredWinEvents;
  914. LPCSTR gapszFNID[] = {
  915. "FNID_SCROLLBAR",
  916. "FNID_ICONTITLE",
  917. "FNID_MENU",
  918. "FNID_DESKTOP",
  919. "FNID_DEFWINDOWPROC",
  920. "FNID_MESSAGEWND",
  921. "FNID_SWITCH",
  922. "FNID_MESSAGE",
  923. "FNID_BUTTON",
  924. "FNID_COMBOBOX",
  925. "FNID_COMBOLISTBOX",
  926. "FNID_DIALOG",
  927. "FNID_EDIT",
  928. "FNID_LISTBOX",
  929. "FNID_MDICLIENT",
  930. "FNID_STATIC",
  931. "FNID_IME",
  932. "FNID_HKINLPCWPEXSTRUCT",
  933. "FNID_HKINLPCWPRETEXSTRUCT",
  934. "FNID_DEFFRAMEPROC",
  935. "FNID_DEFMDICHILDPROC",
  936. "FNID_MB_DLGPROC",
  937. "FNID_MDIACTIVATEDLGPROC",
  938. "FNID_SENDMESSAGE",
  939. "FNID_SENDMESSAGEFF",
  940. "FNID_SENDMESSAGEEX",
  941. "FNID_CALLWINDOWPROC",
  942. "FNID_SENDMESSAGEBSM",
  943. "FNID_TOOLTIP",
  944. "FNID_GHOST",
  945. "FNID_SENDNOTIFYMESSAGE",
  946. "FNID_SENDMESSAGECALLBACK"
  947. };
  948. LPCSTR gapszMessage[] = {
  949. "WM_NULL",
  950. "WM_CREATE",
  951. "WM_DESTROY",
  952. "WM_MOVE",
  953. "WM_SIZEWAIT",
  954. "WM_SIZE",
  955. "WM_ACTIVATE",
  956. "WM_SETFOCUS",
  957. "WM_KILLFOCUS",
  958. "WM_SETVISIBLE",
  959. "WM_ENABLE",
  960. "WM_SETREDRAW",
  961. "WM_SETTEXT",
  962. "WM_GETTEXT",
  963. "WM_GETTEXTLENGTH",
  964. "WM_PAINT",
  965. "WM_CLOSE",
  966. "WM_QUERYENDSESSION",
  967. "WM_QUIT",
  968. "WM_QUERYOPEN",
  969. "WM_ERASEBKGND",
  970. "WM_SYSCOLORCHANGE",
  971. "WM_ENDSESSION",
  972. "WM_SYSTEMERROR",
  973. "WM_SHOWWINDOW",
  974. "WM_CTLCOLOR",
  975. "WM_WININICHANGE",
  976. "WM_DEVMODECHANGE",
  977. "WM_ACTIVATEAPP",
  978. "WM_FONTCHANGE",
  979. "WM_TIMECHANGE",
  980. "WM_CANCELMODE",
  981. "WM_SETCURSOR",
  982. "WM_MOUSEACTIVATE",
  983. "WM_CHILDACTIVATE",
  984. "WM_QUEUESYNC",
  985. "WM_GETMINMAXINFO",
  986. "WM_LOGOFF",
  987. "WM_PAINTICON",
  988. "WM_ICONERASEBKGND",
  989. "WM_NEXTDLGCTL",
  990. "WM_ALTTABACTIVE",
  991. "WM_SPOOLERSTATUS",
  992. "WM_DRAWITEM",
  993. "WM_MEASUREITEM",
  994. "WM_DELETEITEM",
  995. "WM_VKEYTOITEM",
  996. "WM_CHARTOITEM",
  997. "WM_SETFONT",
  998. "WM_GETFONT",
  999. "WM_SETHOTKEY",
  1000. "WM_GETHOTKEY",
  1001. "WM_FILESYSCHANGE",
  1002. "WM_ISACTIVEICON",
  1003. "WM_QUERYPARKICON",
  1004. "WM_QUERYDRAGICON",
  1005. "WM_WINHELP",
  1006. "WM_COMPAREITEM",
  1007. "WM_FULLSCREEN",
  1008. "WM_CLIENTSHUTDOWN",
  1009. "WM_DDEMLEVENT",
  1010. "WM_GETOBJECT",
  1011. "fnEmpty",
  1012. "MM_CALCSCROLL",
  1013. "WM_TESTING",
  1014. "WM_COMPACTING",
  1015. "WM_OTHERWINDOWCREATED",
  1016. "WM_OTHERWINDOWDESTROYED",
  1017. "WM_COMMNOTIFY",
  1018. "WM_MEDIASTATUSCHANGE",
  1019. "WM_WINDOWPOSCHANGING",
  1020. "WM_WINDOWPOSCHANGED",
  1021. "WM_POWER",
  1022. "WM_COPYGLOBALDATA",
  1023. "WM_COPYDATA",
  1024. "WM_CANCELJOURNAL",
  1025. "WM_LOGONNOTIFY",
  1026. "WM_KEYF1",
  1027. "WM_NOTIFY",
  1028. "WM_ACCESS_WINDOW",
  1029. "WM_INPUTLANGCHANGEREQUE",
  1030. "WM_INPUTLANGCHANGE",
  1031. "WM_TCARD",
  1032. "WM_HELP",
  1033. "WM_USERCHANGED",
  1034. "WM_NOTIFYFORMAT",
  1035. "fnEmpty",
  1036. "fnEmpty",
  1037. "fnEmpty",
  1038. "fnEmpty",
  1039. "fnEmpty",
  1040. "fnEmpty",
  1041. "fnEmpty",
  1042. "fnEmpty",
  1043. "fnEmpty",
  1044. "fnEmpty",
  1045. "fnEmpty",
  1046. "fnEmpty",
  1047. "fnEmpty",
  1048. "fnEmpty",
  1049. "fnEmpty",
  1050. "fnEmpty",
  1051. "fnEmpty",
  1052. "fnEmpty",
  1053. "fnEmpty",
  1054. "fnEmpty",
  1055. "fnEmpty",
  1056. "fnEmpty",
  1057. "fnEmpty",
  1058. "fnEmpty",
  1059. "fnEmpty",
  1060. "fnEmpty",
  1061. "WM_FINALDESTROY",
  1062. "WM_MEASUREITEM_CLIENTDATA",
  1063. "WM_TASKACTIVATED",
  1064. "WM_TASKDEACTIVATED",
  1065. "WM_TASKCREATED",
  1066. "WM_TASKDESTROYED",
  1067. "WM_TASKUICHANGED",
  1068. "WM_TASKVISIBLE",
  1069. "WM_TASKNOTVISIBLE",
  1070. "WM_SETCURSORINFO",
  1071. "fnEmpty",
  1072. "WM_CONTEXTMENU",
  1073. "WM_STYLECHANGING",
  1074. "WM_STYLECHANGED",
  1075. "WM_DISPLAYCHANGE",
  1076. "WM_GETICON",
  1077. "WM_SETICON",
  1078. "WM_NCCREATE",
  1079. "WM_NCDESTROY",
  1080. "WM_NCCALCSIZE",
  1081. "WM_NCHITTEST",
  1082. "WM_NCPAINT",
  1083. "WM_NCACTIVATE",
  1084. "WM_GETDLGCODE",
  1085. "WM_SYNCPAINT",
  1086. "WM_SYNCTASK",
  1087. "fnEmpty",
  1088. "WM_KLUDGEMINRECT",
  1089. "WM_LPKDRAWSWITCHWND",
  1090. "fnEmpty",
  1091. "fnEmpty",
  1092. "fnEmpty",
  1093. "fnEmpty",
  1094. "fnEmpty",
  1095. "fnEmpty",
  1096. "fnEmpty",
  1097. "fnEmpty",
  1098. "fnEmpty",
  1099. "fnEmpty",
  1100. "fnEmpty",
  1101. "fnEmpty",
  1102. "fnEmpty",
  1103. "fnEmpty",
  1104. "fnEmpty",
  1105. "fnEmpty",
  1106. "fnEmpty",
  1107. "fnEmpty",
  1108. "fnEmpty",
  1109. "WM_NCMOUSEMOVE",
  1110. "WM_NCLBUTTONDOWN",
  1111. "WM_NCLBUTTONUP",
  1112. "WM_NCLBUTTONDBLCLK",
  1113. "WM_NCRBUTTONDOWN",
  1114. "WM_NCRBUTTONUP",
  1115. "WM_NCRBUTTONDBLCLK",
  1116. "WM_NCMBUTTONDOWN",
  1117. "WM_NCMBUTTONUP",
  1118. "WM_NCMBUTTONDBLCLK",
  1119. "fnEmpty",
  1120. "WM_NCXBUTTONDOWN",
  1121. "WM_NCXBUTTONUP",
  1122. "WM_NCXBUTTONDBLCLK",
  1123. "WM_NCUAHDRAWCAPTION",
  1124. "WM_NCUAHDRAWFRAME",
  1125. "EM_GETSEL",
  1126. "EM_SETSEL",
  1127. "EM_GETRECT",
  1128. "EM_SETRECT",
  1129. "EM_SETRECTNP",
  1130. "EM_SCROLL",
  1131. "EM_LINESCROLL",
  1132. "EM_SCROLLCARET",
  1133. "EM_GETMODIFY",
  1134. "EM_SETMODIFY",
  1135. "EM_GETLINECOUNT",
  1136. "EM_LINEINDEX",
  1137. "EM_SETHANDLE",
  1138. "EM_GETHANDLE",
  1139. "EM_GETTHUMB",
  1140. "fnEmpty",
  1141. "fnEmpty",
  1142. "EM_LINELENGTH",
  1143. "EM_REPLACESEL",
  1144. "EM_SETFONT",
  1145. "EM_GETLINE",
  1146. "EM_LIMITTEXT",
  1147. "EM_CANUNDO",
  1148. "EM_UNDO",
  1149. "EM_FMTLINES",
  1150. "EM_LINEFROMCHAR",
  1151. "EM_SETWORDBREAK",
  1152. "EM_SETTABSTOPS",
  1153. "EM_SETPASSWORDCHAR",
  1154. "EM_EMPTYUNDOBUFFER",
  1155. "EM_GETFIRSTVISIBLELINE",
  1156. "EM_SETREADONLY",
  1157. "EM_SETWORDBREAKPROC",
  1158. "EM_GETWORDBREAKPROC",
  1159. "EM_GETPASSWORDCHAR",
  1160. "EM_SETMARGINS",
  1161. "EM_GETMARGINS",
  1162. "EM_GETLIMITTEXT",
  1163. "EM_POSFROMCHAR",
  1164. "EM_CHARFROMPOS",
  1165. "EM_SETIMESTATUS",
  1166. "EM_GETIMESTATUS",
  1167. "EM_MSGMAX",
  1168. "fnEmpty",
  1169. "fnEmpty",
  1170. "fnEmpty",
  1171. "fnEmpty",
  1172. "fnEmpty",
  1173. "SBM_SETPOS",
  1174. "SBM_GETPOS",
  1175. "SBM_SETRANGE",
  1176. "SBM_GETRANGE",
  1177. "fnEmpty",
  1178. "fnEmpty",
  1179. "SBM_SETRANGEREDRAW",
  1180. "fnEmpty",
  1181. "fnEmpty",
  1182. "SBM_SETSCROLLINFO",
  1183. "SBM_GETSCROLLINFO",
  1184. "fnEmpty",
  1185. "fnEmpty",
  1186. "fnEmpty",
  1187. "fnEmpty",
  1188. "fnEmpty",
  1189. "BM_GETCHECK",
  1190. "BM_SETCHECK",
  1191. "BM_GETSTATE",
  1192. "BM_SETSTATE",
  1193. "BM_SETSTYLE",
  1194. "BM_CLICK",
  1195. "BM_GETIMAGE",
  1196. "BM_SETIMAGE",
  1197. "fnEmpty",
  1198. "fnEmpty",
  1199. "fnEmpty",
  1200. "fnEmpty",
  1201. "fnEmpty",
  1202. "fnEmpty",
  1203. "fnEmpty",
  1204. "WM_INPUT",
  1205. "WM_KEYDOWN",
  1206. "WM_KEYUP",
  1207. "WM_CHAR",
  1208. "WM_DEADCHAR",
  1209. "WM_SYSKEYDOWN",
  1210. "WM_SYSKEYUP",
  1211. "WM_SYSCHAR",
  1212. "WM_SYSDEADCHAR",
  1213. "WM_YOMICHAR",
  1214. "WM_UNICHAR",
  1215. "WM_CONVERTREQUEST",
  1216. "WM_CONVERTRESULT",
  1217. "WM_INTERIM",
  1218. "WM_IME_STARTCOMPOSITION",
  1219. "WM_IME_ENDCOMPOSITION",
  1220. "WM_IME_COMPOSITION",
  1221. "WM_INITDIALOG",
  1222. "WM_COMMAND",
  1223. "WM_SYSCOMMAND",
  1224. "WM_TIMER",
  1225. "WM_HSCROLL",
  1226. "WM_VSCROLL",
  1227. "WM_INITMENU",
  1228. "WM_INITMENUPOPUP",
  1229. "WM_SYSTIMER",
  1230. "fnEmpty",
  1231. "fnEmpty",
  1232. "fnEmpty",
  1233. "fnEmpty",
  1234. "fnEmpty",
  1235. "fnEmpty",
  1236. "WM_MENUSELECT",
  1237. "WM_MENUCHAR",
  1238. "WM_ENTERIDLE",
  1239. "WM_MENURBUTTONUP",
  1240. "WM_MENUDRAG",
  1241. "WM_MENUGETOBJECT",
  1242. "WM_UNINITMENUPOPUP",
  1243. "WM_MENUCOMMAND",
  1244. "WM_CHANGEUISTATE",
  1245. "WM_UPDATEUISTATE",
  1246. "WM_QUERYUISTATE",
  1247. "fnEmpty",
  1248. "fnEmpty",
  1249. "fnEmpty",
  1250. "fnEmpty",
  1251. "fnEmpty",
  1252. "fnEmpty",
  1253. "fnEmpty",
  1254. "WM_LBTRACKPOINT",
  1255. "WM_CTLCOLORMSGBOX",
  1256. "WM_CTLCOLOREDIT",
  1257. "WM_CTLCOLORLISTBOX",
  1258. "WM_CTLCOLORBTN",
  1259. "WM_CTLCOLORDLG",
  1260. "WM_CTLCOLORSCROLLBAR",
  1261. "WM_CTLCOLORSTATIC",
  1262. "fnEmpty",
  1263. "fnEmpty",
  1264. "fnEmpty",
  1265. "fnEmpty",
  1266. "fnEmpty",
  1267. "fnEmpty",
  1268. "fnEmpty",
  1269. "CB_GETEDITSEL",
  1270. "CB_LIMITTEXT",
  1271. "CB_SETEDITSEL",
  1272. "CB_ADDSTRING",
  1273. "CB_DELETESTRING",
  1274. "CB_DIR",
  1275. "CB_GETCOUNT",
  1276. "CB_GETCURSEL",
  1277. "CB_GETLBTEXT",
  1278. "CB_GETLBTEXTLEN",
  1279. "CB_INSERTSTRING",
  1280. "CB_RESETCONTENT",
  1281. "CB_FINDSTRING",
  1282. "CB_SELECTSTRING",
  1283. "CB_SETCURSEL",
  1284. "CB_SHOWDROPDOWN",
  1285. "CB_GETITEMDATA",
  1286. "CB_SETITEMDATA",
  1287. "CB_GETDROPPEDCONTROLRECT",
  1288. "CB_SETITEMHEIGHT",
  1289. "CB_GETITEMHEIGHT",
  1290. "CB_SETEXTENDEDUI",
  1291. "CB_GETEXTENDEDUI",
  1292. "CB_GETDROPPEDSTATE",
  1293. "CB_FINDSTRINGEXACT",
  1294. "CB_SETLOCALE",
  1295. "CB_GETLOCALE",
  1296. "CB_GETTOPINDEX",
  1297. "CB_SETTOPINDEX",
  1298. "CB_GETHORIZONTALEXTENT",
  1299. "CB_SETHORIZONTALEXTENT",
  1300. "CB_GETDROPPEDWIDTH",
  1301. "CB_SETDROPPEDWIDTH",
  1302. "CB_INITSTORAGE",
  1303. "fnEmpty",
  1304. "CB_MULTIPLEADDSTRING",
  1305. "CB_GETCOMBOBOXINFO",
  1306. "fnEmpty",
  1307. "fnEmpty",
  1308. "fnEmpty",
  1309. "fnEmpty",
  1310. "fnEmpty",
  1311. "fnEmpty",
  1312. "fnEmpty",
  1313. "fnEmpty",
  1314. "fnEmpty",
  1315. "fnEmpty",
  1316. "fnEmpty",
  1317. "STM_SETICON",
  1318. "STM_GETICON",
  1319. "STM_SETIMAGE",
  1320. "STM_GETIMAGE",
  1321. "STM_MSGMAX",
  1322. "fnEmpty",
  1323. "fnEmpty",
  1324. "fnEmpty",
  1325. "fnEmpty",
  1326. "fnEmpty",
  1327. "fnEmpty",
  1328. "fnEmpty",
  1329. "fnEmpty",
  1330. "fnEmpty",
  1331. "fnEmpty",
  1332. "fnEmpty",
  1333. "LB_ADDSTRING",
  1334. "LB_INSERTSTRING",
  1335. "LB_DELETESTRING",
  1336. "LB_SELITEMRANGEEX",
  1337. "LB_RESETCONTENT",
  1338. "LB_SETSEL",
  1339. "LB_SETCURSEL",
  1340. "LB_GETSEL",
  1341. "LB_GETCURSEL",
  1342. "LB_GETTEXT",
  1343. "LB_GETTEXTLEN",
  1344. "LB_GETCOUNT",
  1345. "LB_SELECTSTRING",
  1346. "LB_DIR",
  1347. "LB_GETTOPINDEX",
  1348. "LB_FINDSTRING",
  1349. "LB_GETSELCOUNT",
  1350. "LB_GETSELITEMS",
  1351. "LB_SETTABSTOPS",
  1352. "LB_GETHORIZONTALEXTENT",
  1353. "LB_SETHORIZONTALEXTENT",
  1354. "LB_SETCOLUMNWIDTH",
  1355. "LB_ADDFILE",
  1356. "LB_SETTOPINDEX",
  1357. "LB_SETITEMRECT",
  1358. "LB_GETITEMDATA",
  1359. "LB_SETITEMDATA",
  1360. "LB_SELITEMRANGE",
  1361. "LB_SETANCHORINDEX",
  1362. "LB_GETANCHORINDEX",
  1363. "LB_SETCARETINDEX",
  1364. "LB_GETCARETINDEX",
  1365. "LB_SETITEMHEIGHT",
  1366. "LB_GETITEMHEIGHT",
  1367. "LB_FINDSTRINGEXACT",
  1368. "LBCB_CARETON",
  1369. "LBCB_CARETOFF",
  1370. "LB_SETLOCALE",
  1371. "LB_GETLOCALE",
  1372. "LB_SETCOUNT",
  1373. "LB_INITSTORAGE",
  1374. "LB_ITEMFROMPOINT",
  1375. "LB_INSERTSTRINGUPPER",
  1376. "LB_INSERTSTRINGLOWER",
  1377. "LB_ADDSTRINGUPPER",
  1378. "LB_ADDSTRINGLOWER",
  1379. "LBCB_STARTTRACK",
  1380. "LBCB_ENDTRACK",
  1381. "fnEmpty",
  1382. "LB_MULTIPLEADDSTRING",
  1383. "LB_GETLISTBOXINFO",
  1384. "fnEmpty",
  1385. "fnEmpty",
  1386. "fnEmpty",
  1387. "fnEmpty",
  1388. "fnEmpty",
  1389. "fnEmpty",
  1390. "fnEmpty",
  1391. "fnEmpty",
  1392. "fnEmpty",
  1393. "fnEmpty",
  1394. "fnEmpty",
  1395. "fnEmpty",
  1396. "fnEmpty",
  1397. "fnEmpty",
  1398. "fnEmpty",
  1399. "fnEmpty",
  1400. "fnEmpty",
  1401. "fnEmpty",
  1402. "fnEmpty",
  1403. "fnEmpty",
  1404. "fnEmpty",
  1405. "fnEmpty",
  1406. "fnEmpty",
  1407. "fnEmpty",
  1408. "fnEmpty",
  1409. "fnEmpty",
  1410. "fnEmpty",
  1411. "fnEmpty",
  1412. "fnEmpty",
  1413. "fnEmpty",
  1414. "fnEmpty",
  1415. "fnEmpty",
  1416. "fnEmpty",
  1417. "fnEmpty",
  1418. "fnEmpty",
  1419. "fnEmpty",
  1420. "fnEmpty",
  1421. "fnEmpty",
  1422. "fnEmpty",
  1423. "fnEmpty",
  1424. "fnEmpty",
  1425. "fnEmpty",
  1426. "fnEmpty",
  1427. "fnEmpty",
  1428. "fnEmpty",
  1429. "MN_SETHMENU",
  1430. "MN_GETHMENU",
  1431. "MN_SIZEWINDOW",
  1432. "MN_OPENHIERARCHY",
  1433. "MN_CLOSEHIERARCHY",
  1434. "MN_SELECTITEM",
  1435. "MN_CANCELMENUS",
  1436. "MN_SELECTFIRSTVALIDITEM",
  1437. "fnEmpty",
  1438. "fnEmpty",
  1439. "fnEmpty",
  1440. "MN_FINDMENUWINDOWFROMPOINT",
  1441. "MN_SHOWPOPUPWINDOW",
  1442. "MN_BUTTONDOWN",
  1443. "MN_MOUSEMOVE",
  1444. "MN_BUTTONUP",
  1445. "MN_SETTIMERTOOPENHIERARCHY",
  1446. "MN_DBLCLK",
  1447. "MN_ACTIVEPOPUP",
  1448. "MN_ENDMENU",
  1449. "MN_DODRAGDROP",
  1450. "fnEmpty",
  1451. "fnEmpty",
  1452. "fnEmpty",
  1453. "fnEmpty",
  1454. "fnEmpty",
  1455. "fnEmpty",
  1456. "fnEmpty",
  1457. "fnEmpty",
  1458. "fnEmpty",
  1459. "fnEmpty",
  1460. "fnEmpty",
  1461. "WM_MOUSEMOVE",
  1462. "WM_LBUTTONDOWN",
  1463. "WM_LBUTTONUP",
  1464. "WM_LBUTTONDBLCLK",
  1465. "WM_RBUTTONDOWN",
  1466. "WM_RBUTTONUP",
  1467. "WM_RBUTTONDBLCLK",
  1468. "WM_MBUTTONDOWN",
  1469. "WM_MBUTTONUP",
  1470. "WM_MBUTTONDBLCLK",
  1471. "WM_MOUSEWHEEL",
  1472. "WM_XBUTTONDOWN",
  1473. "WM_XBUTTONUP",
  1474. "WM_XBUTTONDBLCLK",
  1475. "fnEmpty",
  1476. "fnEmpty",
  1477. "WM_PARENTNOTIFY",
  1478. "WM_ENTERMENULOOP",
  1479. "WM_EXITMENULOOP",
  1480. "WM_NEXTMENU",
  1481. "WM_SIZING",
  1482. "WM_CAPTURECHANGED",
  1483. "WM_MOVING",
  1484. "fnEmpty",
  1485. "WM_POWERBROADCAST",
  1486. "WM_DEVICECHANGE",
  1487. "fnEmpty",
  1488. "fnEmpty",
  1489. "fnEmpty",
  1490. "fnEmpty",
  1491. "fnEmpty",
  1492. "fnEmpty",
  1493. "WM_MDICREATE",
  1494. "WM_MDIDESTROY",
  1495. "WM_MDIACTIVATE",
  1496. "WM_MDIRESTORE",
  1497. "WM_MDINEXT",
  1498. "WM_MDIMAXIMIZE",
  1499. "WM_MDITILE",
  1500. "WM_MDICASCADE",
  1501. "WM_MDIICONARRANGE",
  1502. "WM_MDIGETACTIVE",
  1503. "WM_DROPOBJECT",
  1504. "WM_QUERYDROPOBJECT",
  1505. "WM_BEGINDRAG",
  1506. "WM_DRAGLOOP",
  1507. "WM_DRAGSELECT",
  1508. "WM_DRAGMOVE",
  1509. //
  1510. // 0x0230
  1511. //
  1512. "WM_MDISETMENU",
  1513. "WM_ENTERSIZEMOVE",
  1514. "WM_EXITSIZEMOVE",
  1515. "WM_DROPFILES",
  1516. "WM_MDIREFRESHMENU",
  1517. "fnEmpty",
  1518. "fnEmpty",
  1519. "fnEmpty",
  1520. "fnEmpty",
  1521. "fnEmpty",
  1522. "fnEmpty",
  1523. "fnEmpty",
  1524. "fnEmpty",
  1525. "fnEmpty",
  1526. "fnEmpty",
  1527. "fnEmpty",
  1528. //
  1529. // 0x0240
  1530. //
  1531. "fnEmpty",
  1532. "fnEmpty",
  1533. "fnEmpty",
  1534. "fnEmpty",
  1535. "fnEmpty",
  1536. "fnEmpty",
  1537. "fnEmpty",
  1538. "fnEmpty",
  1539. "fnEmpty",
  1540. "fnEmpty",
  1541. "fnEmpty",
  1542. "fnEmpty",
  1543. "fnEmpty",
  1544. "fnEmpty",
  1545. "fnEmpty",
  1546. "fnEmpty",
  1547. //
  1548. // 0x0250
  1549. //
  1550. "fnEmpty",
  1551. "fnEmpty",
  1552. "fnEmpty",
  1553. "fnEmpty",
  1554. "fnEmpty",
  1555. "fnEmpty",
  1556. "fnEmpty",
  1557. "fnEmpty",
  1558. "fnEmpty",
  1559. "fnEmpty",
  1560. "fnEmpty",
  1561. "fnEmpty",
  1562. "fnEmpty",
  1563. "fnEmpty",
  1564. "fnEmpty",
  1565. "fnEmpty",
  1566. //
  1567. // 0x0260
  1568. //
  1569. "fnEmpty",
  1570. "fnEmpty",
  1571. "fnEmpty",
  1572. "fnEmpty",
  1573. "fnEmpty",
  1574. "fnEmpty",
  1575. "fnEmpty",
  1576. "fnEmpty",
  1577. "fnEmpty",
  1578. "fnEmpty",
  1579. "fnEmpty",
  1580. "fnEmpty",
  1581. "fnEmpty",
  1582. "fnEmpty",
  1583. "fnEmpty",
  1584. "fnEmpty",
  1585. //
  1586. // 0x0270
  1587. //
  1588. "fnEmpty",
  1589. "fnEmpty",
  1590. "fnEmpty",
  1591. "fnEmpty",
  1592. "fnEmpty",
  1593. "fnEmpty",
  1594. "fnEmpty",
  1595. "fnEmpty",
  1596. "fnEmpty",
  1597. "fnEmpty",
  1598. "fnEmpty",
  1599. "fnEmpty",
  1600. "fnEmpty",
  1601. "fnEmpty",
  1602. "fnEmpty",
  1603. "fnEmpty",
  1604. //
  1605. // 0x0280
  1606. //
  1607. "WM_KANJIFIRST",
  1608. "WM_IME_SETCONTEXT",
  1609. "WM_IME_NOTIFY",
  1610. "WM_IME_CONTROL",
  1611. "WM_IME_COMPOSITIONFULL",
  1612. "WM_IME_SELECT",
  1613. "WM_IME_CHAR",
  1614. "WM_IME_SYSTEM",
  1615. "WM_IME_REQUEST",
  1616. "fnReserved",
  1617. "fnReserved",
  1618. "fnReserved",
  1619. "fnReserved",
  1620. "fnReserved",
  1621. "fnReserved",
  1622. "fnReserved",
  1623. //
  1624. // 0x0290
  1625. //
  1626. "WM_IME_KEYDOWN",
  1627. "WM_IME_KEYUP",
  1628. "fnReserved",
  1629. "fnReserved",
  1630. "fnReserved",
  1631. "fnReserved",
  1632. "fnReserved",
  1633. "fnReserved",
  1634. "fnReserved",
  1635. "fnReserved",
  1636. "fnReserved",
  1637. "fnReserved",
  1638. "fnReserved",
  1639. "fnReserved",
  1640. "fnReserved",
  1641. "WM_KANJILAST",
  1642. //
  1643. // 0x02a0
  1644. //
  1645. "WM_NCMOUSEHOVER",
  1646. "WM_MOUSEHOVER",
  1647. "WM_NCMOUSELEAVE",
  1648. "WM_MOUSELEAVE",
  1649. "fnEmpty",
  1650. "fnEmpty",
  1651. "fnEmpty",
  1652. "fnEmpty",
  1653. "fnEmpty",
  1654. "fnEmpty",
  1655. "fnEmpty",
  1656. "fnEmpty",
  1657. "fnEmpty",
  1658. "fnEmpty",
  1659. "fnEmpty",
  1660. "fnEmpty",
  1661. //
  1662. // 0x02b0
  1663. //
  1664. "fnEmpty",
  1665. "WM_WTSSESSION_CHANGE",
  1666. "fnEmpty",
  1667. "fnEmpty",
  1668. "fnEmpty",
  1669. "fnEmpty",
  1670. "fnEmpty",
  1671. "fnEmpty",
  1672. "fnEmpty",
  1673. "fnEmpty",
  1674. "fnEmpty",
  1675. "fnEmpty",
  1676. "fnEmpty",
  1677. "fnEmpty",
  1678. "fnEmpty",
  1679. "fnEmpty",
  1680. //
  1681. // 0x02c0
  1682. //
  1683. "WM_TABLET_FIRST",
  1684. "fnEmpty",
  1685. "fnEmpty",
  1686. "fnEmpty",
  1687. "fnEmpty",
  1688. "fnEmpty",
  1689. "fnEmpty",
  1690. "fnEmpty",
  1691. "fnEmpty",
  1692. "fnEmpty",
  1693. "fnEmpty",
  1694. "fnEmpty",
  1695. "fnEmpty",
  1696. "fnEmpty",
  1697. "fnEmpty",
  1698. "fnEmpty",
  1699. //
  1700. // 0x02d0
  1701. //
  1702. "fnEmpty",
  1703. "fnEmpty",
  1704. "fnEmpty",
  1705. "fnEmpty",
  1706. "fnEmpty",
  1707. "fnEmpty",
  1708. "fnEmpty",
  1709. "fnEmpty",
  1710. "fnEmpty",
  1711. "fnEmpty",
  1712. "fnEmpty",
  1713. "fnEmpty",
  1714. "fnEmpty",
  1715. "fnEmpty",
  1716. "fnEmpty",
  1717. "WM_TABLET_LAST",
  1718. //
  1719. // 0x02e0
  1720. //
  1721. "fnEmpty",
  1722. "fnEmpty",
  1723. "fnEmpty",
  1724. "fnEmpty",
  1725. "fnEmpty",
  1726. "fnEmpty",
  1727. "fnEmpty",
  1728. "fnEmpty",
  1729. "fnEmpty",
  1730. "fnEmpty",
  1731. "fnEmpty",
  1732. "fnEmpty",
  1733. "fnEmpty",
  1734. "fnEmpty",
  1735. "fnEmpty",
  1736. "fnEmpty",
  1737. //
  1738. // 0x02f0
  1739. //
  1740. "fnEmpty",
  1741. "fnEmpty",
  1742. "fnEmpty",
  1743. "fnEmpty",
  1744. "fnEmpty",
  1745. "fnEmpty",
  1746. "fnEmpty",
  1747. "fnEmpty",
  1748. "fnEmpty",
  1749. "fnEmpty",
  1750. "fnEmpty",
  1751. "fnEmpty",
  1752. "fnEmpty",
  1753. "fnEmpty",
  1754. "fnEmpty",
  1755. "fnEmpty",
  1756. //
  1757. // 0x0300
  1758. //
  1759. "WM_CUT",
  1760. "WM_COPY",
  1761. "WM_PASTE",
  1762. "WM_CLEAR",
  1763. "WM_UNDO",
  1764. "WM_RENDERFORMAT",
  1765. "WM_RENDERALLFORMATS",
  1766. "WM_DESTROYCLIPBOARD",
  1767. "WM_DRAWCLIPBOARD",
  1768. "WM_PAINTCLIPBOARD",
  1769. "WM_VSCROLLCLIPBOARD",
  1770. "WM_SIZECLIPBOARD",
  1771. "WM_ASKCBFORMATNAME",
  1772. "WM_CHANGECBCHAIN",
  1773. "WM_HSCROLLCLIPBOARD",
  1774. "WM_QUERYNEWPALETTE",
  1775. "WM_PALETTEISCHANGING",
  1776. "WM_PALETTECHANGED",
  1777. "WM_HOTKEY",
  1778. "WM_SYSMENU",
  1779. "WM_HOOKMSG",
  1780. "WM_EXITPROCESS",
  1781. "WM_WAKETHREAD",
  1782. "WM_PRINT",
  1783. "WM_PRINTCLIENT",
  1784. "WM_APPCOMMAND",
  1785. "WM_THEMECHANGED",
  1786. "WM_UAHINIT",
  1787. "fnEmpty",
  1788. "fnEmpty",
  1789. "fnEmpty",
  1790. "fnEmpty",
  1791. "fnEmpty",
  1792. "fnEmpty",
  1793. "fnEmpty",
  1794. "fnEmpty",
  1795. "fnEmpty",
  1796. "fnEmpty",
  1797. "fnEmpty",
  1798. "fnEmpty",
  1799. "fnEmpty",
  1800. "fnEmpty",
  1801. "fnEmpty",
  1802. "fnEmpty",
  1803. "fnEmpty",
  1804. "fnEmpty",
  1805. "fnEmpty",
  1806. "fnEmpty",
  1807. "fnEmpty",
  1808. "fnEmpty",
  1809. "fnEmpty",
  1810. "fnEmpty",
  1811. "fnEmpty",
  1812. "fnEmpty",
  1813. "fnEmpty",
  1814. "fnEmpty",
  1815. "fnEmpty",
  1816. "fnEmpty",
  1817. "fnEmpty",
  1818. "fnEmpty",
  1819. "fnEmpty",
  1820. "fnEmpty",
  1821. "fnEmpty",
  1822. "fnEmpty",
  1823. "WM_NOTIFYWOW",
  1824. "fnEmpty",
  1825. "fnEmpty",
  1826. "fnEmpty",
  1827. "fnEmpty",
  1828. "fnEmpty",
  1829. "fnEmpty",
  1830. "fnEmpty",
  1831. "fnEmpty",
  1832. "fnEmpty",
  1833. "fnEmpty",
  1834. "fnEmpty",
  1835. "fnEmpty",
  1836. "fnEmpty",
  1837. "fnEmpty",
  1838. "fnEmpty",
  1839. "fnEmpty",
  1840. "fnEmpty",
  1841. "fnEmpty",
  1842. "fnEmpty",
  1843. "fnEmpty",
  1844. "fnEmpty",
  1845. "fnEmpty",
  1846. "fnEmpty",
  1847. "fnEmpty",
  1848. "fnEmpty",
  1849. "fnEmpty",
  1850. "fnEmpty",
  1851. "fnEmpty",
  1852. "fnEmpty",
  1853. "fnEmpty",
  1854. "fnEmpty",
  1855. "fnEmpty",
  1856. "fnEmpty",
  1857. "fnEmpty",
  1858. "fnEmpty",
  1859. "fnEmpty",
  1860. "fnEmpty",
  1861. "fnEmpty",
  1862. "fnEmpty",
  1863. "fnEmpty",
  1864. "fnEmpty",
  1865. "fnEmpty",
  1866. "fnEmpty",
  1867. "fnEmpty",
  1868. "fnEmpty",
  1869. "fnEmpty",
  1870. "fnEmpty",
  1871. "fnEmpty",
  1872. "fnEmpty",
  1873. "fnEmpty",
  1874. "fnEmpty",
  1875. "fnEmpty",
  1876. "fnEmpty",
  1877. "fnEmpty",
  1878. "fnEmpty",
  1879. "fnEmpty",
  1880. "fnEmpty",
  1881. "fnEmpty",
  1882. "fnEmpty",
  1883. "fnEmpty",
  1884. "fnEmpty",
  1885. "fnEmpty",
  1886. "fnEmpty",
  1887. "fnEmpty",
  1888. "fnEmpty",
  1889. "fnEmpty",
  1890. "fnEmpty",
  1891. "fnEmpty",
  1892. "fnEmpty",
  1893. "fnEmpty",
  1894. "fnEmpty",
  1895. "fnEmpty",
  1896. "fnEmpty",
  1897. "fnEmpty",
  1898. "fnEmpty",
  1899. "fnEmpty",
  1900. "fnEmpty",
  1901. "fnEmpty",
  1902. "fnEmpty",
  1903. "fnEmpty",
  1904. "fnEmpty",
  1905. "fnEmpty",
  1906. "fnEmpty",
  1907. "fnEmpty",
  1908. "fnEmpty",
  1909. "fnEmpty",
  1910. "fnEmpty",
  1911. "fnEmpty",
  1912. "fnEmpty",
  1913. "fnEmpty",
  1914. "fnEmpty",
  1915. "fnEmpty",
  1916. "fnEmpty",
  1917. "fnEmpty",
  1918. "fnEmpty",
  1919. "fnEmpty",
  1920. "WM_MM_RESERVED_FIRST",
  1921. "fnReserved",
  1922. "fnReserved",
  1923. "fnReserved",
  1924. "fnReserved",
  1925. "fnReserved",
  1926. "fnReserved",
  1927. "fnReserved",
  1928. "fnReserved",
  1929. "fnReserved",
  1930. "fnReserved",
  1931. "fnReserved",
  1932. "fnReserved",
  1933. "fnReserved",
  1934. "fnReserved",
  1935. "fnReserved",
  1936. "fnReserved",
  1937. "fnReserved",
  1938. "fnReserved",
  1939. "fnReserved",
  1940. "fnReserved",
  1941. "fnReserved",
  1942. "fnReserved",
  1943. "fnReserved",
  1944. "fnReserved",
  1945. "fnReserved",
  1946. "fnReserved",
  1947. "fnReserved",
  1948. "fnReserved",
  1949. "fnReserved",
  1950. "fnReserved",
  1951. "fnReserved",
  1952. "fnReserved",
  1953. "fnReserved",
  1954. "fnReserved",
  1955. "fnReserved",
  1956. "fnReserved",
  1957. "fnReserved",
  1958. "fnReserved",
  1959. "fnReserved",
  1960. "fnReserved",
  1961. "fnReserved",
  1962. "fnReserved",
  1963. "fnReserved",
  1964. "fnReserved",
  1965. "fnReserved",
  1966. "fnReserved",
  1967. "fnReserved",
  1968. "fnReserved",
  1969. "fnReserved",
  1970. "fnReserved",
  1971. "fnReserved",
  1972. "fnReserved",
  1973. "fnReserved",
  1974. "fnReserved",
  1975. "fnReserved",
  1976. "fnReserved",
  1977. "fnReserved",
  1978. "fnReserved",
  1979. "fnReserved",
  1980. "fnReserved",
  1981. "fnReserved",
  1982. "fnReserved",
  1983. "WM_MM_RESERVED_LAST",
  1984. "WM_DDE_INITIATE",
  1985. "WM_DDE_TERMINATE",
  1986. "WM_DDE_ADVISE",
  1987. "WM_DDE_UNADVISE",
  1988. "WM_DDE_ACK",
  1989. "WM_DDE_DATA",
  1990. "WM_DDE_REQUEST",
  1991. "WM_DDE_POKE",
  1992. "WM_DDE_EXECUTE",
  1993. "fnEmpty",
  1994. "fnEmpty",
  1995. "fnEmpty",
  1996. "fnEmpty",
  1997. "fnEmpty",
  1998. "fnEmpty",
  1999. "fnEmpty",
  2000. "WM_CBT_RESERVED_FIRST",
  2001. "fnReserved",
  2002. "fnReserved",
  2003. "fnReserved",
  2004. "fnReserved",
  2005. "fnReserved",
  2006. "fnReserved",
  2007. "fnReserved",
  2008. "fnReserved",
  2009. "fnReserved",
  2010. "fnReserved",
  2011. "fnReserved",
  2012. "fnReserved",
  2013. "fnReserved",
  2014. "fnReserved",
  2015. "WM_CBT_RESERVED_LAST",
  2016. };
  2017. /*
  2018. * This array will keep the TL stuctures alive. Free builds allocate these on the
  2019. * stack and they get overwritten on function return. The link from the stack TL
  2020. * to the static TL and vice-versa is maintained using TL.ptl. ptlStack->ptl ==
  2021. * ptlStatic and ptlStatic->ptl == ptlStack. So ptl1->ptl->ptl == ptl1. When a
  2022. * ptlStatic is freed, it is linked at the head of the gFreeTLlist and the
  2023. * uTLCount has TL_FREED_PATTERN added in the HIWORD. When inspecting the static
  2024. * TLs this pattern will help identify an unused element.
  2025. */
  2026. PTL gpaThreadLocksArrays[MAX_THREAD_LOCKS_ARRAYS];
  2027. PTL gFreeTLList;
  2028. int gcThreadLocksArraysAllocated;
  2029. #endif
  2030. EX_RUNDOWN_REF gWinstaRunRef;
  2031. #ifdef SUBPIXEL_MOUSE
  2032. FIXPOINT gDefxTxf[SM_POINT_CNT], gDefyTxf[SM_POINT_CNT];
  2033. #endif
  2034. PVOID gpvWin32kImageBase;