00001 /****************************** Module Header ******************************\ 00002 * Module Name: globals.h 00003 * 00004 * Copyright (c) 1985 - 1999, Microsoft Corporation 00005 * 00006 * This module contains all the server's global variables 00007 * One must be executing on the server's context to manipulate 00008 * any of these variables or call any of these functions. Serializing access 00009 * to them is also a good idea. 00010 * 00011 * History: 00012 * 10-15-90 DarrinM Created. 00013 \***************************************************************************/ 00014 00015 #ifndef _GLOBALS_ 00016 #define _GLOBALS_ 00017 00018 extern DWORD gdwPUDFlags; 00019 00020 /* 00021 * Wallpaper Data. 00022 */ 00023 extern HBITMAP ghbmWallpaper; 00024 extern HPALETTE ghpalWallpaper; 00025 extern SIZERECT gsrcWallpaper; 00026 extern UINT gwWPStyle; 00027 extern HBITMAP ghbmDesktop; 00028 extern LPWSTR gpszWall; 00029 00030 /* 00031 * SafeBoot 00032 */ 00033 extern DWORD gDrawVersionAlways; 00034 00035 /* 00036 * External drivers 00037 */ 00038 extern BOOL gfUnsignedDrivers; 00039 00040 /* 00041 * Full-Drag. 00042 */ 00043 extern HRGN ghrgnUpdateSave; 00044 extern int gnUpdateSave; 00045 00046 extern PWND gspwndAltTab; 00047 00048 extern PWND gspwndShouldBeForeground; 00049 00050 /* 00051 * full screen variables 00052 */ 00053 extern PWND gspwndScreenCapture; 00054 extern PWND gspwndInternalCapture; 00055 extern PWND gspwndFullScreen; 00056 00057 /* 00058 * pre-cached monitor for mode changes 00059 */ 00060 extern PMONITOR gpMonitorCached; 00061 00062 /* 00063 * logon notify window 00064 */ 00065 extern PWND gspwndLogonNotify; 00066 00067 /* 00068 * event used for hugn app detection 00069 */ 00070 extern PKEVENT gpEventHungThread; 00071 extern PKEVENT gpEventDiconnectDesktop; 00072 00073 /* 00074 * handle for WinSta0_DesktopSwitch event 00075 */ 00076 extern HANDLE ghEventSwitchDesktop; 00077 extern PKEVENT gpEventSwitchDesktop; 00078 00079 /* 00080 * Thread Info Variables 00081 */ 00082 extern PTHREADINFO gptiTasklist; 00083 extern PTHREADINFO gptiShutdownNotify; 00084 extern PTHREADINFO gptiLockUpdate; 00085 extern PTHREADINFO gptiForeground; 00086 extern PTHREADINFO gptiBlockInput; 00087 extern PWOWTHREADINFO gpwtiFirst; 00088 extern PWOWPROCESSINFO gpwpiFirstWow; 00089 00090 /* 00091 * Queue Variables 00092 */ 00093 extern PQ gpqForeground; 00094 extern PQ gpqForegroundPrev; 00095 extern PQ gpqCursor; 00096 00097 /* 00098 * Accessibility globals 00099 */ 00100 extern FILTERKEYS gFilterKeys; 00101 extern STICKYKEYS gStickyKeys; 00102 extern MOUSEKEYS gMouseKeys; 00103 extern ACCESSTIMEOUT gAccessTimeOut; 00104 extern TOGGLEKEYS gToggleKeys; 00105 extern SOUNDSENTRY gSoundSentry; 00106 00107 extern HIGHCONTRAST gHighContrast; 00108 extern WCHAR gHighContrastDefaultScheme[]; 00109 00110 /* 00111 * Fade animation globals 00112 */ 00113 extern FADE gfade; 00114 00115 /* 00116 * FilterKeys Support 00117 */ 00118 extern UINT_PTR gtmridFKActivation; 00119 extern UINT_PTR gtmridFKResponse; 00120 extern UINT_PTR gtmridFKAcceptanceDelay; 00121 extern int gFilterKeysState; 00122 00123 extern KE gFKKeyEvent; 00124 extern PKE gpFKKeyEvent; 00125 extern ULONG gFKExtraInformation; 00126 extern int gFKNextProcIndex; 00127 00128 /* 00129 * ToggleKeys Support 00130 */ 00131 extern UINT_PTR gtmridToggleKeys; 00132 extern ULONG gTKExtraInformation; 00133 extern int gTKNextProcIndex; 00134 00135 /* 00136 * TimeOut Support 00137 */ 00138 extern UINT_PTR gtmridAccessTimeOut; 00139 00140 /* 00141 * MouseKeys Support 00142 */ 00143 extern WORD gwMKButtonState; 00144 extern WORD gwMKCurrentButton; 00145 extern UINT_PTR gtmridMKMoveCursor; 00146 extern LONG gMKDeltaX; 00147 extern LONG gMKDeltaY; 00148 extern UINT giMouseMoveTable; 00149 00150 extern HWND ghwndSoundSentry; 00151 extern UINT_PTR gtmridSoundSentry; 00152 00153 extern MOUSECURSOR gMouseCursor; 00154 00155 /* 00156 * Multilingual keyboard layout support. 00157 */ 00158 extern PKL gspklBaseLayout; 00159 extern HKL gLCIDSentToShell; 00160 extern DWORD gSystemFS; // System font's fontsignature (single bit) 00161 00162 extern KBDLANGTOGGLE gLangToggle[]; 00163 extern int gLangToggleKeyState; 00164 00165 extern BYTE gfInNumpadHexInput; 00166 extern BOOL gfEnableHexNumpad; 00167 00168 /* 00169 * Grave accent keyboard switch for thai locales 00170 */ 00171 extern BOOL gbGraveKeyToggle; 00172 00173 00174 00175 /* 00176 * Points to currently active Keyboard Layer tables 00177 */ 00178 extern PKBDTABLES gpKbdTbl; 00179 extern BYTE gSystemCPCharSet; // System's input locale charset 00180 extern PKBDNLSTABLES gpKbdNlsTbl; 00181 extern DWORD gdwKeyboardAttributes; 00182 00183 /* 00184 * from kbd.c 00185 */ 00186 extern USHORT ausNumPadCvt[]; // VK values for Numeric keypad. 00187 00188 extern DWORD gtimeStartCursorHide; 00189 extern RECT grcCursorClip; 00190 extern ULONG_PTR gdwMouseMoveExtraInfo; 00191 extern DWORD gdwMouseMoveTimeStamp; 00192 extern LASTINPUT glinp; 00193 extern POINT gptCursorAsync; 00194 extern PPROCESSINFO gppiInputProvider; 00195 extern PPROCESSINFO gppiLockSFW; 00196 extern UINT guSFWLockCount; 00197 #if DBG 00198 extern BOOL gfDebugForegroundIgnoreDebugPort; 00199 #endif 00200 00201 /* 00202 * Cursor related Variables 00203 */ 00204 extern PCURSOR gpcurLogCurrent; 00205 extern PCURSOR gpcurPhysCurrent; 00206 extern RECT grcVDMCursorBounds; 00207 extern DWORD gdwLastAniTick; 00208 extern UINT_PTR gidCursorTimer; 00209 00210 extern PWND gspwndActivate; 00211 extern PWND gspwndLockUpdate; 00212 extern PWND gspwndMouseOwner; 00213 extern HWND ghwndSwitch; 00214 00215 extern UINT gwMouseOwnerButton; 00216 extern BOOL gbMouseButtonsRecentlySwapped; 00217 00218 extern UINT gdtMNDropDown; 00219 00220 extern int gcountPWO; /* count of pwo WNDOBJs in gdi */ 00221 extern int giwndStack; 00222 extern int gnKeyboardSpeed; 00223 extern int giScreenSaveTimeOutMs; 00224 00225 extern PBWL gpbwlList; 00226 00227 extern UINT gdtDblClk; 00228 00229 extern UINT gwinOldAppHackoMaticFlags; // Flags for doing special things for 00230 // winold app 00231 extern UINT gcxMouseHover; 00232 extern UINT gcyMouseHover; 00233 extern UINT gdtMouseHover; 00234 00235 extern CAPTIONCACHE gcachedCaptions[]; 00236 00237 extern PATTACHINFO gpai; 00238 00239 extern PDESKTOP gpdeskRecalcQueueAttach; 00240 00241 extern PWND gspwndCursor; 00242 extern PPROCESSINFO gppiStarting; 00243 extern PPROCESSINFO gppiList; 00244 extern PPROCESSINFO gppiWantForegroundPriority; 00245 extern PPROCESSINFO gppiForegroundOld; 00246 00247 extern PW32JOB gpJobsList; 00248 00249 00250 extern UINT_PTR gtmridAniCursor; 00251 extern PHOTKEY gphkFirst; 00252 00253 extern int gcHotKey; 00254 extern PHOTKEYSTRUCT gpHotKeyList; 00255 extern int gcHotKeyAlloc; 00256 extern PIMEHOTKEYOBJ gpImeHotKeyListHeader; 00257 00258 00259 extern int gMouseSpeed; 00260 extern int gMouseThresh1; 00261 extern int gMouseThresh2; 00262 extern int gMouseSensitivityFactor; 00263 extern int gMouseSensitivity; 00264 00265 extern UINT guDdeSendTimeout; 00266 00267 00268 extern INT gnFastAltTabRows; /* Rows of icons in quick switch window */ 00269 extern INT gnFastAltTabColumns; /* Columns of icons in quick switch window */ 00270 00271 extern DWORD gdwThreadEndSession; /* Shutting down system? */ 00272 00273 extern HBRUSH ghbrHungApp; /* Brush used to redraw hung app windows. */ 00274 00275 extern HBITMAP ghbmBits; 00276 extern HBITMAP ghbmCaption; 00277 00278 extern int gcxCaptionFontChar; 00279 extern int gcyCaptionFontChar; 00280 extern HFONT ghSmCaptionFont; 00281 extern int gcxSmCaptionFontChar; 00282 extern int gcySmCaptionFontChar; 00283 00284 extern HFONT ghMenuFont; 00285 extern HFONT ghMenuFontDef; 00286 extern int gcxMenuFontChar; 00287 extern int gcyMenuFontChar; 00288 extern int gcxMenuFontOverhang; 00289 extern int gcyMenuFontExternLeading; 00290 extern int gcyMenuFontAscent; 00291 extern int gcyMenuScrollArrow; 00292 00293 #if DBG 00294 extern UINT guModalMenuStateCount; 00295 #endif 00296 00297 /* 00298 * From mnstate.c 00299 */ 00300 extern POPUPMENU gpopupMenu; 00301 extern MENUSTATE gMenuState; 00302 00303 extern HFONT ghStatusFont; 00304 extern HFONT ghIconFont; 00305 00306 /* 00307 * Cached SMWP structure 00308 */ 00309 extern SMWP gSMWP; 00310 00311 extern DWORD gpdwCPUserPreferencesMask [SPI_BOOLMASKDWORDSIZE]; 00312 00313 extern PROFILEVALUEINFO gpviCPUserPreferences [1 + SPI_DWORDRANGECOUNT]; 00314 00315 /* 00316 * Sys expunge control data. 00317 */ 00318 extern DWORD gdwSysExpungeMask; // hmods to be expunged 00319 extern DWORD gcSysExpunge; // current count of expunges performed 00320 00321 /* 00322 * System classes 00323 */ 00324 extern PCLS gpclsList; 00325 00326 extern PCURSOR gpcurFirst; 00327 00328 extern SYSCFGICO gasyscur[]; 00329 extern SYSCFGICO gasysico[]; 00330 00331 /* 00332 * Screen Saver Info 00333 */ 00334 extern PPROCESSINFO gppiScreenSaver; 00335 extern POINT gptSSCursor; 00336 00337 /* 00338 * Orphaned fullscreen mode changes that DDraw used to cleanup. 00339 */ 00340 extern PPROCESSINFO gppiFullscreen; 00341 00342 /* 00343 * accessibility byte-size data 00344 */ 00345 extern BYTE gLastVkDown; 00346 extern BYTE gBounceVk; 00347 extern BYTE gPhysModifierState; 00348 extern BYTE gCurrentModifierBit; 00349 extern BYTE gPrevModifierState; 00350 extern BYTE gLatchBits; 00351 extern BYTE gLockBits; 00352 extern BYTE gTKScanCode; 00353 extern BYTE gMKPreviousVk; 00354 extern BYTE gbMKMouseMode; 00355 00356 extern PSCANCODEMAP gpScancodeMap; 00357 00358 extern BYTE gStickyKeysLeftShiftCount; // # of consecutive left shift key presses. 00359 extern BYTE gStickyKeysRightShiftCount; // # of consecutive right shift key presses. 00360 00361 00362 /* 00363 * Some terminal data is global in non-Hydra. 00364 */ 00365 extern DWORD gdwGTERMFlags; // GTERMF_ flags 00366 extern PTHREADINFO gptiRit; 00367 extern PDESKTOP grpdeskRitInput; 00368 extern PKEVENT gpkeHidChange; 00369 00370 extern PKEVENT gpkeMouseData; 00371 00372 /* 00373 * Video Information 00374 */ 00375 extern BYTE gbFullScreen; 00376 extern PDISPLAYINFO gpDispInfo; 00377 00378 /* 00379 * Count of available cacheDC's. This is used in determining a threshold 00380 * count of DCX_CACHE types available. 00381 */ 00382 extern int gnDCECount; 00383 00384 extern int gnRedirectedCount; 00385 00386 /* 00387 * Hung redraw list 00388 */ 00389 extern PVWPL gpvwplHungRedraw; 00390 00391 /* 00392 * SetWindowPos() related globals 00393 */ 00394 extern HRGN ghrgnInvalidSum; 00395 extern HRGN ghrgnVisNew; 00396 extern HRGN ghrgnSWP1; 00397 extern HRGN ghrgnValid; 00398 extern HRGN ghrgnValidSum; 00399 extern HRGN ghrgnInvalid; 00400 00401 extern HRGN ghrgnInv0; // Temp used by InternalInvalidate() 00402 extern HRGN ghrgnInv1; // Temp used by InternalInvalidate() 00403 extern HRGN ghrgnInv2; // Temp used by InternalInvalidate() 00404 00405 extern HDC ghdcMem; 00406 extern HDC ghdcMem2; 00407 00408 /* 00409 * DC Cache related globals 00410 */ 00411 extern HRGN ghrgnGDC; // Temp used by GetCacheDC et al 00412 00413 /* 00414 * SPB related globals 00415 */ 00416 extern HRGN ghrgnSCR; // Temp used by SpbCheckRect() 00417 extern HRGN ghrgnSPB1; 00418 extern HRGN ghrgnSPB2; 00419 00420 /* 00421 * ScrollWindow/ScrollDC related globals 00422 */ 00423 extern HRGN ghrgnSW; // Temps used by ScrollDC/ScrollWindow 00424 extern HRGN ghrgnScrl1; 00425 extern HRGN ghrgnScrl2; 00426 extern HRGN ghrgnScrlVis; 00427 extern HRGN ghrgnScrlSrc; 00428 extern HRGN ghrgnScrlDst; 00429 extern HRGN ghrgnScrlValid; 00430 00431 /* 00432 * General Device and Driver information 00433 */ 00434 extern PDEVICEINFO gpDeviceInfoList; 00435 extern PERESOURCE gpresDeviceInfoList; 00436 #if DBG 00437 extern DWORD gdwDeviceInfoListCritSecUseCount; 00438 extern DWORD gdwInAtomicDeviceInfoListOperation; 00439 #endif 00440 extern PDRIVER_OBJECT gpWin32kDriverObject; 00441 extern DWORD gnRetryReadInput; 00442 00443 /* 00444 * Mouse Information 00445 */ 00446 extern MOUSEEVENT gMouseEventQueue[]; 00447 extern DWORD gdwMouseQueueHead; 00448 extern DWORD gdwMouseEvents; 00449 extern PERESOURCE gpresMouseEventQueue; 00450 extern int gnMice; 00451 00452 /* 00453 * Keyboard Information 00454 */ 00455 extern KEYBOARD_ATTRIBUTES gKeyboardInfo; 00456 extern KEYBOARD_INPUT_DATA gkei[]; 00457 extern KEYBOARD_INDICATOR_PARAMETERS gklp; 00458 extern KEYBOARD_INDICATOR_PARAMETERS gklpBootTime; 00459 extern KEYBOARD_TYPEMATIC_PARAMETERS gktp; 00460 extern int gnKeyboards; 00461 extern IO_STATUS_BLOCK giosbKbdControl; 00462 /* 00463 * IME status for keyboard device 00464 */ 00465 extern KEYBOARD_IME_STATUS gKbdImeStatus; 00466 00467 00468 extern BYTE gafAsyncKeyState[]; 00469 extern BYTE gafAsyncKeyStateRecentDown[]; 00470 00471 extern BYTE gafRawKeyState[]; 00472 00473 extern BOOLEAN gfKanaToggle; 00474 00475 extern DWORD gdwUpdateKeyboard; 00476 extern HARDERRORHANDLER gHardErrorHandler; 00477 00478 extern UINT gfsSASModifiers; // SAS modifiers 00479 extern UINT gfsSASModifiersDown; // SAS modifiers really physically down 00480 extern UINT gvkSAS; // The Secure Attention Sequence (SAS) key. 00481 00482 // FE_IME 00483 extern DWORD gdwIMEOpenStatus; 00484 extern DWORD gdwIMEConversionStatus; 00485 extern HIMC gHimcFocus; 00486 extern BOOL gfIMEShowStatus; 00487 // end FE_IME 00488 00489 00490 extern MOUSEMOVEPOINT gaptMouse[]; 00491 extern UINT gptInd; 00492 00493 00494 extern CONST ALWAYSZERO gZero; 00495 extern KBDTABLES KbdTablesFallback; 00496 extern CONST HANDLETYPEINFO gahti[]; 00497 00498 /* 00499 * Security data 00500 */ 00501 00502 extern CONST GENERIC_MAPPING KeyMapping; 00503 00504 extern CONST GENERIC_MAPPING WinStaMapping; 00505 extern PSECURITY_DESCRIPTOR gpsdInitWinSta; 00506 00507 extern PPUBOBJ gpPublicObjectList; 00508 00509 extern CONST PROC apfnSimpleCall[]; 00510 extern CONST ULONG ulMaxSimpleCall; 00511 00512 extern PRIVILEGE_SET psTcb; 00513 00514 extern PVOID Win32KBaseAddress; 00515 00516 extern CONST GENERIC_MAPPING DesktopMapping; 00517 00518 extern CONST SFNSCSENDMESSAGE gapfnScSendMessage[]; 00519 00520 extern PSMS gpsmsList; 00521 00522 extern TERMINAL gTermIO; 00523 extern TERMINAL gTermNOIO; 00524 00525 extern PTERMINAL gpMainTerminal; 00526 extern PWINDOWSTATION grpWinStaList; 00527 /* 00528 * the logon desktop 00529 */ 00530 extern PDESKTOP grpdeskLogon; 00531 00532 00533 extern HANDLE CsrApiPort; 00534 extern CONST LUID luidSystem; 00535 00536 extern PKBDFILE gpkfList; // Currently loaded keyboard layout files. 00537 00538 extern PTHREADINFO gptiCurrent; 00539 extern PTIMER gptmrFirst; 00540 extern PKTIMER gptmrMaster; 00541 extern INT gdmsNextTimer, gcmsLastTimer; 00542 extern BOOL gbMasterTimerSet; 00543 00544 extern BOOL gbDisableAlpha; 00545 00546 extern LONG gUserProcessHandleQuota; 00547 extern DWORD gUserPostMessageLimit; 00548 00549 /* 00550 * Active Accessibility - Window Events 00551 */ 00552 extern PEVENTHOOK gpWinEventHooks; // list of installed hooks 00553 extern PNOTIFY gpPendingNotifies; // FILO of outstanding notifications 00554 extern PNOTIFY gpLastPendingNotify; // end of above list. 00555 extern DWORD gdwDeferWinEvent; // Defer notification is > 0 00556 00557 /* 00558 * This is the timeout value used for callbacks to low level hook procedures 00559 */ 00560 extern int gnllHooksTimeout; 00561 00562 // FE_SB 00563 extern PUSHORT gpusMouseVKey; //= (PUSHORT) ausMouseVKey; 00564 00565 extern USHORT gNumLockVk; // = VK_NUMLOCK; 00566 extern USHORT gOemScrollVk; // = VK_OEM_SCROLL; 00567 // FE_SB 00568 00569 extern CONST WCHAR szOneChar[]; 00570 extern CONST WCHAR szY[]; 00571 extern CONST WCHAR szy[]; 00572 extern CONST WCHAR szN[]; 00573 00574 extern CONST WCHAR szNull[]; 00575 00576 extern WCHAR szWindowStationDirectory[MAX_SESSION_PATH]; 00577 00578 extern HBRUSH ghbrWhite; 00579 extern HBRUSH ghbrBlack; 00580 extern HFONT ghFontSys; 00581 00582 extern HANDLE hModuleWin; // win32k.sys hmodule 00583 extern HANDLE hModClient; // user32.dll hModule 00584 00585 extern LONG TraceInitialization; 00586 00587 extern DESKTOPINFO diStatic; 00588 00589 extern ULONG gdwDesktopId; 00590 00591 extern PERESOURCE gpresUser; 00592 extern PFAST_MUTEX gpHandleFlagsMutex; 00593 00594 extern PROC gpfnwp[]; 00595 00596 #ifdef HUNGAPP_GHOSTING 00597 extern PKEVENT gpEventScanGhosts; 00598 extern ATOM gatomGhost; 00599 #endif // HUNGAPP_GHOSTING 00600 00601 extern ATOM gatomConsoleClass; 00602 extern ATOM gatomFirstPinned; 00603 extern ATOM gatomLastPinned; 00604 00605 extern ATOM gatomMessage; 00606 extern ATOM gaOleMainThreadWndClass; 00607 extern ATOM gaFlashWState; 00608 extern ATOM atomCheckpointProp; 00609 extern ATOM atomDDETrack; 00610 extern ATOM atomQOS; 00611 extern ATOM atomDDEImp; 00612 extern ATOM atomWndObj; 00613 extern ATOM atomImeLevel; 00614 00615 #ifdef POOL_INSTR 00616 extern DWORD gdwAllocCrt; // the index for the current allocation 00617 #endif // POOL_INSTR 00618 00619 extern UINT guiOtherWindowCreated; 00620 extern UINT guiOtherWindowDestroyed; 00621 extern UINT guiActivateShellWindow; 00622 00623 extern ATOM atomUSER32; 00624 extern ATOM atomLayer; 00625 00626 extern HANDLE gpidLogon; 00627 extern PEPROCESS gpepInit; 00628 00629 extern PEPROCESS gpepCSRSS; 00630 00631 extern int giLowPowerTimeOutMs; 00632 extern int giPowerOffTimeOutMs; 00633 00634 extern PSERVERINFO gpsi; 00635 extern SHAREDINFO gSharedInfo; 00636 00637 extern DWORD giheLast; /* index to last allocated entry */ 00638 00639 extern DWORD gdwDesktopSectionSize; 00640 extern DWORD gdwNOIOSectionSize; 00641 00642 #if defined (USER_PERFORMANCE) 00643 extern CSSTATISTICS gCSStatistics; 00644 #endif // USER_PERFORMANCE 00645 00646 extern SECURITY_QUALITY_OF_SERVICE gqosDefault; // system default DDE qos. 00647 00648 extern CONST COLORREF gargbInitial[]; 00649 00650 extern POWERSTATE gPowerState; 00651 00652 extern WCHAR gszMIN[15]; 00653 extern WCHAR gszMAX[15]; 00654 extern WCHAR gszRESUP[20]; 00655 extern WCHAR gszRESDOWN[20]; 00656 /* Commented out due to TandyT ... 00657 * extern WCHAR gszSMENU[30]; 00658 */ 00659 extern WCHAR gszSCLOSE[15]; 00660 extern WCHAR gszCAPTIONTOOLTIP[CAPTIONTOOLTIPLEN]; 00661 00662 /* 00663 * Pointer to shared SERVERINFO data. 00664 */ 00665 extern HANDLE ghSectionShared; 00666 extern PVOID gpvSharedBase; 00667 extern PWIN32HEAP gpvSharedAlloc; 00668 00669 extern BOOL gbVideoInitialized; 00670 00671 extern BOOL gbNoMorePowerCallouts; 00672 00673 extern BOOL gbCleanedUpResources; 00674 00675 extern WSINFO gWinStationInfo; 00676 00677 extern ULONG gSessionId; 00678 extern BOOL gbRemoteSession; 00679 extern BOOL gfEnableWindowsKey; 00680 00681 extern PDESKTOP gspdeskDisconnect; 00682 00683 extern HANDLE ghRemoteVideoChannel; 00684 00685 extern HANDLE ghRemoteMouseChannel; 00686 extern HANDLE ghRemoteKeyboardChannel; 00687 extern HANDLE ghRemoteBeepChannel; 00688 extern PVOID gpRemoteBeepDevice; 00689 extern HANDLE ghRemoteThinwireChannel; 00690 extern CLIENTKEYBOARDTYPE gRemoteClientKeyboardType; 00691 00692 extern BOOL gbExitInProgress; 00693 00694 extern PDESKTOP gspdeskShouldBeForeground; 00695 extern BOOL gbDesktopLocked; 00696 extern BOOL gbSecureDesktop; 00697 00698 extern BOOL gbFreezeScreenUpdates; 00699 extern ULONG gSetLedReceived; 00700 extern BOOL gbClientDoubleClickSupport; 00701 00702 extern BOOL gbDisconnectHardErrorAttach; 00703 00704 extern PKEVENT gpevtDesktopDestroyed; 00705 00706 extern HDESK ghDisconnectDesk; 00707 extern HWINSTA ghDisconnectWinSta; 00708 00709 extern ULONG gnShadowers; 00710 extern BOOL gbConnected; 00711 00712 extern WCHAR gstrBaseWinStationName[]; 00713 00714 extern PFILE_OBJECT gVideoFileObject; 00715 extern PFILE_OBJECT gThinwireFileObject; 00716 00717 extern PVOID gpThinWireCache; 00718 00719 extern PVOID ghKbdTblBase; 00720 extern ULONG guKbdTblSize; 00721 00722 typedef struct tagGRAPHICS_DEVICE *PGRAPHICS_DEVICE; 00723 00724 typedef struct tagGRAPHICS_DEVICE { 00725 00726 WCHAR szNtDeviceName[16]; // NT device name (\\Device\\Videox) 00727 WCHAR szWinDeviceName[16]; // user-mode name (\\DosDevices\\Displayx) 00728 00729 // 00730 00731 PGRAPHICS_DEVICE pNextGraphicsDevice; // Next device in the linked list. 00732 PGRAPHICS_DEVICE pVgaDevice; // If this device is VGA compatible 00733 // and uses another isntance to operate 00734 // in VGA mode 00735 HANDLE pDeviceHandle; // Handle for the device 00736 PVOID pFileObject; // Handle for the device 00737 00738 // 00739 00740 DWORD stateFlags; // Flags describing the state of the 00741 // device 00742 ULONG cbdevmodeInfo; // Size of the devmode information 00743 PDEVMODEW devmodeInfo; // Pointer to the current list of modes 00744 // for the device 00745 LPWSTR DiplayDriverNames; // Pointer to MULTI_SZ with DD names. 00746 00747 } GRAPHICS_DEVICE, *PGRAPHICS_DEVICE; 00748 extern GRAPHICS_DEVICE gFeFullscreenGraphicsDevice; 00749 00750 extern DWORD gdwHydraHint; 00751 00752 extern DWORD gdwCanPaintDesktop; 00753 00754 extern HANDLE ghCanActivateForegroundPIDs[]; 00755 00756 extern DWORD gdwGuiThreads; 00757 00758 /* 00759 * Debug only globals 00760 */ 00761 #if DBG 00762 extern DWORD gdwCritSecUseCount; 00763 extern DWORD gdwInAtomicOperation; 00764 extern LPCSTR gapszFNID[]; 00765 extern LPCSTR gapszMessage[]; 00766 extern int gnDeferredWinEvents; 00767 00768 extern BOOL gbTraceHydraApi; 00769 extern BOOL gbTraceDesktop; 00770 extern BOOL gbTraceRIT; 00771 00772 /* 00773 * The total number of thread locks for all threads in the system at a certain time 00774 * should be less than MAX_THREAD_LOCKS*MAX_THREAD_LOCKS_ARRAYS 00775 */ 00776 #define MAX_THREAD_LOCKS 1000 00777 #define MAX_THREAD_LOCKS_ARRAYS 100 00778 00779 extern PTL gpaThreadLocksArrays[MAX_THREAD_LOCKS_ARRAYS]; 00780 extern PTL gFreeTLList; 00781 extern int gcThreadLocksArraysAllocated; 00782 00783 #endif // DBG 00784 00785 #endif // _GLOBALS_