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.
 
 
 
 
 
 

271 lines
6.6 KiB

//+-------------------------------------------------------------------------
//
// TaskMan - NT TaskManager
// Copyright (C) Microsoft
//
// File: Precomp.H
//
// History: Nov-10-95 DavePl Created
//
//--------------------------------------------------------------------------
//
// Warnings turned off to appease our header files
//
#pragma warning(disable:4127) // Conditional expression is constant
#define STRICT
#if DBG
#define DEBUG 1
#endif
#ifndef UNICODE
#define UNICODE
#endif
#ifndef _UNICODE
#define _UNICODE
#endif
extern "C"
{
#include <nt.h>
#include <ntrtl.h>
#include <nturtl.h>
#include <ntexapi.h>
}
#include <windows.h>
#include <windowsx.h>
#include <Iphlpapi.h>
#include <objbase.h>
#include <winuserp.h>
#include <commctrl.h>
#include <comctrlp.h>
#include <shlobj.h>
#include <shlobjp.h>
#include <shlwapi.h>
#include <shlwapip.h>
#include <shlapip.h>
#include <vdmdbg.h>
#include <ccstock.h>
#include <wtsapi32.h>
#include <hydrix.h> // internal hydra defines
#include <msginaexports.h>
#include <strsafe.h>
#include <TokenUtil.h> // CPrivilegeEnable
#include <winsta.h> // WinStationGetProcessSid
#include <utildll.h> // CachedGetUserFromSid
#include <htmlhelp.h>
#include <lmcons.h>
#include <sspi.h>
#include <secext.h> // for GetUserNameEx
#include <security.h>
//
// Global data externs
//
#define PWM_TRAYICON WM_USER + 10
#define PWM_ACTIVATE WM_USER + 11
#define DEFSPACING_BASE 3
#define INNERSPACING_BASE 2
#define TOPSPACING_BASE 10
extern long g_DefSpacing;
extern long g_InnerSpacing;
extern long g_TopSpacing;
#define CONTROL_WIDTH_SPACING 13
#define CONTROL_HEIGHT_SPACING 2
extern long g_ControlWidthSpacing;
extern long g_ControlHeightSpacing;
#define MAX_NETWORKCARDS 32 // Maximum number of Network cards (i.e. max number of network graphs)
#define HIST_SIZE 2000 // Number of data points to track in the history windows
extern HINSTANCE g_hInstance;
extern HWND g_hMainWnd;
extern HDESK g_hMainDesktop;
extern DWORD g_cTasks;
extern DWORD g_cProcesses;
extern BYTE g_cProcessors;
extern BYTE g_CPUUsage;
extern __int64 g_MEMUsage;
extern __int64 g_MEMMax;
extern HMENU g_hMenu;
extern BYTE g_CPUUsage;
extern BYTE * g_pCPUHistory[MAXIMUM_PROCESSORS];
extern BYTE * g_pKernelHistory[MAXIMUM_PROCESSORS];
extern BOOL g_fInPopup;
extern WCHAR g_szK[];
extern WCHAR g_szRealtime[];
extern WCHAR g_szNormal[];
extern WCHAR g_szHigh[];
extern WCHAR g_szLow[];
extern WCHAR g_szUnknown[];
extern WCHAR g_szAboveNormal[];
extern WCHAR g_szBelowNormal[];
extern WCHAR g_szHung[];
extern WCHAR g_szRunning[];
extern WCHAR g_szfmtCPUNum[];
extern WCHAR g_szfmtCPU[];
extern WCHAR g_szTotalCPU[];
extern WCHAR g_szKernelCPU[];
extern WCHAR g_szMemUsage[];
extern HICON g_aTrayIcons[];
extern UINT g_cTrayIcons;
class COptions;
extern COptions g_Options;
//
// Prototypes
//
BYTE InitNetInfo(); // netpage.cpp
void CalcCpuTime(BOOL); // perfpage.cpp
BYTE InitPerfInfo(); // perfpage.cpp
void ReleasePerfInfo(); // perfpage.cpp
void DisplayFailureMsg(HWND hWnd, UINT idTitle, DWORD dwError); // main.cpp
BOOL CreateNewDesktop(); // main.cpp
void ShowRunningInstance();
HMENU LoadPopupMenu(HINSTANCE hinst, UINT id); // main.cpp
BOOL CheckParentDeferrals(UINT uMsg, WPARAM wParam, LPARAM lParam);
void Tray_Notify(HWND hWnd, LPARAM lParam);
void UpdateTrayIcon(HWND hWnd);
#include "taskmgr.h"
#include "resource.h"
#include "pages.h"
#include "ptrarray.h"
/*++ ShiftArrayWorker
Routine Description:
Shifts a section of an array up or down. If shifting
down, the given element is lost. For up, an empty slot
(with an undefined value) is opened.
Arguments:
pArray - Array starting address
cbArraySize - Size of Array (in BYTES)
cElementSize - Size of array elements
iFirstElement - First element to move
Direction - SHIFT_UP or SHIFT_DOWN
Return Value:
None. No error checking either. Should compile out to
a movememory
Notes:
Call this with the ShiftArray macro which does the size
calcs for you
Revision History:
Jan-26-95 Davepl Created
--*/
#define ShiftArray(array, index, direction) \
\
ShiftArrayWorker((LPBYTE) array, sizeof(array), sizeof(array[0]), index, direction)
typedef enum SHIFT_DIRECTION { SHIFT_UP, SHIFT_DOWN };
static inline void ShiftArrayWorker(const LPBYTE pArray,
const size_t cbArraySize,
const size_t cElementSize,
const UINT iFirstElement,
const SHIFT_DIRECTION Direction)
{
ASSERT( ((cbArraySize / cElementSize) * cElementSize) == cbArraySize);
ASSERT( (iFirstElement + 1) * cElementSize <= cbArraySize );
const LPBYTE pFirst = pArray + (iFirstElement * cElementSize);
const LPBYTE pLast = pArray + cbArraySize - cElementSize;
const UINT cBytesToMove = (UINT)(pLast - pFirst);
ASSERT (pLast >= pFirst);
if (cBytesToMove)
{
if (SHIFT_DOWN == Direction)
{
CopyMemory(pFirst, pFirst + cElementSize, cBytesToMove);
}
else if (Direction == SHIFT_UP)
{
CopyMemory(pFirst + cElementSize, pFirst, cBytesToMove);
}
else
{
ASSERT( FALSE );
}
}
}
//////////////////////////////////////////////////////////////////////////////
//
// MACRO
// DEBUG_BREAK
//
// Description:
// Because the system expection handler can hick-up over INT 3s and
// DebugBreak()s, This x86 only macro causes the program to break in the
// right spot.
//
//////////////////////////////////////////////////////////////////////////////
#if defined( _X86_ )
#define DEBUG_BREAK do { _try { _asm int 3 } _except (EXCEPTION_EXECUTE_HANDLER) {;} } while (0)
#else
#define DEBUG_BREAK DebugBreak()
#endif
//
// Assert
//
#ifdef Assert
#undef Assert
#endif
#ifdef DEBUG
#define Assert(x) \
do \
{ \
if ( !(x) ) \
{ \
DEBUG_BREAK; \
} \
} while (0)
#else
#define Assert(x)
#endif
#ifdef ASSERT
#undef ASSERT
#endif
#define ASSERT(x) Assert(x)
extern const WCHAR szTaskmanKey[];
#pragma hdrstop