mirror of https://github.com/lianthony/NT4.0
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.
436 lines
11 KiB
436 lines
11 KiB
/****************************** Module Header ******************************\
|
|
* Module Name: globals.h
|
|
*
|
|
* Copyright (c) 1985-91, Microsoft Corporation
|
|
*
|
|
* This module contains all the server's global variables
|
|
* One must be executing on the server's context to manipulate
|
|
* any of these variables or call any of these functions. Serializing access
|
|
* to them is also a good idea.
|
|
*
|
|
* History:
|
|
* 10-15-90 DarrinM Created.
|
|
\***************************************************************************/
|
|
|
|
#ifndef _GLOBALS_
|
|
#define _GLOBALS_
|
|
|
|
|
|
extern PTHREADINFO gptiCurrent;
|
|
|
|
/*
|
|
* Debug only globals
|
|
*/
|
|
#if DBG
|
|
|
|
extern DWORD dwCritSecUseCount;
|
|
extern BOOL bRITInitialized;
|
|
extern LPCSTR gapszFNID[];
|
|
extern LPCSTR gapszMessage[];
|
|
|
|
#endif // DBG
|
|
|
|
#define CCACHEDCAPTIONS 5
|
|
extern CAPTIONCACHE cachedCaptions[CCACHEDCAPTIONS];
|
|
|
|
extern BOOL gfAnimate;
|
|
|
|
/*
|
|
* Wallpaper globals
|
|
*/
|
|
extern HBITMAP ghbmWallpaper;
|
|
extern HPALETTE ghpalWallpaper;
|
|
extern POINT gptDesktop;
|
|
extern RECT grcWallpaper;
|
|
extern UINT gwWPStyle;
|
|
extern HBITMAP ghbmDesktop;
|
|
|
|
/*
|
|
* Full-Drag.
|
|
*/
|
|
extern BOOL gfDraggingFullWindow;
|
|
extern HRGN ghrgnUpdateSave;
|
|
extern int gnUpdateSave;
|
|
|
|
/*
|
|
* list of thread attachments
|
|
*/
|
|
extern PATTACHINFO gpai;
|
|
|
|
/*
|
|
* Pointer to shared SERVERINFO data.
|
|
*/
|
|
extern PVOID ghheapSharedRO;
|
|
extern PSERVERINFO gpsi;
|
|
extern SHAREDINFO gSharedInfo;
|
|
extern HANDLE ghReadOnlySharedSection;
|
|
extern PVOID gpReadOnlySharedSectionBase;
|
|
|
|
extern HANDLE CsrApiPort;
|
|
|
|
extern DWORD gdwDesktopSectionSize;
|
|
extern DWORD gdwNOIOSectionSize;
|
|
|
|
/*
|
|
* Handle table globals.
|
|
*/
|
|
extern DWORD giheLast; /* index to last allocated entry */
|
|
|
|
extern PVOID Win32KBaseAddress;
|
|
|
|
/*
|
|
* Security data
|
|
*/
|
|
extern GENERIC_MAPPING WinStaMapping;
|
|
extern GENERIC_MAPPING DesktopMapping;
|
|
extern PSECURITY_DESCRIPTOR gpsdInitWinSta;
|
|
extern PRIVILEGE_SET psTcb;
|
|
|
|
/*
|
|
* full screen globals
|
|
*/
|
|
extern PWND gspwndScreenCapture;
|
|
|
|
extern UINT guiActivateShellWindow;
|
|
extern UINT guiOtherWindowCreated;
|
|
extern UINT guiOtherWindowDestroyed;
|
|
|
|
extern PWND gspwndInternalCapture;
|
|
extern PWND gspwndFullScreen;
|
|
extern BOOL gfLockFullScreen;
|
|
extern PCHAR gpFullscreenFrameBufPtr;
|
|
|
|
extern PDESKTOPINFO gpdiStatic;
|
|
|
|
extern PHYSICAL_DEV_INFO gphysDevInfo[];
|
|
extern DWORD cphysDevInfo;
|
|
|
|
extern DWORD gdwSysExpungeMask;
|
|
extern DWORD gcSysExpunge;
|
|
|
|
extern PWINDOWSTATION grpwinstaList;
|
|
extern HANDLE gpidLogon;
|
|
extern PEPROCESS gpepSystem;
|
|
extern PEPROCESS gpepCSRSS;
|
|
|
|
/*
|
|
* variables global to one desktop
|
|
*/
|
|
extern DWORD gidUnique; // For creating unique HWNDs.
|
|
|
|
#if CHRISWIL
|
|
extern HDC ghdcScreen;
|
|
extern HDC ghdcBits;
|
|
extern RECT rcScreen;
|
|
extern RECT rcPrimaryScreen;
|
|
extern HDC hdcGray;
|
|
extern HBITMAP hbmGray;
|
|
extern int cxGray;
|
|
extern int cyGray;
|
|
extern DCE *pdceFirst; // Ptr to first entry in cache.
|
|
extern SPB *pspbFirst;
|
|
extern HDEV ghdev;
|
|
extern PDEVICE_LOCK gpDevLock;
|
|
extern int gcxScreen;
|
|
extern int gcyScreen;
|
|
extern int gcxPrimaryScreen;
|
|
extern int gcyPrimaryScreen;
|
|
#else
|
|
extern PDISPLAYINFO gpDispInfo;
|
|
#endif
|
|
|
|
//
|
|
// The 'primary' screen dimensions may be less than the 'desktop'
|
|
// screen dimensions if we're on a muliple-display device. This is
|
|
// done so that dialog boxes and maximized windows will be fit to
|
|
// the primary screen, but may dragged anywhere on the entire multi-
|
|
// screen desktop.
|
|
//
|
|
|
|
|
|
extern PDESKTOP grpdeskRitInput;
|
|
extern PDESKTOP gpdeskRecalcQueueAttach;
|
|
extern BOOL gfAllowForegroundActivate;
|
|
|
|
extern BOOL fDragFullWindows; /* Drag xor rect or full windows */
|
|
|
|
extern INT nFastAltTabRows; /* Rows of icons in quick switch window */
|
|
extern INT nFastAltTabColumns; /* Columns of icons in quick switch window */
|
|
|
|
extern int gcountPWO; /* count of pwo WNDOBJs in gdi */
|
|
|
|
extern POINT rgptMinMaxWnd[];
|
|
|
|
extern UNICODE_STRING strDisplayDriver;
|
|
|
|
extern HBITMAP hbmBits;
|
|
extern HBITMAP ghbmCaption;
|
|
extern HBRUSH ghbrGray;
|
|
extern HBRUSH ghbrWhite;
|
|
extern HBRUSH hbrHungApp;
|
|
extern CONST COLORREF gargbInitial[];
|
|
extern HBRUSH ghbrBlack;
|
|
|
|
extern SYSCFGICO rgsyscur[];
|
|
extern SYSCFGICO rgsysico[];
|
|
|
|
extern HDC ghdcMem;
|
|
extern HDC ghdcMem2;
|
|
|
|
#ifdef MEMPHIS_MENU_ANIMATION
|
|
// The maximum width of a menu window that we will animate
|
|
#define MAX_ANIMATE_WIDTH 300
|
|
|
|
// Set/GetViewportOrg and Set/GetWindowOrg do not work in Kernel.
|
|
// GRE directly sets the transforms and not the offset points.
|
|
// Therefore, GetViewportOrg always returns 0. This is a problem
|
|
// since we need GetViewportOrg when doing animated menus. So until
|
|
// these APIs are fixed, I am special casing the Animation DC.
|
|
#define VIEWPORT_X_OFFSET_GDIBUG (SYSMET(CXBORDER) + SYSMET(CXEDGE))
|
|
#define VIEWPORT_Y_OFFSET_GDIBUG (SYSMET(CYBORDER) + SYSMET(CYEDGE))
|
|
|
|
extern HDC ghdcBits2; // Scratch DC for animated menus
|
|
extern HBITMAP ghbmSlide; // Scratch Bitmap for animated menus
|
|
#endif // MEMPHIS_MENU_ANIMATION
|
|
|
|
extern BOOL bFontsAreLoaded;
|
|
extern HFONT hIconTitleFont; /* Font used in icon titles */
|
|
extern LOGFONT iconTitleLogFont; /* LogFont struct for icon title font */
|
|
|
|
extern HFONT ghFontSys;
|
|
extern HFONT ghFontSysFixed;
|
|
|
|
extern int cxCaptionFontChar,cyCaptionFontChar;
|
|
|
|
extern HFONT ghSmCaptionFont;
|
|
extern int cxSmCaptionFontChar,cySmCaptionFontChar;
|
|
|
|
extern HFONT ghMenuFont;
|
|
extern HFONT ghMenuFontDef;
|
|
extern int cxMenuFontChar,cyMenuFontChar,cxMenuFontOverhang,cyMenuFontExternLeading,cyMenuFontAscent;
|
|
extern UINT guMenuStateCount;
|
|
|
|
|
|
extern HFONT ghStatusFont;
|
|
|
|
extern HFONT ghIconFont;
|
|
|
|
extern HFONT ghfontInfo;
|
|
|
|
|
|
//
|
|
// Variables global to all desktops
|
|
//
|
|
|
|
extern CONST SFNSCSENDMESSAGE gapfnScSendMessage[];
|
|
|
|
extern PCLS gpclsList; // list of global window class structures
|
|
extern PHUNGREDRAWLIST gphrl; // list of windows to redraw if hung
|
|
extern SECURITY_QUALITY_OF_SERVICE gqosDefault; // system default DDE qos.
|
|
|
|
extern HANDLE hModuleWin; // win32k.sys hmodule
|
|
extern HANDLE hModClient; // user32.dll hModule
|
|
extern KBDTABLES KbdTablesNull; // minimalist layout (no characters)
|
|
extern PKBDTABLES gpKbdTbl; // Currently active keyboard tables
|
|
extern PKL gspklBaseLayout; // Base keyboard layout (default input locale)
|
|
extern PKBDFILE gpkfList; // Currently loaded keyboard layout files.
|
|
extern HKL LCIDSentToShell;
|
|
extern DWORD gSystemCPB; // System's input locale codepage bitfield
|
|
extern KBDLANGTOGGLE LangToggle[];
|
|
extern DWORD cLangToggleKeys;
|
|
extern BYTE gafAsyncKeyState[];
|
|
extern BYTE gafAsyncKeyStateRecentDown[];
|
|
extern BYTE gafPhysKeyState[];
|
|
extern PWND gspwndMouseOwner; // mouse ownership management.
|
|
extern UINT wMouseOwnerButton;
|
|
|
|
extern DWORD gtimeStartCursorHide;
|
|
|
|
extern PBWL pbwlList;
|
|
|
|
extern PTHREADINFO gptiTasklist;
|
|
extern PTHREADINFO gptiShutdownNotify;
|
|
extern PTHREADINFO gptiLockUpdate;
|
|
extern PTHREADINFO gptiForeground;
|
|
extern PTHREADINFO gptiRit;
|
|
extern HARDERRORHANDLER gHardErrorHandler;
|
|
extern PPROCESSINFO gppiStarting;
|
|
extern PPROCESSINFO gppiWantForegroundPriority;
|
|
extern PWOWPROCESSINFO gpwpiFirstWow;
|
|
extern PWOWTHREADINFO gpwtiFirst;
|
|
extern PQ gpqForeground, gpqForegroundPrev;
|
|
extern PQ gpqCursor;
|
|
extern PCURSOR gpcurFirst;
|
|
extern BOOL gbMasterTimerSet;
|
|
extern PTIMER gptmrFirst;
|
|
extern UINT gtmridAniCursor;
|
|
extern PCURSOR gpcurLogCurrent;
|
|
extern PCURSOR gpcurPhysCurrent;
|
|
extern PHOTKEY gphkFirst;
|
|
extern BOOL gbActiveWindowTracking;
|
|
|
|
extern int gcHotKey;
|
|
extern PERESOURCE gpresUser;
|
|
extern PERESOURCE gpresMouseEventQueue;
|
|
extern POINT gptCursorAsync;
|
|
extern HANDLE ghevtMouseInput;
|
|
extern PSMS gpsmsList;
|
|
extern PKTIMER gptmrMaster;
|
|
extern INT gdmsNextTimer, gcmsLastTimer;
|
|
|
|
extern ATOM gatomConsoleClass;
|
|
extern ATOM gatomFirstPinned;
|
|
extern ATOM gatomLastPinned;
|
|
|
|
extern BOOL fbwlBusy;
|
|
|
|
extern DWORD dwThreadEndSession; /* Shutting down system? */
|
|
|
|
#ifdef LATER
|
|
extern BOOL fMessageBox; /* Using a system modal message box? */
|
|
extern BOOL fTaskIsLocked;
|
|
#endif
|
|
extern BOOL fEdsunChipSet;
|
|
extern BOOL fIconTitleWrap; /* Wrap icon titles or just use single line */
|
|
|
|
#ifdef LATER
|
|
extern CURSORACCELINFO cursAccelInfo;
|
|
#endif //LATER
|
|
|
|
/*
|
|
* SetWindowPos() related globals
|
|
*/
|
|
extern HRGN hrgnInvalidSum;
|
|
extern HRGN hrgnVisNew;
|
|
extern HRGN hrgnSWP1;
|
|
extern HRGN hrgnValid;
|
|
extern HRGN hrgnValidSum;
|
|
extern HRGN hrgnInvalid;
|
|
|
|
/*
|
|
* DC Cache related globals
|
|
*/
|
|
extern HRGN hrgnGDC; // Temp used by GetCacheDC et al
|
|
|
|
/*
|
|
* SPB related globals
|
|
*/
|
|
extern HRGN hrgnSCR; // Temp used by SpbCheckRect()
|
|
extern HRGN hrgnSPB1;
|
|
extern HRGN hrgnSPB2;
|
|
|
|
extern HRGN hrgnInv0;
|
|
extern HRGN hrgnInv1; // Temp used by InternalInvalidate()
|
|
extern HRGN hrgnInv2; // Temp used by InternalInvalidate()
|
|
|
|
/*
|
|
* ScrollWindow/ScrollDC related globals
|
|
*/
|
|
extern HRGN hrgnSW; // Temps used by ScrollDC/ScrollWindow
|
|
extern HRGN hrgnScrl1;
|
|
extern HRGN hrgnScrl2;
|
|
extern HRGN hrgnScrlVis;
|
|
extern HRGN hrgnScrlSrc;
|
|
extern HRGN hrgnScrlDst;
|
|
extern HRGN hrgnScrlValid;
|
|
|
|
extern PWND gspwndActive;
|
|
extern PWND gspwndCursor;
|
|
extern PWND gspwndLockUpdate;
|
|
extern PWND gspwndActivate;
|
|
extern HWND ghwndSwitch;
|
|
|
|
extern int iwndStack;
|
|
|
|
/*
|
|
* Accessibility related globals
|
|
*/
|
|
extern FILTERKEYS gFilterKeys;
|
|
extern STICKYKEYS gStickyKeys;
|
|
extern MOUSEKEYS gMouseKeys;
|
|
extern ACCESSTIMEOUT gAccessTimeOut;
|
|
extern TOGGLEKEYS gToggleKeys;
|
|
extern SOUNDSENTRY gSoundSentry;
|
|
extern int fShowSoundsOn;
|
|
extern BOOL gfAccessEnabled;
|
|
extern int gPhysModifierState;
|
|
extern int gCurrentModifierBit;
|
|
extern UINT StickyKeysLeftShiftCount;
|
|
extern UINT StickyKeysRightShiftCount;
|
|
|
|
extern UINT dtDblClk;
|
|
extern UINT dtMNDropDown;
|
|
extern UINT winOldAppHackoMaticFlags; /* Flags for doing special things for
|
|
winold app */
|
|
|
|
/*
|
|
* TrackMouseEvent related globals
|
|
*/
|
|
extern UINT gcxMouseHover;
|
|
extern UINT gcyMouseHover;
|
|
extern UINT gdtMouseHover;
|
|
|
|
extern TCHAR szOneChar[];
|
|
extern TCHAR szY[];
|
|
extern TCHAR szy[];
|
|
extern TCHAR szN[];
|
|
extern TCHAR sz1[];
|
|
|
|
extern WCHAR szUSER32[];
|
|
|
|
extern WCHAR szNull[];
|
|
|
|
extern WCHAR szWindowStationDirectory[];
|
|
|
|
#ifdef DOS30
|
|
extern FARPROC lpSysProc;
|
|
#endif
|
|
|
|
extern DWORD dwMouseMoveExtraInfo;
|
|
|
|
extern RECT rcCursorClip;
|
|
|
|
extern int nKeyboardSpeed;
|
|
extern int iScreenSaveTimeOut;
|
|
extern DWORD timeLastInputMessage;
|
|
|
|
extern int MouseSpeed;
|
|
extern int MouseThresh1;
|
|
extern int MouseThresh2;
|
|
extern int cQEntries;
|
|
|
|
extern ATOM atomCheckpointProp;
|
|
extern ATOM atomDDETrack;
|
|
extern ATOM atomQOS;
|
|
extern ATOM atomDDEImp;
|
|
extern ATOM atomUSER32;
|
|
extern LPWSTR gpwszDDEMLEVENTCLASS;
|
|
extern UINT guDdeSendTimeout;
|
|
|
|
/*
|
|
* EndTask globals
|
|
*/
|
|
extern HANDLE ghEventKillWOWApp;
|
|
extern DWORD gtimeWOWRegTimeOut;
|
|
extern PFNW32ET gpfnW32EndTask;
|
|
|
|
extern BOOL fBeep; /* Warning beeps? */
|
|
extern BOOL gbExtendedSounds; /* Extended sounds enabling */
|
|
extern BOOL fDialog; /* Using a dialog box? */
|
|
extern BYTE *pState;
|
|
extern TCHAR szUNTITLED[];
|
|
|
|
#ifdef DEVL
|
|
extern UINT guiEnterCritCnt; // Count of User Critical Section Enters
|
|
#endif // DEVL // between HungSystem Timer events.
|
|
|
|
extern LONG TraceDisplayDriverLoad;
|
|
|
|
extern BYTE abfSyncOnlyMessage[];
|
|
|
|
extern CONST PROC apfnSimpleCall[];
|
|
extern CONST ULONG ulMaxSimpleCall;
|
|
|
|
extern PROFILEVALUEINFO gpviCPUserPreferences [SPI_UP_COUNT];
|
|
|
|
#endif // _GLOBALS_
|