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

/****************************** Module Header ******************************\
* Module Name: globals.h
*
* Copyright (c) 1985 - 1999, 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_
#ifdef AUTORUN_CURSOR
UINT_PTR gtmridAutorunCursor;
#endif // AUTORUN_CURSOR
extern ULONG InitSafeBootMode; // imported from NTOS (init.c), must use a pointer to reference the data
extern DWORD gdwPUDFlags;
/*
* Wallpaper Data.
*/
extern HBITMAP ghbmWallpaper;
extern HPALETTE ghpalWallpaper;
extern SIZERECT gsrcWallpaper;
extern UINT gwWPStyle;
extern HBITMAP ghbmDesktop;
extern LPWSTR gpszWall;
/*
* Policy Settings.
*/
extern DWORD gdwPolicyFlags;
/*
* SafeBoot
*/
extern DWORD gDrawVersionAlways;
/*
* TS override flag for painting desktop version.
*/
extern DWORD gdwTSExcludeDesktopVersion;
/*
* External drivers
*/
extern BOOL gfUnsignedDrivers;
/*
* External drivers
*/
extern BOOL gfUnsignedDrivers;
/*
* Full-Drag.
*/
extern HRGN ghrgnUpdateSave;
extern int gnUpdateSave;
extern PWND gspwndAltTab;
extern PWND gspwndShouldBeForeground;
/*
* full screen variables
*/
extern PWND gspwndScreenCapture;
extern PWND gspwndInternalCapture;
extern PWND gspwndFullScreen;
/*
* pre-cached monitor for mode changes
*/
extern PMONITOR gpMonitorCached;
/*
* logon notify window
*/
extern PWND gspwndLogonNotify;
extern PKEVENT gpEventDiconnectDesktop;
/*
* handle for WinSta0_DesktopSwitch event
*/
extern HANDLE ghEventSwitchDesktop;
extern PKEVENT gpEventSwitchDesktop;
/*
* Thread Info Variables
*/
extern PTHREADINFO gptiTasklist;
extern PTHREADINFO gptiShutdownNotify;
extern PTHREADINFO gptiLockUpdate;
extern PTHREADINFO gptiForeground;
extern PTHREADINFO gptiBlockInput;
extern PWOWTHREADINFO gpwtiFirst;
extern PWOWPROCESSINFO gpwpiFirstWow;
/*
* Queue Variables
*/
extern PQ gpqForeground;
extern PQ gpqForegroundPrev;
extern PQ gpqCursor;
/*
* Accessibility globals
*/
extern FILTERKEYS gFilterKeys;
extern STICKYKEYS gStickyKeys;
extern MOUSEKEYS gMouseKeys;
extern ACCESSTIMEOUT gAccessTimeOut;
extern TOGGLEKEYS gToggleKeys;
extern SOUNDSENTRY gSoundSentry;
extern HIGHCONTRAST gHighContrast;
extern WCHAR gHighContrastDefaultScheme[];
/*
* Fade animation globals
*/
extern FADE gfade;
/*
* FilterKeys Support
*/
extern UINT_PTR gtmridFKActivation;
extern UINT_PTR gtmridFKResponse;
extern UINT_PTR gtmridFKAcceptanceDelay;
extern int gFilterKeysState;
extern KE gFKKeyEvent;
extern CONST PKE gpFKKeyEvent;
extern ULONG gFKExtraInformation;
extern int gFKNextProcIndex;
/*
* ToggleKeys Support
*/
extern UINT_PTR gtmridToggleKeys;
extern ULONG gTKExtraInformation;
extern int gTKNextProcIndex;
/*
* TimeOut Support
*/
extern UINT_PTR gtmridAccessTimeOut;
/*
* MouseKeys Support
*/
extern WORD gwMKButtonState;
extern WORD gwMKCurrentButton;
extern UINT_PTR gtmridMKMoveCursor;
extern LONG gMKDeltaX;
extern LONG gMKDeltaY;
extern UINT giMouseMoveTable;
extern HWND ghwndSoundSentry;
extern UINT_PTR gtmridSoundSentry;
extern MOUSECURSOR gMouseCursor;
/*
* Multilingual keyboard layout support.
*/
extern PKL gspklBaseLayout;
extern HKL gLCIDSentToShell;
extern DWORD gSystemFS; // System font's fontsignature (single bit)
extern KBDLANGTOGGLE gLangToggle[];
extern int gLangToggleKeyState;
extern BYTE gfInNumpadHexInput;
extern BOOL gfEnableHexNumpad;
/*
* Grave accent keyboard switch for thai locales
*/
extern BOOL gbGraveKeyToggle;
/*
* Points to currently active Keyboard Layer tables
*/
extern PKBDTABLES gpKbdTbl;
extern PKL gpKL;
extern BYTE gSystemCPCharSet; // System's input locale charset
extern PKBDNLSTABLES gpKbdNlsTbl;
extern DWORD gdwKeyboardAttributes;
/*
* from kbd.c
*/
extern USHORT ausNumPadCvt[]; // VK values for Numeric keypad.
extern DWORD gtimeStartCursorHide;
extern RECT grcCursorClip;
extern ULONG_PTR gdwMouseMoveExtraInfo;
extern DWORD gdwMouseMoveTimeStamp;
extern LASTINPUT glinp;
extern POINT gptCursorAsync;
extern PPROCESSINFO gppiInputProvider;
extern PPROCESSINFO gppiLockSFW;
extern UINT guSFWLockCount;
#if DBG
extern BOOL gfDebugForegroundIgnoreDebugPort;
#endif
// FE Modifiers_VK
extern PMODIFIERS gpModifiers_VK;
extern MODIFIERS Modifiers_VK_STANDARD;
extern MODIFIERS Modifiers_VK_IBM02;
/***************************************************************************\
* apulCvt_VK[] - obtain VK translation table from shift state
* A VK translation table is used to change the value of the Virtual Key
* according to the shift state. OEM only (not locale-specific)
\***************************************************************************/
extern PULONG *gapulCvt_VK;
extern ULONG *gapulCvt_VK_101[];
extern ULONG *gapulCvt_VK_84[];
// gapulCvt_VK_IBM02[] is for FE
extern ULONG *gapulCvt_VK_IBM02[];
/***************************************************************************\
* awNumPadCvt[] - Translate cursor movement keys to numpad keys
\***************************************************************************/
extern BYTE aVkNumpad[];
/*
* OEM-specific special processing (keystroke simulators and filters)
*/
extern KEPROC aKEProcOEM[];
/*
* Cursor related Variables
*/
extern PCURSOR gpcurLogCurrent;
extern PCURSOR gpcurPhysCurrent;
extern RECT grcVDMCursorBounds;
extern DWORD gdwLastAniTick;
extern UINT_PTR gidCursorTimer;
extern PWND gspwndActivate;
extern PWND gspwndLockUpdate;
extern PWND gspwndMouseOwner;
extern HWND ghwndSwitch;
extern UINT gwMouseOwnerButton;
extern BOOL gbMouseButtonsRecentlySwapped;
extern UINT gdtMNDropDown;
extern int gcountPWO; /* count of pwo WNDOBJs in gdi */
extern int gnKeyboardSpeed;
extern int giScreenSaveTimeOutMs;
extern BOOL gbBlockSendInputResets;
extern PBWL gpbwlList;
extern UINT gdtDblClk;
extern UINT gcxMouseHover;
extern UINT gcyMouseHover;
extern UINT gdtMouseHover;
extern CAPTIONCACHE gcachedCaptions[];
extern PATTACHINFO gpai;
extern PDESKTOP gpdeskRecalcQueueAttach;
extern PWND gspwndCursor;
extern PPROCESSINFO gppiStarting;
extern PPROCESSINFO gppiList;
extern PPROCESSINFO gppiWantForegroundPriority;
extern PPROCESSINFO gppiForegroundOld;
extern PW32JOB gpJobsList;
extern UINT_PTR gtmridAniCursor;
extern int gcHotKey;
extern PHOTKEYSTRUCT gpHotKeyList;
extern int gcHotKeyAlloc;
extern PIMEHOTKEYOBJ gpImeHotKeyListHeader;
extern int gMouseSpeed;
extern int gMouseThresh1;
extern int gMouseThresh2;
extern int gMouseSensitivityFactor;
extern int gMouseSensitivity;
extern int gMouseTrails;
extern int gMouseTrailsToHide;
extern UINT_PTR gtmridMouseTrails;
extern UINT guDdeSendTimeout;
extern INT gnFastAltTabRows; /* Rows of icons in quick switch window */
extern INT gnFastAltTabColumns; /* Columns of icons in quick switch window */
extern DWORD gdwThreadEndSession; /* Shutting down system? */
extern HBRUSH ghbrHungApp; /* Brush used to redraw hung app windows. */
extern HBITMAP ghbmBits;
extern HBITMAP ghbmCaption;
extern int gcxCaptionFontChar;
extern int gcyCaptionFontChar;
extern HFONT ghSmCaptionFont;
extern int gcxSmCaptionFontChar;
extern int gcySmCaptionFontChar;
extern HFONT ghMenuFont;
extern HFONT ghMenuFontDef;
extern int gcxMenuFontChar;
extern int gcyMenuFontChar;
extern int gcxMenuFontOverhang;
extern int gcyMenuFontExternLeading;
extern int gcyMenuFontAscent;
extern int gcyMenuScrollArrow;
#ifdef LAME_BUTTON
extern HFONT ghLameFont;
extern DWORD gdwLameFlags;
#endif
#if DBG
extern UINT guModalMenuStateCount;
#endif
/*
* From mnstate.c
*/
extern POPUPMENU gpopupMenu;
extern MENUSTATE gMenuState;
extern HFONT ghStatusFont;
extern HFONT ghIconFont;
/*
* Cached SMWP structure
*/
extern SMWP gSMWP;
extern DWORD gpdwCPUserPreferencesMask [SPI_BOOLMASKDWORDSIZE];
extern PROFILEVALUEINFO gpviCPUserPreferences [1 + SPI_DWORDRANGECOUNT];
/*
* Sys expunge control data.
*/
extern DWORD gdwSysExpungeMask; // hmods to be expunged
extern DWORD gcSysExpunge; // current count of expunges performed
/*
* System classes
*/
extern PCLS gpclsList;
extern PCURSOR gpcurFirst;
extern SYSCFGICO gasyscur[];
extern SYSCFGICO gasysico[];
/*
* Screen Saver Info
*/
extern PPROCESSINFO gppiScreenSaver;
extern POINT gptSSCursor;
/*
* Orphaned fullscreen mode changes that DDraw used to cleanup.
*/
extern PPROCESSINFO gppiFullscreen;
/*
* accessibility byte-size data
*/
extern BYTE gLastVkDown;
extern BYTE gBounceVk;
extern BYTE gPhysModifierState;
extern BYTE gCurrentModifierBit;
extern BYTE gPrevModifierState;
extern BYTE gLatchBits;
extern BYTE gLockBits;
extern BYTE gTKScanCode;
extern BYTE gMKPreviousVk;
extern BYTE gbMKMouseMode;
extern PSCANCODEMAP gpScancodeMap;
extern BYTE gStickyKeysLeftShiftCount; // # of consecutive left shift key presses.
extern BYTE gStickyKeysRightShiftCount; // # of consecutive right shift key presses.
/*
* Some terminal data is global in non-Hydra.
*/
extern DWORD gdwGTERMFlags; // GTERMF_ flags
extern PTHREADINFO gptiRit;
extern PDESKTOP grpdeskRitInput;
extern PKEVENT gpkeHidChange;
extern PKEVENT gpkeMouseData;
/*
* Video Information
*/
extern BYTE gbFullScreen;
extern PDISPLAYINFO gpDispInfo;
extern BOOL gbMDEVDisabled;
/*
* Count of available cacheDC's. This is used in determining a threshold
* count of DCX_CACHE types available.
*/
extern int gnDCECount;
extern int gnVisibleRedirectedCount;
/*
* Hung redraw list
*/
extern PVWPL gpvwplHungRedraw;
/*
* SetWindowPos() related globals
*/
extern HRGN ghrgnInvalidSum;
extern HRGN ghrgnVisNew;
extern HRGN ghrgnSWP1;
extern HRGN ghrgnValid;
extern HRGN ghrgnValidSum;
extern HRGN ghrgnInvalid;
extern HRGN ghrgnInv0; // Temp used by InternalInvalidate()
extern HRGN ghrgnInv1; // Temp used by InternalInvalidate()
extern HRGN ghrgnInv2; // Temp used by InternalInvalidate()
extern HDC ghdcMem;
extern HDC ghdcMem2;
/*
* DC Cache related globals
*/
extern HRGN ghrgnGDC; // Temp used by GetCacheDC et al
/*
* SPB related globals
*/
extern HRGN ghrgnSCR; // Temp used by SpbCheckRect()
extern HRGN ghrgnSPB1;
extern HRGN ghrgnSPB2;
/*
* ScrollWindow/ScrollDC related globals
*/
extern HRGN ghrgnSW; // Temps used by ScrollDC/ScrollWindow
extern HRGN ghrgnScrl1;
extern HRGN ghrgnScrl2;
extern HRGN ghrgnScrlVis;
extern HRGN ghrgnScrlSrc;
extern HRGN ghrgnScrlDst;
extern HRGN ghrgnScrlValid;
/*
* General Device and Driver information
*/
extern PDEVICEINFO gpDeviceInfoList;
extern PERESOURCE gpresDeviceInfoList;
#if DBG
extern DWORD gdwDeviceInfoListCritSecUseCount;
extern DWORD gdwInAtomicDeviceInfoListOperation;
#endif
extern PDRIVER_OBJECT gpWin32kDriverObject;
extern DWORD gnRetryReadInput;
/*
* Mouse Information
*/
extern MOUSEEVENT gMouseEventQueue[];
extern DWORD gdwMouseQueueHead;
extern DWORD gdwMouseEvents;
extern PERESOURCE gpresMouseEventQueue;
extern int gnMice;
/*
* Keyboard Information
*/
extern KEYBOARD_ATTRIBUTES gKeyboardInfo;
extern CONST KEYBOARD_ATTRIBUTES gKeyboardDefaultInfo;
extern KEYBOARD_INPUT_DATA gkei[];
extern KEYBOARD_INDICATOR_PARAMETERS gklp;
extern KEYBOARD_INDICATOR_PARAMETERS gklpBootTime;
extern KEYBOARD_TYPEMATIC_PARAMETERS gktp;
extern int gnKeyboards;
extern IO_STATUS_BLOCK giosbKbdControl;
/*
* IME status for keyboard device
*/
extern KEYBOARD_IME_STATUS gKbdImeStatus;
extern BYTE gafAsyncKeyState[];
extern BYTE gafAsyncKeyStateRecentDown[];
extern BYTE gafRawKeyState[];
extern BOOLEAN gfKanaToggle;
extern DWORD gdwUpdateKeyboard;
extern HARDERRORHANDLER gHardErrorHandler;
extern UINT gfsSASModifiers; // SAS modifiers
extern UINT gfsSASModifiersDown; // SAS modifiers really physically down
extern UINT gvkSAS; // The Secure Attention Sequence (SAS) key.
// FE_IME
extern DWORD gdwIMEOpenStatus;
extern DWORD gdwIMEConversionStatus;
extern HIMC gHimcFocus;
extern BOOL gfIMEShowStatus;
// end FE_IME
#ifdef GENERIC_INPUT
extern int gnHid;
#endif
#ifdef MOUSE_IP
/*
* Sonar
*/
extern int giSonarRadius;
extern BYTE gbLastVkForSonar;
extern BYTE gbVkForSonarKick;
extern POINT gptSonarCenter;
#endif
/*
* Clicklock
*/
extern BOOL gfStartClickLock;
extern DWORD gdwStartClickLockTick;
/*
* Mouse move points
*/
extern MOUSEMOVEPOINT gaptMouse[];
extern UINT gptInd;
extern CONST ALWAYSZERO gZero;
extern KBDTABLES KbdTablesFallback;
extern CONST HANDLETYPEINFO gahti[];
/*
* Security data
*/
extern CONST GENERIC_MAPPING KeyMapping;
extern CONST GENERIC_MAPPING WinStaMapping;
extern PSECURITY_DESCRIPTOR gpsdInitWinSta;
extern PPUBOBJ gpPublicObjectList;
extern CONST PROC apfnSimpleCall[];
extern CONST ULONG ulMaxSimpleCall;
extern PRIVILEGE_SET psTcb;
extern PVOID Win32KBaseAddress;
extern CONST GENERIC_MAPPING DesktopMapping;
extern CONST SFNSCSENDMESSAGE gapfnScSendMessage[];
extern PSMS gpsmsList;
extern TERMINAL gTermIO;
extern TERMINAL gTermNOIO;
extern PTERMINAL gpMainTerminal;
extern PWINDOWSTATION grpWinStaList;
/*
* the logon desktop
*/
extern PDESKTOP grpdeskLogon;
extern CONST LUID luidSystem;
extern PKBDFILE gpkfList; // Currently loaded keyboard layout files.
extern PTHREADINFO gptiCurrent;
extern PTIMER gptmrFirst;
extern PKTIMER gptmrMaster;
extern DWORD gcmsLastTimer;
extern BOOL gbMasterTimerSet;
extern ULONGLONG gSessionCreationTime;
extern BOOL gbDisableAlpha;
extern LONG gUserProcessHandleQuota;
extern DWORD gUserPostMessageLimit;
/*
* Active Accessibility - Window Events
*/
extern PEVENTHOOK gpWinEventHooks; // list of installed hooks
extern PNOTIFY gpPendingNotifies; // FILO of outstanding notifications
extern PNOTIFY gpLastPendingNotify; // end of above list.
extern DWORD gdwDeferWinEvent; // Defer notification is > 0
/*
* This is the timeout value used for callbacks to low level hook procedures
*/
extern int gnllHooksTimeout;
/*
* UserApiHook
*/
extern int gihmodUserApiHook;
extern ULONG_PTR goffPfnInitUserApiHook;
extern PPROCESSINFO gppiUserApiHook;
// FE_SB
extern PUSHORT gpusMouseVKey;
extern USHORT gNumLockVk;
extern USHORT gOemScrollVk;
// FE_SB
extern CONST WCHAR szOneChar[];
extern CONST WCHAR szY[];
extern CONST WCHAR szy[];
extern CONST WCHAR szN[];
extern CONST WCHAR szNull[];
extern WCHAR szWindowStationDirectory[MAX_SESSION_PATH];
extern HBRUSH ghbrWhite;
extern HBRUSH ghbrBlack;
extern HFONT ghFontSys;
extern HANDLE hModuleWin;
extern HANDLE hModClient;
#if DBG
extern LONG TraceInitialization;
#endif
extern DESKTOPINFO diStatic;
extern ULONG gdwDesktopId;
extern PERESOURCE gpresUser;
extern PFAST_MUTEX gpHandleFlagsMutex;
extern PROC gpfnwp[];
#ifdef HUNGAPP_GHOSTING
extern PKEVENT gpEventScanGhosts;
extern ATOM gatomGhost;
#endif // HUNGAPP_GHOSTING
extern ATOM gatomShadow;
extern ATOM gatomConsoleClass;
extern ATOM gatomFirstPinned;
extern ATOM gatomLastPinned;
extern ATOM gatomMessage;
extern ATOM gaOleMainThreadWndClass;
extern ATOM gaFlashWState;
extern ATOM atomCheckpointProp;
extern ATOM atomDDETrack;
extern ATOM atomQOS;
extern ATOM atomDDEImp;
extern ATOM atomWndObj;
extern ATOM atomImeLevel;
#ifdef POOL_INSTR
extern DWORD gdwAllocCrt; // the index for the current allocation
#endif // POOL_INSTR
extern UINT guiOtherWindowCreated;
extern UINT guiOtherWindowDestroyed;
extern UINT guiActivateShellWindow;
extern ATOM atomUSER32;
extern ATOM atomLayer;
extern HANDLE gpidLogon;
extern PEPROCESS gpepInit;
extern PEPROCESS gpepCSRSS;
extern int giLowPowerTimeOutMs;
extern int giPowerOffTimeOutMs;
extern PSERVERINFO gpsi;
extern SHAREDINFO gSharedInfo;
extern DWORD giheLast; /* index to last allocated entry */
extern DWORD gdwDesktopSectionSize;
extern DWORD gdwNOIOSectionSize;
#if defined (USER_PERFORMANCE)
extern CSSTATISTICS gCSStatistics;
#endif // USER_PERFORMANCE
extern SECURITY_QUALITY_OF_SERVICE gqosDefault; // system default DDE qos.
extern CONST COLORREF gargbInitial[];
extern POWERSTATE gPowerState;
extern WCHAR gszMIN[15];
extern WCHAR gszMAX[15];
extern WCHAR gszRESUP[20];
extern WCHAR gszRESDOWN[20];
extern WCHAR gszHELP[20];
/* Commented out due to TandyT ...
* extern WCHAR gszSMENU[30];
*/
extern WCHAR gszSCLOSE[15];
extern WCHAR gszCAPTIONTOOLTIP[CAPTIONTOOLTIPLEN];
/*
* Pointer to shared SERVERINFO data.
*/
extern HANDLE ghSectionShared;
extern PVOID gpvSharedBase;
extern PWIN32HEAP gpvSharedAlloc;
extern BOOL gbVideoInitialized;
extern BOOL gbNoMorePowerCallouts;
extern BOOL gbCleanedUpResources;
extern WSINFO gWinStationInfo;
extern ULONG gSessionId;
extern BOOL gbRemoteSession;
extern BOOL gfEnableWindowsKey;
extern PDESKTOP gspdeskDisconnect;
extern HANDLE ghRemoteVideoChannel;
extern HANDLE ghRemoteMouseChannel;
extern HANDLE ghRemoteKeyboardChannel;
extern HANDLE ghRemoteBeepChannel;
extern PVOID gpRemoteBeepDevice;
extern HANDLE ghRemoteThinwireChannel;
extern BOOL gfSwitchInProgress;
extern USHORT gProtocolType;
extern USHORT gConsoleShadowProtocolType;
extern BOOL gfRemotingConsole;
extern HANDLE ghConsoleShadowVideoChannel;
extern HANDLE ghConsoleShadowMouseChannel;
extern HANDLE ghConsoleShadowBeepChannel;
extern PVOID gpConsoleShadowBeepDevice;
extern HANDLE ghConsoleShadowKeyboardChannel;
extern HANDLE ghConsoleShadowThinwireChannel;
extern KHANDLE gConsoleShadowhDev;
extern PKEVENT gpConsoleShadowDisplayChangeEvent;
extern CLIENTKEYBOARDTYPE gRemoteClientKeyboardType;
extern BOOL gfSessionSwitchBlock;
extern BOOL gbExitInProgress;
extern BOOL gbCleanupInitiated;
extern BOOL gbStopReadInput;
extern PDESKTOP gspdeskShouldBeForeground;
extern BOOL gbDesktopLocked;
extern BOOL gbFreezeScreenUpdates;
extern ULONG gSetLedReceived;
extern BOOL gbClientDoubleClickSupport;
extern BOOL gbDisconnectHardErrorAttach;
extern PKEVENT gpevtDesktopDestroyed;
extern PKEVENT gpevtVideoportCallout;
extern HDESK ghDisconnectDesk;
extern HWINSTA ghDisconnectWinSta;
extern ULONG gnShadowers;
extern BOOL gbConnected;
extern WCHAR gstrBaseWinStationName[];
extern PFILE_OBJECT gVideoFileObject;
extern PFILE_OBJECT gThinwireFileObject;
extern PFILE_OBJECT gConsoleShadowVideoFileObject;
extern PFILE_OBJECT gConsoleShadowThinwireFileObject;
extern PVOID gpThinWireCache;
extern PVOID gpConsoleShadowThinWireCache;
extern WMSNAPSHOT gwms;
extern BOOL gbSnapShotWindowsAndMonitors;
extern BOOL gbPnPWaiting;
extern PKEVENT gpEventPnPWainting;
extern PVOID ghKbdTblBase;
extern ULONG guKbdTblSize;
extern DWORD gdwHydraHint;
extern DWORD gdwCanPaintDesktop;
extern WCHAR gszUserName[40];
extern WCHAR gszDomainName[40];
extern WCHAR gszComputerName[40];
extern HANDLE ghCanActivateForegroundPIDs[];
extern DWORD gdwGuiThreads;
extern DWORD gSessionPoolMask; // Allocate out of session pool
/*
* Debug only globals
*/
#if DBG
extern DWORD gdwCritSecUseCount;
extern DWORD gdwInAtomicOperation;
extern LPCSTR gapszFNID[];
extern LPCSTR gapszMessage[];
extern int gnDeferredWinEvents;
extern BOOL gbTraceHydraApi;
extern BOOL gbTraceDesktop;
/*
* The total number of thread locks for all threads in the system at a certain time
* should be less than MAX_THREAD_LOCKS*MAX_THREAD_LOCKS_ARRAYS
*/
#define MAX_THREAD_LOCKS 1000
#define MAX_THREAD_LOCKS_ARRAYS 100
extern PTL gpaThreadLocksArrays[MAX_THREAD_LOCKS_ARRAYS];
extern PTL gFreeTLList;
extern int gcThreadLocksArraysAllocated;
#endif // DBG
extern EX_RUNDOWN_REF gWinstaRunRef;
/*
* Reserved bit in the Drive Letter bit mask of a
* WM_DEVICECHANGE message for the following wParam
* (DBT_DEVICEREMOVECOMPLETE or DBT_DEVICEARRIVAL)
* If this bit is set, then this message describes a change with
* global drive letters and we should check if the drive letters
* already exist in the receiver's LUID DosDevices.
* If drive letter exists in the user's LUID DosDevices, then
* un-set this drive letter in the msg's bitmask.
*/
#define DBV_FILTER_MSG 0x40000000
extern ULONG gLUIDDeviceMapsEnabled;
#ifdef SUBPIXEL_MOUSE
extern FIXPOINT gDefxTxf[], gDefyTxf[];
#endif
#endif