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.

905 lines
21 KiB

  1. /****************************** Module Header ******************************\
  2. * Module Name: globals.h
  3. *
  4. * Copyright (c) 1985 - 1999, Microsoft Corporation
  5. *
  6. * This module contains all the server's global variables
  7. * One must be executing on the server's context to manipulate
  8. * any of these variables or call any of these functions. Serializing access
  9. * to them is also a good idea.
  10. *
  11. * History:
  12. * 10-15-90 DarrinM Created.
  13. \***************************************************************************/
  14. #ifndef _GLOBALS_
  15. #define _GLOBALS_
  16. #ifdef AUTORUN_CURSOR
  17. UINT_PTR gtmridAutorunCursor;
  18. #endif // AUTORUN_CURSOR
  19. extern ULONG InitSafeBootMode; // imported from NTOS (init.c), must use a pointer to reference the data
  20. extern DWORD gdwPUDFlags;
  21. /*
  22. * Wallpaper Data.
  23. */
  24. extern HBITMAP ghbmWallpaper;
  25. extern HPALETTE ghpalWallpaper;
  26. extern SIZERECT gsrcWallpaper;
  27. extern UINT gwWPStyle;
  28. extern HBITMAP ghbmDesktop;
  29. extern LPWSTR gpszWall;
  30. /*
  31. * Policy Settings.
  32. */
  33. extern DWORD gdwPolicyFlags;
  34. /*
  35. * SafeBoot
  36. */
  37. extern DWORD gDrawVersionAlways;
  38. /*
  39. * TS override flag for painting desktop version.
  40. */
  41. extern DWORD gdwTSExcludeDesktopVersion;
  42. /*
  43. * External drivers
  44. */
  45. extern BOOL gfUnsignedDrivers;
  46. /*
  47. * External drivers
  48. */
  49. extern BOOL gfUnsignedDrivers;
  50. /*
  51. * Full-Drag.
  52. */
  53. extern HRGN ghrgnUpdateSave;
  54. extern int gnUpdateSave;
  55. extern PWND gspwndAltTab;
  56. extern PWND gspwndShouldBeForeground;
  57. /*
  58. * full screen variables
  59. */
  60. extern PWND gspwndScreenCapture;
  61. extern PWND gspwndInternalCapture;
  62. extern PWND gspwndFullScreen;
  63. /*
  64. * pre-cached monitor for mode changes
  65. */
  66. extern PMONITOR gpMonitorCached;
  67. /*
  68. * logon notify window
  69. */
  70. extern PWND gspwndLogonNotify;
  71. extern PKEVENT gpEventDiconnectDesktop;
  72. /*
  73. * handle for WinSta0_DesktopSwitch event
  74. */
  75. extern HANDLE ghEventSwitchDesktop;
  76. extern PKEVENT gpEventSwitchDesktop;
  77. /*
  78. * Thread Info Variables
  79. */
  80. extern PTHREADINFO gptiTasklist;
  81. extern PTHREADINFO gptiShutdownNotify;
  82. extern PTHREADINFO gptiLockUpdate;
  83. extern PTHREADINFO gptiForeground;
  84. extern PTHREADINFO gptiBlockInput;
  85. extern PWOWTHREADINFO gpwtiFirst;
  86. extern PWOWPROCESSINFO gpwpiFirstWow;
  87. /*
  88. * Queue Variables
  89. */
  90. extern PQ gpqForeground;
  91. extern PQ gpqForegroundPrev;
  92. extern PQ gpqCursor;
  93. /*
  94. * Accessibility globals
  95. */
  96. extern FILTERKEYS gFilterKeys;
  97. extern STICKYKEYS gStickyKeys;
  98. extern MOUSEKEYS gMouseKeys;
  99. extern ACCESSTIMEOUT gAccessTimeOut;
  100. extern TOGGLEKEYS gToggleKeys;
  101. extern SOUNDSENTRY gSoundSentry;
  102. extern HIGHCONTRAST gHighContrast;
  103. extern WCHAR gHighContrastDefaultScheme[];
  104. /*
  105. * Fade animation globals
  106. */
  107. extern FADE gfade;
  108. /*
  109. * FilterKeys Support
  110. */
  111. extern UINT_PTR gtmridFKActivation;
  112. extern UINT_PTR gtmridFKResponse;
  113. extern UINT_PTR gtmridFKAcceptanceDelay;
  114. extern int gFilterKeysState;
  115. extern KE gFKKeyEvent;
  116. extern CONST PKE gpFKKeyEvent;
  117. extern ULONG gFKExtraInformation;
  118. extern int gFKNextProcIndex;
  119. /*
  120. * ToggleKeys Support
  121. */
  122. extern UINT_PTR gtmridToggleKeys;
  123. extern ULONG gTKExtraInformation;
  124. extern int gTKNextProcIndex;
  125. /*
  126. * TimeOut Support
  127. */
  128. extern UINT_PTR gtmridAccessTimeOut;
  129. /*
  130. * MouseKeys Support
  131. */
  132. extern WORD gwMKButtonState;
  133. extern WORD gwMKCurrentButton;
  134. extern UINT_PTR gtmridMKMoveCursor;
  135. extern LONG gMKDeltaX;
  136. extern LONG gMKDeltaY;
  137. extern UINT giMouseMoveTable;
  138. extern HWND ghwndSoundSentry;
  139. extern UINT_PTR gtmridSoundSentry;
  140. extern MOUSECURSOR gMouseCursor;
  141. /*
  142. * Multilingual keyboard layout support.
  143. */
  144. extern PKL gspklBaseLayout;
  145. extern HKL gLCIDSentToShell;
  146. extern DWORD gSystemFS; // System font's fontsignature (single bit)
  147. extern KBDLANGTOGGLE gLangToggle[];
  148. extern int gLangToggleKeyState;
  149. extern BYTE gfInNumpadHexInput;
  150. extern BOOL gfEnableHexNumpad;
  151. /*
  152. * Grave accent keyboard switch for thai locales
  153. */
  154. extern BOOL gbGraveKeyToggle;
  155. /*
  156. * Points to currently active Keyboard Layer tables
  157. */
  158. extern PKBDTABLES gpKbdTbl;
  159. extern PKL gpKL;
  160. extern BYTE gSystemCPCharSet; // System's input locale charset
  161. extern PKBDNLSTABLES gpKbdNlsTbl;
  162. extern DWORD gdwKeyboardAttributes;
  163. /*
  164. * from kbd.c
  165. */
  166. extern USHORT ausNumPadCvt[]; // VK values for Numeric keypad.
  167. extern DWORD gtimeStartCursorHide;
  168. extern RECT grcCursorClip;
  169. extern ULONG_PTR gdwMouseMoveExtraInfo;
  170. extern DWORD gdwMouseMoveTimeStamp;
  171. extern LASTINPUT glinp;
  172. extern POINT gptCursorAsync;
  173. extern PPROCESSINFO gppiInputProvider;
  174. extern PPROCESSINFO gppiLockSFW;
  175. extern UINT guSFWLockCount;
  176. #if DBG
  177. extern BOOL gfDebugForegroundIgnoreDebugPort;
  178. #endif
  179. // FE Modifiers_VK
  180. extern PMODIFIERS gpModifiers_VK;
  181. extern MODIFIERS Modifiers_VK_STANDARD;
  182. extern MODIFIERS Modifiers_VK_IBM02;
  183. /***************************************************************************\
  184. * apulCvt_VK[] - obtain VK translation table from shift state
  185. * A VK translation table is used to change the value of the Virtual Key
  186. * according to the shift state. OEM only (not locale-specific)
  187. \***************************************************************************/
  188. extern PULONG *gapulCvt_VK;
  189. extern ULONG *gapulCvt_VK_101[];
  190. extern ULONG *gapulCvt_VK_84[];
  191. // gapulCvt_VK_IBM02[] is for FE
  192. extern ULONG *gapulCvt_VK_IBM02[];
  193. /***************************************************************************\
  194. * awNumPadCvt[] - Translate cursor movement keys to numpad keys
  195. \***************************************************************************/
  196. extern BYTE aVkNumpad[];
  197. /*
  198. * OEM-specific special processing (keystroke simulators and filters)
  199. */
  200. extern KEPROC aKEProcOEM[];
  201. /*
  202. * Cursor related Variables
  203. */
  204. extern PCURSOR gpcurLogCurrent;
  205. extern PCURSOR gpcurPhysCurrent;
  206. extern RECT grcVDMCursorBounds;
  207. extern DWORD gdwLastAniTick;
  208. extern UINT_PTR gidCursorTimer;
  209. extern PWND gspwndActivate;
  210. extern PWND gspwndLockUpdate;
  211. extern PWND gspwndMouseOwner;
  212. extern HWND ghwndSwitch;
  213. extern UINT gwMouseOwnerButton;
  214. extern BOOL gbMouseButtonsRecentlySwapped;
  215. extern UINT gdtMNDropDown;
  216. extern int gcountPWO; /* count of pwo WNDOBJs in gdi */
  217. extern int gnKeyboardSpeed;
  218. extern int giScreenSaveTimeOutMs;
  219. extern BOOL gbBlockSendInputResets;
  220. extern PBWL gpbwlList;
  221. extern UINT gdtDblClk;
  222. extern UINT gcxMouseHover;
  223. extern UINT gcyMouseHover;
  224. extern UINT gdtMouseHover;
  225. extern CAPTIONCACHE gcachedCaptions[];
  226. extern PATTACHINFO gpai;
  227. extern PDESKTOP gpdeskRecalcQueueAttach;
  228. extern PWND gspwndCursor;
  229. extern PPROCESSINFO gppiStarting;
  230. extern PPROCESSINFO gppiList;
  231. extern PPROCESSINFO gppiWantForegroundPriority;
  232. extern PPROCESSINFO gppiForegroundOld;
  233. extern PW32JOB gpJobsList;
  234. extern UINT_PTR gtmridAniCursor;
  235. extern int gcHotKey;
  236. extern PHOTKEYSTRUCT gpHotKeyList;
  237. extern int gcHotKeyAlloc;
  238. extern PIMEHOTKEYOBJ gpImeHotKeyListHeader;
  239. extern int gMouseSpeed;
  240. extern int gMouseThresh1;
  241. extern int gMouseThresh2;
  242. extern int gMouseSensitivityFactor;
  243. extern int gMouseSensitivity;
  244. extern int gMouseTrails;
  245. extern int gMouseTrailsToHide;
  246. extern UINT_PTR gtmridMouseTrails;
  247. extern UINT guDdeSendTimeout;
  248. extern INT gnFastAltTabRows; /* Rows of icons in quick switch window */
  249. extern INT gnFastAltTabColumns; /* Columns of icons in quick switch window */
  250. extern DWORD gdwThreadEndSession; /* Shutting down system? */
  251. extern HBRUSH ghbrHungApp; /* Brush used to redraw hung app windows. */
  252. extern HBITMAP ghbmBits;
  253. extern HBITMAP ghbmCaption;
  254. extern int gcxCaptionFontChar;
  255. extern int gcyCaptionFontChar;
  256. extern HFONT ghSmCaptionFont;
  257. extern int gcxSmCaptionFontChar;
  258. extern int gcySmCaptionFontChar;
  259. extern HFONT ghMenuFont;
  260. extern HFONT ghMenuFontDef;
  261. extern int gcxMenuFontChar;
  262. extern int gcyMenuFontChar;
  263. extern int gcxMenuFontOverhang;
  264. extern int gcyMenuFontExternLeading;
  265. extern int gcyMenuFontAscent;
  266. extern int gcyMenuScrollArrow;
  267. #ifdef LAME_BUTTON
  268. extern HFONT ghLameFont;
  269. extern DWORD gdwLameFlags;
  270. #endif
  271. #if DBG
  272. extern UINT guModalMenuStateCount;
  273. #endif
  274. /*
  275. * From mnstate.c
  276. */
  277. extern POPUPMENU gpopupMenu;
  278. extern MENUSTATE gMenuState;
  279. extern HFONT ghStatusFont;
  280. extern HFONT ghIconFont;
  281. /*
  282. * Cached SMWP structure
  283. */
  284. extern SMWP gSMWP;
  285. extern DWORD gpdwCPUserPreferencesMask [SPI_BOOLMASKDWORDSIZE];
  286. extern PROFILEVALUEINFO gpviCPUserPreferences [1 + SPI_DWORDRANGECOUNT];
  287. /*
  288. * Sys expunge control data.
  289. */
  290. extern DWORD gdwSysExpungeMask; // hmods to be expunged
  291. extern DWORD gcSysExpunge; // current count of expunges performed
  292. /*
  293. * System classes
  294. */
  295. extern PCLS gpclsList;
  296. extern PCURSOR gpcurFirst;
  297. extern SYSCFGICO gasyscur[];
  298. extern SYSCFGICO gasysico[];
  299. /*
  300. * Screen Saver Info
  301. */
  302. extern PPROCESSINFO gppiScreenSaver;
  303. extern POINT gptSSCursor;
  304. /*
  305. * Orphaned fullscreen mode changes that DDraw used to cleanup.
  306. */
  307. extern PPROCESSINFO gppiFullscreen;
  308. /*
  309. * accessibility byte-size data
  310. */
  311. extern BYTE gLastVkDown;
  312. extern BYTE gBounceVk;
  313. extern BYTE gPhysModifierState;
  314. extern BYTE gCurrentModifierBit;
  315. extern BYTE gPrevModifierState;
  316. extern BYTE gLatchBits;
  317. extern BYTE gLockBits;
  318. extern BYTE gTKScanCode;
  319. extern BYTE gMKPreviousVk;
  320. extern BYTE gbMKMouseMode;
  321. extern PSCANCODEMAP gpScancodeMap;
  322. extern BYTE gStickyKeysLeftShiftCount; // # of consecutive left shift key presses.
  323. extern BYTE gStickyKeysRightShiftCount; // # of consecutive right shift key presses.
  324. /*
  325. * Some terminal data is global in non-Hydra.
  326. */
  327. extern DWORD gdwGTERMFlags; // GTERMF_ flags
  328. extern PTHREADINFO gptiRit;
  329. extern PDESKTOP grpdeskRitInput;
  330. extern PKEVENT gpkeHidChange;
  331. extern PKEVENT gpkeMouseData;
  332. /*
  333. * Video Information
  334. */
  335. extern BYTE gbFullScreen;
  336. extern PDISPLAYINFO gpDispInfo;
  337. extern BOOL gbMDEVDisabled;
  338. /*
  339. * Count of available cacheDC's. This is used in determining a threshold
  340. * count of DCX_CACHE types available.
  341. */
  342. extern int gnDCECount;
  343. extern int gnVisibleRedirectedCount;
  344. /*
  345. * Hung redraw list
  346. */
  347. extern PVWPL gpvwplHungRedraw;
  348. /*
  349. * SetWindowPos() related globals
  350. */
  351. extern HRGN ghrgnInvalidSum;
  352. extern HRGN ghrgnVisNew;
  353. extern HRGN ghrgnSWP1;
  354. extern HRGN ghrgnValid;
  355. extern HRGN ghrgnValidSum;
  356. extern HRGN ghrgnInvalid;
  357. extern HRGN ghrgnInv0; // Temp used by InternalInvalidate()
  358. extern HRGN ghrgnInv1; // Temp used by InternalInvalidate()
  359. extern HRGN ghrgnInv2; // Temp used by InternalInvalidate()
  360. extern HDC ghdcMem;
  361. extern HDC ghdcMem2;
  362. /*
  363. * DC Cache related globals
  364. */
  365. extern HRGN ghrgnGDC; // Temp used by GetCacheDC et al
  366. /*
  367. * SPB related globals
  368. */
  369. extern HRGN ghrgnSCR; // Temp used by SpbCheckRect()
  370. extern HRGN ghrgnSPB1;
  371. extern HRGN ghrgnSPB2;
  372. /*
  373. * ScrollWindow/ScrollDC related globals
  374. */
  375. extern HRGN ghrgnSW; // Temps used by ScrollDC/ScrollWindow
  376. extern HRGN ghrgnScrl1;
  377. extern HRGN ghrgnScrl2;
  378. extern HRGN ghrgnScrlVis;
  379. extern HRGN ghrgnScrlSrc;
  380. extern HRGN ghrgnScrlDst;
  381. extern HRGN ghrgnScrlValid;
  382. /*
  383. * General Device and Driver information
  384. */
  385. extern PDEVICEINFO gpDeviceInfoList;
  386. extern PERESOURCE gpresDeviceInfoList;
  387. #if DBG
  388. extern DWORD gdwDeviceInfoListCritSecUseCount;
  389. extern DWORD gdwInAtomicDeviceInfoListOperation;
  390. #endif
  391. extern PDRIVER_OBJECT gpWin32kDriverObject;
  392. extern DWORD gnRetryReadInput;
  393. /*
  394. * Mouse Information
  395. */
  396. extern MOUSEEVENT gMouseEventQueue[];
  397. extern DWORD gdwMouseQueueHead;
  398. extern DWORD gdwMouseEvents;
  399. extern PERESOURCE gpresMouseEventQueue;
  400. extern int gnMice;
  401. /*
  402. * Keyboard Information
  403. */
  404. extern KEYBOARD_ATTRIBUTES gKeyboardInfo;
  405. extern CONST KEYBOARD_ATTRIBUTES gKeyboardDefaultInfo;
  406. extern KEYBOARD_INPUT_DATA gkei[];
  407. extern KEYBOARD_INDICATOR_PARAMETERS gklp;
  408. extern KEYBOARD_INDICATOR_PARAMETERS gklpBootTime;
  409. extern KEYBOARD_TYPEMATIC_PARAMETERS gktp;
  410. extern int gnKeyboards;
  411. extern IO_STATUS_BLOCK giosbKbdControl;
  412. /*
  413. * IME status for keyboard device
  414. */
  415. extern KEYBOARD_IME_STATUS gKbdImeStatus;
  416. extern BYTE gafAsyncKeyState[];
  417. extern BYTE gafAsyncKeyStateRecentDown[];
  418. extern BYTE gafRawKeyState[];
  419. extern BOOLEAN gfKanaToggle;
  420. extern DWORD gdwUpdateKeyboard;
  421. extern HARDERRORHANDLER gHardErrorHandler;
  422. extern UINT gfsSASModifiers; // SAS modifiers
  423. extern UINT gfsSASModifiersDown; // SAS modifiers really physically down
  424. extern UINT gvkSAS; // The Secure Attention Sequence (SAS) key.
  425. // FE_IME
  426. extern DWORD gdwIMEOpenStatus;
  427. extern DWORD gdwIMEConversionStatus;
  428. extern HIMC gHimcFocus;
  429. extern BOOL gfIMEShowStatus;
  430. // end FE_IME
  431. #ifdef GENERIC_INPUT
  432. extern int gnHid;
  433. #endif
  434. #ifdef MOUSE_IP
  435. /*
  436. * Sonar
  437. */
  438. extern int giSonarRadius;
  439. extern BYTE gbLastVkForSonar;
  440. extern BYTE gbVkForSonarKick;
  441. extern POINT gptSonarCenter;
  442. #endif
  443. /*
  444. * Clicklock
  445. */
  446. extern BOOL gfStartClickLock;
  447. extern DWORD gdwStartClickLockTick;
  448. /*
  449. * Mouse move points
  450. */
  451. extern MOUSEMOVEPOINT gaptMouse[];
  452. extern UINT gptInd;
  453. extern CONST ALWAYSZERO gZero;
  454. extern KBDTABLES KbdTablesFallback;
  455. extern CONST HANDLETYPEINFO gahti[];
  456. /*
  457. * Security data
  458. */
  459. extern CONST GENERIC_MAPPING KeyMapping;
  460. extern CONST GENERIC_MAPPING WinStaMapping;
  461. extern PSECURITY_DESCRIPTOR gpsdInitWinSta;
  462. extern PPUBOBJ gpPublicObjectList;
  463. extern CONST PROC apfnSimpleCall[];
  464. extern CONST ULONG ulMaxSimpleCall;
  465. extern PRIVILEGE_SET psTcb;
  466. extern PVOID Win32KBaseAddress;
  467. extern CONST GENERIC_MAPPING DesktopMapping;
  468. extern CONST SFNSCSENDMESSAGE gapfnScSendMessage[];
  469. extern PSMS gpsmsList;
  470. extern TERMINAL gTermIO;
  471. extern TERMINAL gTermNOIO;
  472. extern PTERMINAL gpMainTerminal;
  473. extern PWINDOWSTATION grpWinStaList;
  474. /*
  475. * the logon desktop
  476. */
  477. extern PDESKTOP grpdeskLogon;
  478. extern CONST LUID luidSystem;
  479. extern PKBDFILE gpkfList; // Currently loaded keyboard layout files.
  480. extern PTHREADINFO gptiCurrent;
  481. extern PTIMER gptmrFirst;
  482. extern PKTIMER gptmrMaster;
  483. extern DWORD gcmsLastTimer;
  484. extern BOOL gbMasterTimerSet;
  485. extern ULONGLONG gSessionCreationTime;
  486. extern BOOL gbDisableAlpha;
  487. extern LONG gUserProcessHandleQuota;
  488. extern DWORD gUserPostMessageLimit;
  489. /*
  490. * Active Accessibility - Window Events
  491. */
  492. extern PEVENTHOOK gpWinEventHooks; // list of installed hooks
  493. extern PNOTIFY gpPendingNotifies; // FILO of outstanding notifications
  494. extern PNOTIFY gpLastPendingNotify; // end of above list.
  495. extern DWORD gdwDeferWinEvent; // Defer notification is > 0
  496. /*
  497. * This is the timeout value used for callbacks to low level hook procedures
  498. */
  499. extern int gnllHooksTimeout;
  500. /*
  501. * UserApiHook
  502. */
  503. extern int gihmodUserApiHook;
  504. extern ULONG_PTR goffPfnInitUserApiHook;
  505. extern PPROCESSINFO gppiUserApiHook;
  506. // FE_SB
  507. extern PUSHORT gpusMouseVKey;
  508. extern USHORT gNumLockVk;
  509. extern USHORT gOemScrollVk;
  510. // FE_SB
  511. extern CONST WCHAR szOneChar[];
  512. extern CONST WCHAR szY[];
  513. extern CONST WCHAR szy[];
  514. extern CONST WCHAR szN[];
  515. extern CONST WCHAR szNull[];
  516. extern WCHAR szWindowStationDirectory[MAX_SESSION_PATH];
  517. extern HBRUSH ghbrWhite;
  518. extern HBRUSH ghbrBlack;
  519. extern HFONT ghFontSys;
  520. extern HANDLE hModuleWin;
  521. extern HANDLE hModClient;
  522. #if DBG
  523. extern LONG TraceInitialization;
  524. #endif
  525. extern DESKTOPINFO diStatic;
  526. extern ULONG gdwDesktopId;
  527. extern PERESOURCE gpresUser;
  528. extern PFAST_MUTEX gpHandleFlagsMutex;
  529. extern PROC gpfnwp[];
  530. #ifdef HUNGAPP_GHOSTING
  531. extern PKEVENT gpEventScanGhosts;
  532. extern ATOM gatomGhost;
  533. #endif // HUNGAPP_GHOSTING
  534. extern ATOM gatomShadow;
  535. extern ATOM gatomConsoleClass;
  536. extern ATOM gatomFirstPinned;
  537. extern ATOM gatomLastPinned;
  538. extern ATOM gatomMessage;
  539. extern ATOM gaOleMainThreadWndClass;
  540. extern ATOM gaFlashWState;
  541. extern ATOM atomCheckpointProp;
  542. extern ATOM atomDDETrack;
  543. extern ATOM atomQOS;
  544. extern ATOM atomDDEImp;
  545. extern ATOM atomWndObj;
  546. extern ATOM atomImeLevel;
  547. #ifdef POOL_INSTR
  548. extern DWORD gdwAllocCrt; // the index for the current allocation
  549. #endif // POOL_INSTR
  550. extern UINT guiOtherWindowCreated;
  551. extern UINT guiOtherWindowDestroyed;
  552. extern UINT guiActivateShellWindow;
  553. extern ATOM atomUSER32;
  554. extern ATOM atomLayer;
  555. extern HANDLE gpidLogon;
  556. extern PEPROCESS gpepInit;
  557. extern PEPROCESS gpepCSRSS;
  558. extern int giLowPowerTimeOutMs;
  559. extern int giPowerOffTimeOutMs;
  560. extern PSERVERINFO gpsi;
  561. extern SHAREDINFO gSharedInfo;
  562. extern DWORD giheLast; /* index to last allocated entry */
  563. extern DWORD gdwDesktopSectionSize;
  564. extern DWORD gdwNOIOSectionSize;
  565. #if defined (USER_PERFORMANCE)
  566. extern CSSTATISTICS gCSStatistics;
  567. #endif // USER_PERFORMANCE
  568. extern SECURITY_QUALITY_OF_SERVICE gqosDefault; // system default DDE qos.
  569. extern CONST COLORREF gargbInitial[];
  570. extern POWERSTATE gPowerState;
  571. extern WCHAR gszMIN[15];
  572. extern WCHAR gszMAX[15];
  573. extern WCHAR gszRESUP[20];
  574. extern WCHAR gszRESDOWN[20];
  575. extern WCHAR gszHELP[20];
  576. /* Commented out due to TandyT ...
  577. * extern WCHAR gszSMENU[30];
  578. */
  579. extern WCHAR gszSCLOSE[15];
  580. extern WCHAR gszCAPTIONTOOLTIP[CAPTIONTOOLTIPLEN];
  581. /*
  582. * Pointer to shared SERVERINFO data.
  583. */
  584. extern HANDLE ghSectionShared;
  585. extern PVOID gpvSharedBase;
  586. extern PWIN32HEAP gpvSharedAlloc;
  587. extern BOOL gbVideoInitialized;
  588. extern BOOL gbNoMorePowerCallouts;
  589. extern BOOL gbCleanedUpResources;
  590. extern WSINFO gWinStationInfo;
  591. extern ULONG gSessionId;
  592. extern BOOL gbRemoteSession;
  593. extern BOOL gfEnableWindowsKey;
  594. extern PDESKTOP gspdeskDisconnect;
  595. extern HANDLE ghRemoteVideoChannel;
  596. extern HANDLE ghRemoteMouseChannel;
  597. extern HANDLE ghRemoteKeyboardChannel;
  598. extern HANDLE ghRemoteBeepChannel;
  599. extern PVOID gpRemoteBeepDevice;
  600. extern HANDLE ghRemoteThinwireChannel;
  601. extern BOOL gfSwitchInProgress;
  602. extern USHORT gProtocolType;
  603. extern USHORT gConsoleShadowProtocolType;
  604. extern BOOL gfRemotingConsole;
  605. extern HANDLE ghConsoleShadowVideoChannel;
  606. extern HANDLE ghConsoleShadowMouseChannel;
  607. extern HANDLE ghConsoleShadowBeepChannel;
  608. extern PVOID gpConsoleShadowBeepDevice;
  609. extern HANDLE ghConsoleShadowKeyboardChannel;
  610. extern HANDLE ghConsoleShadowThinwireChannel;
  611. extern KHANDLE gConsoleShadowhDev;
  612. extern PKEVENT gpConsoleShadowDisplayChangeEvent;
  613. extern CLIENTKEYBOARDTYPE gRemoteClientKeyboardType;
  614. extern BOOL gfSessionSwitchBlock;
  615. extern BOOL gbExitInProgress;
  616. extern BOOL gbCleanupInitiated;
  617. extern BOOL gbStopReadInput;
  618. extern PDESKTOP gspdeskShouldBeForeground;
  619. extern BOOL gbDesktopLocked;
  620. extern BOOL gbFreezeScreenUpdates;
  621. extern ULONG gSetLedReceived;
  622. extern BOOL gbClientDoubleClickSupport;
  623. extern BOOL gbDisconnectHardErrorAttach;
  624. extern PKEVENT gpevtDesktopDestroyed;
  625. extern PKEVENT gpevtVideoportCallout;
  626. extern HDESK ghDisconnectDesk;
  627. extern HWINSTA ghDisconnectWinSta;
  628. extern ULONG gnShadowers;
  629. extern BOOL gbConnected;
  630. extern WCHAR gstrBaseWinStationName[];
  631. extern PFILE_OBJECT gVideoFileObject;
  632. extern PFILE_OBJECT gThinwireFileObject;
  633. extern PFILE_OBJECT gConsoleShadowVideoFileObject;
  634. extern PFILE_OBJECT gConsoleShadowThinwireFileObject;
  635. extern PVOID gpThinWireCache;
  636. extern PVOID gpConsoleShadowThinWireCache;
  637. extern WMSNAPSHOT gwms;
  638. extern BOOL gbSnapShotWindowsAndMonitors;
  639. extern BOOL gbPnPWaiting;
  640. extern PKEVENT gpEventPnPWainting;
  641. extern PVOID ghKbdTblBase;
  642. extern ULONG guKbdTblSize;
  643. extern DWORD gdwHydraHint;
  644. extern DWORD gdwCanPaintDesktop;
  645. extern WCHAR gszUserName[40];
  646. extern WCHAR gszDomainName[40];
  647. extern WCHAR gszComputerName[40];
  648. extern HANDLE ghCanActivateForegroundPIDs[];
  649. extern DWORD gdwGuiThreads;
  650. extern DWORD gSessionPoolMask; // Allocate out of session pool
  651. /*
  652. * Debug only globals
  653. */
  654. #if DBG
  655. extern DWORD gdwCritSecUseCount;
  656. extern DWORD gdwInAtomicOperation;
  657. extern LPCSTR gapszFNID[];
  658. extern LPCSTR gapszMessage[];
  659. extern int gnDeferredWinEvents;
  660. extern BOOL gbTraceHydraApi;
  661. extern BOOL gbTraceDesktop;
  662. /*
  663. * The total number of thread locks for all threads in the system at a certain time
  664. * should be less than MAX_THREAD_LOCKS*MAX_THREAD_LOCKS_ARRAYS
  665. */
  666. #define MAX_THREAD_LOCKS 1000
  667. #define MAX_THREAD_LOCKS_ARRAYS 100
  668. extern PTL gpaThreadLocksArrays[MAX_THREAD_LOCKS_ARRAYS];
  669. extern PTL gFreeTLList;
  670. extern int gcThreadLocksArraysAllocated;
  671. #endif // DBG
  672. extern EX_RUNDOWN_REF gWinstaRunRef;
  673. /*
  674. * Reserved bit in the Drive Letter bit mask of a
  675. * WM_DEVICECHANGE message for the following wParam
  676. * (DBT_DEVICEREMOVECOMPLETE or DBT_DEVICEARRIVAL)
  677. * If this bit is set, then this message describes a change with
  678. * global drive letters and we should check if the drive letters
  679. * already exist in the receiver's LUID DosDevices.
  680. * If drive letter exists in the user's LUID DosDevices, then
  681. * un-set this drive letter in the msg's bitmask.
  682. */
  683. #define DBV_FILTER_MSG 0x40000000
  684. extern ULONG gLUIDDeviceMapsEnabled;
  685. #ifdef SUBPIXEL_MOUSE
  686. extern FIXPOINT gDefxTxf[], gDefyTxf[];
  687. #endif
  688. #endif