|
|
//+-------------------------------------------------------------------------
//
// 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:4201) // Nameless struct or union
#pragma warning(disable:4100) // Unreferenced formal parameter
#pragma warning(disable:4514) // Unreferenced inline func removed
#pragma warning(disable:4127) // Conditional expression is constant
#pragma warning(disable:4121) // alignment of a member was sensitive to packing
#define STRICT
#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>
#pragma warning(disable:4201) // Nameless struct or union
#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>
#ifndef ARRAYSIZE
#define ARRAYSIZE(x) ((sizeof(x) / sizeof(x[0])))
#endif
//
// 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 MAX_NETWORKCARDS 32 // Maximum number of Network cards (i.e. max number of network graphs)
#define MAX_PROCESSOR 32
#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[MAX_PROCESSOR]; extern BYTE * g_pKernelHistory[MAX_PROCESSOR];
extern BOOL g_fInPopup;
extern TCHAR g_szK[]; extern TCHAR g_szRealtime[]; extern TCHAR g_szNormal[]; extern TCHAR g_szHigh[]; extern TCHAR g_szLow[]; extern TCHAR g_szUnknown[]; extern TCHAR g_szAboveNormal[]; extern TCHAR g_szBelowNormal[]; extern TCHAR g_szHung[]; extern TCHAR g_szRunning[]; extern TCHAR g_szfmtCPUNum[]; extern TCHAR g_szfmtCPU[]; extern TCHAR g_szTotalCPU[]; extern TCHAR g_szKernelCPU[]; extern TCHAR 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, WPARAM wParam, 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 { ASSERT(Direction == SHIFT_UP);
CopyMemory(pFirst + cElementSize, pFirst, cBytesToMove); } } }
//+----------------------------------------------------------------------------
//
// Member: dprintf
//
// Synopsis: Dumps a printf style string to the debugger.
//
// Notes:
//
// History: 2-07-95 davepl Created
//
//-----------------------------------------------------------------------------
#if DBG
#define DEBUG 1
#endif
#ifdef DEBUG
inline int dprintf(LPCTSTR szFormat, ...) { TCHAR szBuffer[MAX_PATH];
va_list vaList; va_start(vaList, szFormat);
int retval = wvsprintf(szBuffer, szFormat, vaList); OutputDebugString(szBuffer);
va_end (vaList); return retval; }
#else
inline int dprintf(LPCTSTR, ...) { return 0; }
#endif
//////////////////////////////////////////////////////////////////////////////
//
// 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) ) \ { \ dprintf( TEXT(__FILE__) TEXT("(%d): Assertion '") TEXT( #x ) TEXT("' failed.\n"), __LINE__ ); \ DEBUG_BREAK; \ } \ } while (0)
#else
#define Assert(x)
#endif
//
// Verify
//
#if DEBUG
#define VERIFY(x) Assert(x)
#else
#define VERIFY(x) (x)
#endif
#ifdef ASSERT
#undef ASSERT
#endif
#define ASSERT(x) Assert(x)
extern const TCHAR szTaskmanKey[];
#pragma hdrstop
|