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.
908 lines
23 KiB
908 lines
23 KiB
//======================================//
|
|
// Options Data Type //
|
|
//======================================//
|
|
|
|
|
|
typedef struct OPTIONSSTRUCT
|
|
{
|
|
BOOL bMenubar ;
|
|
BOOL bToolbar ;
|
|
BOOL bStatusbar ;
|
|
BOOL bAlwaysOnTop ;
|
|
} OPTIONS ;
|
|
|
|
|
|
//======================================//
|
|
// Basic "Derived" Types //
|
|
//======================================//
|
|
|
|
|
|
typedef HANDLE HLIBRARY ;
|
|
typedef HANDLE HMEMORY ;
|
|
typedef HWND HDLG ;
|
|
typedef HWND HCONTROL ;
|
|
typedef VOID *LPMEMORY ;
|
|
|
|
|
|
//======================================//
|
|
// Perfmon-Specific Types //
|
|
//======================================//
|
|
|
|
|
|
typedef PERF_DATA_BLOCK UNALIGNED *PPERFDATA ;
|
|
typedef PERF_OBJECT_TYPE UNALIGNED *PPERFOBJECT ;
|
|
typedef PERF_COUNTER_DEFINITION UNALIGNED *PPERFCOUNTERDEF ;
|
|
typedef PERF_INSTANCE_DEFINITION UNALIGNED *PPERFINSTANCEDEF ;
|
|
|
|
|
|
|
|
|
|
|
|
// This structure links together the Performance data for multiple
|
|
// systems, each of which has some counter instance which the user
|
|
// is interested in.
|
|
|
|
typedef struct _COUNTERTEXT {
|
|
struct _COUNTERTEXT *pNextTable;
|
|
DWORD dwLangId;
|
|
DWORD dwLastId;
|
|
DWORD dwCounterSize;
|
|
DWORD dwHelpSize;
|
|
LPWSTR *TextString;
|
|
LPWSTR HelpTextString;
|
|
} COUNTERTEXT;
|
|
|
|
typedef COUNTERTEXT *PCOUNTERTEXT;
|
|
|
|
// System states used mainly by Alert view to report system up/down
|
|
#define SYSTEM_OK 0
|
|
#define SYSTEM_DOWN 1
|
|
#define SYSTEM_DOWN_RPT 2
|
|
#define SYSTEM_RECONNECT 3
|
|
#define SYSTEM_RECONNECT_RPT 4
|
|
|
|
typedef struct PERFSYSTEMSTRUCT
|
|
{
|
|
struct PERFSYSTEMSTRUCT *pSystemNext;
|
|
TCHAR sysName[MAX_SYSTEM_NAME_LENGTH+1];
|
|
HKEY sysDataKey;
|
|
COUNTERTEXT CounterInfo;
|
|
DWORD FailureTime;
|
|
LPTSTR lpszValue;
|
|
BOOL bSystemNoLongerNeeded;
|
|
BOOL bSystemCounterNameSaved;
|
|
|
|
// the following used by perf data thread
|
|
DWORD dwThreadID ;
|
|
HANDLE hThread ;
|
|
DWORD StateData ;
|
|
HANDLE hStateDataMutex ;
|
|
HANDLE hPerfDataEvent ;
|
|
PPERFDATA pSystemPerfData ;
|
|
|
|
// mainly used by Alert to report system up/down
|
|
DWORD dwSystemState ;
|
|
|
|
// system version
|
|
DWORD SysVersion ;
|
|
|
|
} PERFSYSTEM, *PPERFSYSTEM, **PPPERFSYSTEM ;
|
|
|
|
|
|
typedef struct _graph_options {
|
|
BOOL bLegendChecked ;
|
|
BOOL bMenuChecked ;
|
|
BOOL bLabelsChecked;
|
|
BOOL bVertGridChecked ;
|
|
BOOL bHorzGridChecked ;
|
|
BOOL bStatusBarChecked ;
|
|
INT iVertMax ;
|
|
FLOAT eTimeInterval ;
|
|
INT iGraphOrHistogram ;
|
|
INT GraphVGrid,
|
|
GraphHGrid,
|
|
HistVGrid,
|
|
HistHGrid ;
|
|
|
|
} GRAPH_OPTIONS ;
|
|
|
|
|
|
|
|
//======================================//
|
|
// Line Data Type //
|
|
//======================================//
|
|
|
|
|
|
#define LineTypeChart 1
|
|
#define LineTypeAlert 2
|
|
#define LineTypeReport 3
|
|
|
|
|
|
|
|
typedef struct LINEVISUALSTRUCT
|
|
{
|
|
COLORREF crColor ;
|
|
int iColorIndex ;
|
|
|
|
int iStyle ;
|
|
int iStyleIndex ;
|
|
|
|
int iWidth ;
|
|
int iWidthIndex ;
|
|
} LINEVISUAL ;
|
|
|
|
typedef LINEVISUAL *PLINEVISUAL ;
|
|
|
|
|
|
typedef struct _LINESTRUCT
|
|
{
|
|
struct _LINESTRUCT *pLineNext;
|
|
int bFirstTime;
|
|
int iLineType ;
|
|
LPTSTR lnSystemName;
|
|
|
|
struct _PERF_OBJECT_TYPE lnObject;
|
|
LPTSTR lnObjectName;
|
|
|
|
struct _PERF_COUNTER_DEFINITION lnCounterDef;
|
|
LPTSTR lnCounterName;
|
|
|
|
struct _PERF_INSTANCE_DEFINITION lnInstanceDef;
|
|
LPTSTR lnInstanceName;
|
|
DWORD dwInstanceIndex;
|
|
|
|
LPTSTR lnPINName;
|
|
LPTSTR lnParentObjName;
|
|
DWORD lnUniqueID; // Of instance, if any
|
|
|
|
LARGE_INTEGER lnNewTime;
|
|
LARGE_INTEGER lnOldTime;
|
|
|
|
LARGE_INTEGER lnOldTime100Ns ;
|
|
LARGE_INTEGER lnNewTime100Ns ;
|
|
|
|
LARGE_INTEGER lnaCounterValue[2];
|
|
LARGE_INTEGER lnaOldCounterValue[2];
|
|
|
|
DWORD lnCounterType;
|
|
DWORD lnCounterLength;
|
|
LARGE_INTEGER lnPerfFreq ;
|
|
|
|
LINEVISUAL Visual ;
|
|
|
|
|
|
//=============================//
|
|
// Chart-related fields //
|
|
//=============================//
|
|
|
|
HPEN hPen ;
|
|
int iScaleIndex ;
|
|
FLOAT eScale;
|
|
FLOAT FAR *lnValues;
|
|
int *aiLogIndexes ;
|
|
FLOAT lnMaxValue ;
|
|
FLOAT lnMinValue ;
|
|
FLOAT lnAveValue ;
|
|
INT lnValidValues;
|
|
|
|
//=============================//
|
|
// Alert-related fields //
|
|
//=============================//
|
|
|
|
HBRUSH hBrush ;
|
|
BOOL bAlertOver ; // over or under?
|
|
FLOAT eAlertValue ; // value to compare
|
|
LPTSTR lpszAlertProgram ; // program to run
|
|
BOOL bEveryTime ; // run every time or once?
|
|
BOOL bAlerted ; // alert happened on line?
|
|
|
|
|
|
//=============================//
|
|
// Report-related fields //
|
|
//=============================//
|
|
int iReportColumn ;
|
|
struct _LINESTRUCT *pLineCounterNext;
|
|
int xReportPos ;
|
|
int yReportPos ;
|
|
}LINESTRUCT ;
|
|
|
|
|
|
typedef LINESTRUCT *PLINESTRUCT ;
|
|
typedef PLINESTRUCT PLINE ;
|
|
typedef PLINE *PPLINE ;
|
|
|
|
|
|
//======================================//
|
|
// DISKLINE data type //
|
|
//======================================//
|
|
|
|
#define dwLineSignature (MAKELONG ('L', 'i'))
|
|
|
|
typedef struct DISKSTRINGSTRUCT
|
|
{
|
|
DWORD dwLength ;
|
|
DWORD dwOffset ;
|
|
} DISKSTRING ;
|
|
typedef DISKSTRING *PDISKSTRING ;
|
|
|
|
|
|
typedef struct DISKLINESTRUCT
|
|
{
|
|
int iLineType ;
|
|
DISKSTRING dsSystemName ;
|
|
DISKSTRING dsObjectName ;
|
|
DISKSTRING dsCounterName ;
|
|
DISKSTRING dsInstanceName ;
|
|
DISKSTRING dsPINName ;
|
|
DISKSTRING dsParentObjName ;
|
|
DWORD dwUniqueID ;
|
|
LINEVISUAL Visual ;
|
|
int iScaleIndex ;
|
|
FLOAT eScale ;
|
|
BOOL bAlertOver ;
|
|
FLOAT eAlertValue ;
|
|
DISKSTRING dsAlertProgram ;
|
|
BOOL bEveryTime ;
|
|
} DISKLINE ;
|
|
|
|
typedef DISKLINE *PDISKLINE ;
|
|
|
|
|
|
|
|
typedef FLOAT DFN (PLINESTRUCT);
|
|
typedef DFN *PDFN;
|
|
|
|
typedef struct _TIMELINESTRUCT
|
|
{
|
|
INT ppd ; // Pixels Per DataPoint
|
|
INT rppd ; // Remaining Pixels Per DataPoint
|
|
INT xLastTime ; // X coordinate of last time line.
|
|
INT iValidValues ; // High water mark for valid data.
|
|
}TIMELINESTRUCT;
|
|
|
|
|
|
|
|
|
|
//======================================//
|
|
// Graph Data Type //
|
|
//======================================//
|
|
|
|
|
|
#define iGraphMaxTics 26
|
|
|
|
|
|
|
|
// This structure describes the characteristics of one visual
|
|
// graph. It is linked for the day when multiple graphs are
|
|
// displayed within one instance of the application.
|
|
|
|
typedef struct _GRAPHSTRUCT
|
|
{
|
|
BOOL bManualRefresh ;
|
|
HWND hWnd ;
|
|
BOOL bModified ;
|
|
|
|
PPERFSYSTEM pSystemFirst;
|
|
PLINESTRUCT pLineFirst;
|
|
|
|
int xNumTics ;
|
|
int yNumTics ;
|
|
int axTics [iGraphMaxTics] ;
|
|
int ayTics [iGraphMaxTics] ;
|
|
|
|
RECT rectHorzScale ;
|
|
RECT rectVertScale ;
|
|
RECT rectData ;
|
|
HRGN hGraphRgn ;
|
|
|
|
INT gMaxValues;
|
|
INT gKnownValue;
|
|
|
|
LINEVISUAL Visual ;
|
|
|
|
DWORD gInterval;
|
|
GRAPH_OPTIONS gOptions;
|
|
TIMELINESTRUCT gTimeLine;
|
|
|
|
PPOINT pptDataPoints ;
|
|
SYSTEMTIME *pDataTime ;
|
|
|
|
HPEN hGridPen ;
|
|
HANDLE hbRed ;
|
|
BOOL HighLightOnOff ;
|
|
} GRAPHSTRUCT ;
|
|
typedef GRAPHSTRUCT *PGRAPHSTRUCT;
|
|
// minor version 3 to support alert, report, log intervals in msec
|
|
#define ChartMajorVersion 1
|
|
#define ChartMinorVersion 3
|
|
|
|
|
|
typedef struct DISKCHARTSTRUCT
|
|
{
|
|
DWORD dwNumLines ;
|
|
INT gMaxValues;
|
|
LINEVISUAL Visual ;
|
|
GRAPH_OPTIONS gOptions ;
|
|
BOOL bManualRefresh ;
|
|
OPTIONS perfmonOptions ;
|
|
} DISKCHART ;
|
|
|
|
|
|
typedef struct _SAVESTRUCT
|
|
{
|
|
INT version;
|
|
INT type;
|
|
INT iPerfmonView ;
|
|
INT graph_offset;
|
|
INT alert_offset;
|
|
INT log_offset;
|
|
}SAVESTRUCT;
|
|
typedef SAVESTRUCT *PSAVESTRUCT;
|
|
|
|
typedef struct _GRAPH_COUNTERS
|
|
{
|
|
INT sys_name_len;
|
|
INT sys_name_offset;
|
|
INT obj_name_len;
|
|
INT obj_name_offset;
|
|
INT cnt_name_len;
|
|
INT cnt_name_offset;
|
|
INT inst_name_len;
|
|
INT inst_name_offset;
|
|
INT PIN_name_len;
|
|
INT PIN_name_offset;
|
|
INT POB_name_len;
|
|
INT POB_name_offset;
|
|
DWORD inst_unique_id;
|
|
DWORD counter_type;
|
|
DWORD counter_length;
|
|
int iScaleIndex ;
|
|
FLOAT eScale;
|
|
LINEVISUAL Visual ;
|
|
INT updated;
|
|
}GRAPH_COUNTERS;
|
|
|
|
typedef struct _SAVGRAFSTRUCT
|
|
{
|
|
INT preference;
|
|
INT MaxValues;
|
|
RECT GraphArea;
|
|
GRAPH_OPTIONS options;
|
|
INT num_counters;
|
|
GRAPH_COUNTERS counters[1];
|
|
}SAVGRAFSTRUCT;
|
|
typedef SAVGRAFSTRUCT *PSAVGRAFSTRUCT;
|
|
|
|
|
|
typedef struct _SAVLOGSTRUCT
|
|
{
|
|
DWORD logInterval;
|
|
BOOL logActive;
|
|
LPTSTR logFileName;
|
|
DWORD logFileSize;
|
|
}SAVLOGSTRUCT;
|
|
typedef SAVLOGSTRUCT *PSAVLOGSTRUCT;
|
|
|
|
|
|
#define DEF_GRAPH_INTERVAL 1000 // milliseconds
|
|
#define LINE_GRAPH 1
|
|
#define BAR_GRAPH 2
|
|
#define DEF_GRAPH_VMAX 100
|
|
#define SUCCESS 0
|
|
#define MIN_TIMER_INTERVAL 50
|
|
#define GRAPH_TIMER_ID 1
|
|
|
|
|
|
#define NO_VALUES_YET -1
|
|
// initial value for index to known and drawn values
|
|
#define MIN_NMAXVALUES 10
|
|
// minimum number of values that a graph needs to be displayed ( >1 )
|
|
#define DX_CALIBRATION_LEFT 1
|
|
// space between calibration value and left window edge
|
|
#define DX_LEGEND_RIGHT 1
|
|
// space between right window edge and legend
|
|
#define DY_AXIS_TOP 0
|
|
// space to allow at top of graph
|
|
#define DY_AXIS_BOTTOM 0
|
|
// space to allow at bottom of graph
|
|
#define LG_TO_CALIBRATION_RATIO 5
|
|
// width of calibration values * this number can't exceed screen width
|
|
#define LG_TO_LEGEND_RATIO 2
|
|
// width of legend * this number can't exceed screen width
|
|
|
|
|
|
// LINEGRAPH
|
|
#define DEFAULT_VAL_BOTTOM 0
|
|
#define DEFAULT_DVAL_AXISHEIGHT 100
|
|
#define DEFAULT_MAX_VALUES 100
|
|
#define GRAPH_INWARD_EDGE 5
|
|
#define GRAPH_LEFT_PAD 5
|
|
#define GRAPH_DOWNWARD_EDGE 5
|
|
#define ROOM_FOR_LEGEND 40
|
|
|
|
// LINEGRAPH DISP
|
|
#define DEFAULT_F_DISPLAY_LEGEND TRUE
|
|
#define DEFAULT_F_DISPLAY_CALIBRATION TRUE
|
|
|
|
#define NONE_LEN MAX_SYSTEM_NAME_LENGTH + 1
|
|
|
|
|
|
|
|
//======================================//
|
|
// Log/Playback/Alert Status IDs //
|
|
//======================================//
|
|
|
|
|
|
#define iPMStatusClosed 100
|
|
#define iPMStatusPaused 200
|
|
#define iPMStatusCollecting 300
|
|
#define iPMStatusPlaying 400
|
|
|
|
|
|
//======================================//
|
|
// Log Data Type //
|
|
//======================================//
|
|
|
|
|
|
typedef struct _LOGENTRYSTRUCT
|
|
{
|
|
DWORD ObjectTitleIndex ;
|
|
TCHAR szComputer [MAX_SYSTEM_NAME_LENGTH + 1] ;
|
|
TCHAR szObject [PerfObjectLen + 1] ;
|
|
BOOL bSaveCurrentName ;
|
|
struct _LOGENTRYSTRUCT *pNextLogEntry ;
|
|
} LOGENTRY ;
|
|
|
|
typedef LOGENTRY *PLOGENTRY ;
|
|
|
|
|
|
typedef struct LOGSTRUCT
|
|
{
|
|
int iStatus ;
|
|
BOOL bManualRefresh ;
|
|
BOOL bModified ;
|
|
|
|
PPERFSYSTEM pSystemFirst;
|
|
TCHAR szFilePath [FilePathLen + 1] ;
|
|
HANDLE hFile ;
|
|
long lIndexBlockOffset ;
|
|
int iIndex ;
|
|
PPERFDATA pLogData ;
|
|
DWORD dwDetailLevel ;
|
|
long lFileSize ;
|
|
DWORD iIntervalMSecs ;
|
|
int xCol1Width ;
|
|
PLOGENTRY pLogEntryFirst ;
|
|
|
|
// the following is used for saving system counter names into a
|
|
// log file. They are reset every the user changes log files.
|
|
BOOL bSaveCounterName ;
|
|
LPTSTR pBaseCounterName ;
|
|
long lBaseCounterNameSize ;
|
|
long lBaseCounterNameOffset ;
|
|
|
|
// this is used for checking system time when re-logging.
|
|
// this is to avoid log data not in chronological order.
|
|
SYSTEMTIME LastLogTime ;
|
|
|
|
// the following is used for wait for data event handles
|
|
HANDLE *lpHandles ;
|
|
int NumberOfHandles ;
|
|
|
|
//==========================================================================//
|
|
// Macros //
|
|
//==========================================================================//
|
|
|
|
|
|
|
|
} LOG ;
|
|
|
|
typedef LOG *PLOG ;
|
|
|
|
|
|
//======================================//
|
|
// Log File Data Types //
|
|
//======================================//
|
|
|
|
|
|
#define LogFileSignatureLen 6
|
|
#define LogFileBlockMaxIndexes 100
|
|
|
|
|
|
#define LogFileSignature TEXT("Loges")
|
|
#define LogFileVersion 2
|
|
#define LogFileRevision 0
|
|
|
|
|
|
#define LogFileIndexData 0x01
|
|
#define LogFileIndexBookmark 0x02
|
|
#define LogFileIndexNextBlock 0x04
|
|
#define LogFileIndexEOF 0x08
|
|
#define LogFileIndexCounterName 0x010
|
|
|
|
|
|
typedef struct LOGHEADERSTRUCT
|
|
{ // LOGHEADER
|
|
TCHAR szSignature [LogFileSignatureLen] ;
|
|
int iLength ;
|
|
WORD wVersion ;
|
|
WORD wRevision ;
|
|
long lBaseCounterNameOffset ;
|
|
} LOGHEADER ;
|
|
|
|
typedef LOGHEADER *PLOGHEADER ;
|
|
|
|
|
|
typedef struct LOGINDEXSTRUCT
|
|
{ // LOGINDEX
|
|
UINT uFlags ;
|
|
SYSTEMTIME SystemTime ;
|
|
long lDataOffset ;
|
|
int iSystemsLogged ;
|
|
} LOGINDEX ;
|
|
|
|
typedef LOGINDEX *PLOGINDEX ;
|
|
|
|
|
|
#define LogIndexSignatureLen 7
|
|
#define LogIndexSignature TEXT("Index ")
|
|
#define LogIndexSignature1 "Perfmon Index"
|
|
|
|
typedef struct LOGFILEINDEXBLOCKSTRUCT
|
|
{
|
|
TCHAR szSignature [LogIndexSignatureLen] ;
|
|
int iNumIndexes ;
|
|
LOGINDEX aIndexes [LogFileBlockMaxIndexes] ;
|
|
DWORD lNextBlockOffset ;
|
|
} LOGINDEXBLOCK ;
|
|
|
|
typedef LOGINDEXBLOCK *PLOGINDEXBLOCK ;
|
|
|
|
|
|
typedef struct LOGPOSITIONSTRUCT
|
|
{
|
|
PLOGINDEXBLOCK pIndexBlock ;
|
|
int iIndex ;
|
|
int iPosition ;
|
|
} LOGPOSITION ;
|
|
|
|
typedef LOGPOSITION *PLOGPOSITION ;
|
|
|
|
|
|
//======================================//
|
|
// Bookmark Data Type //
|
|
//======================================//
|
|
|
|
|
|
#define BookmarkCommentLen 256
|
|
|
|
typedef struct BOOKMARKSTRUCT
|
|
{
|
|
struct BOOKMARKSTRUCT *pBookmarkNext;
|
|
SYSTEMTIME SystemTime ;
|
|
TCHAR szComment [BookmarkCommentLen] ;
|
|
int iTic ;
|
|
} BOOKMARK, *PBOOKMARK, **PPBOOKMARK ;
|
|
|
|
typedef struct _LOGFILECOUNTERNAME
|
|
{
|
|
TCHAR szComputer [MAX_SYSTEM_NAME_LENGTH] ;
|
|
DWORD dwLastCounterId ;
|
|
DWORD dwLangId;
|
|
long lBaseCounterNameOffset ;
|
|
long lCurrentCounterNameOffset ;
|
|
long lMatchLength ;
|
|
long lUnmatchCounterNames ;
|
|
} LOGFILECOUNTERNAME, *PLOGFILECOUNTERNAME, **PPLOGFILECOUNTERNAME ;
|
|
|
|
typedef struct COUNTERNAMESTRUCT
|
|
{
|
|
struct COUNTERNAMESTRUCT *pCounterNameNext ;
|
|
LOGFILECOUNTERNAME CounterName ;
|
|
LPTSTR pRemainNames ;
|
|
} LOGCOUNTERNAME, *PLOGCOUNTERNAME ;
|
|
|
|
typedef struct PLAYBACKLOGSTRUCT
|
|
{
|
|
LPTSTR szFilePath ;
|
|
LPTSTR szFileTitle ;
|
|
// TCHAR szFilePath [FilePathLen + 1] ;
|
|
// TCHAR szFileTitle [FilePathLen + 1] ;
|
|
int iStatus ;
|
|
HANDLE hFile ;
|
|
PLOGHEADER pHeader ;
|
|
HANDLE hMapHandle ;
|
|
int iTotalTics ;
|
|
int iSelectedTics ;
|
|
LOGPOSITION BeginIndexPos ;
|
|
LOGPOSITION EndIndexPos ;
|
|
LOGPOSITION StartIndexPos ;
|
|
LOGPOSITION StopIndexPos ;
|
|
PBOOKMARK pBookmarkFirst ;
|
|
LPTSTR pBaseCounterNames ;
|
|
long lBaseCounterNameSize ;
|
|
long lBaseCounterNameOffset ;
|
|
PLOGCOUNTERNAME pLogCounterNameFirst ;
|
|
} PLAYBACKLOG ;
|
|
|
|
//=====================================//
|
|
// Log File Counter Name data type //
|
|
//=====================================//
|
|
|
|
|
|
// minor version 3 to support alert, report, log intervals in msec
|
|
// minor version 5 to support storing Log file name in setting
|
|
// and start logging after reading the file.
|
|
#define LogMajorVersion 1
|
|
#define LogMinorVersion 5
|
|
|
|
|
|
typedef struct DISKLOGSTRUCT
|
|
{
|
|
DWORD dwNumLines ;
|
|
DWORD dwIntervalSecs ;
|
|
BOOL bManualRefresh ;
|
|
OPTIONS perfmonOptions ;
|
|
TCHAR LogFileName[260] ;
|
|
} DISKLOG ;
|
|
|
|
|
|
|
|
|
|
//======================================//
|
|
// Alert Data Type //
|
|
//======================================//
|
|
|
|
|
|
typedef struct ALERTSTRUCT
|
|
{
|
|
HWND hWnd ;
|
|
HWND hAlertListBox ;
|
|
int iStatus ;
|
|
BOOL bManualRefresh ;
|
|
BOOL bModified ;
|
|
|
|
|
|
PPERFSYSTEM pSystemFirst ;
|
|
PLINESTRUCT pLineFirst ;
|
|
|
|
DWORD iIntervalMSecs ;
|
|
|
|
LINEVISUAL Visual ;
|
|
|
|
HFONT hFontItems ;
|
|
int yItemHeight ;
|
|
|
|
int xColorWidth ;
|
|
int xDateWidth ;
|
|
int xTimeWidth ;
|
|
int xNumberWidth ;
|
|
int xConditionWidth ;
|
|
|
|
// used in controlling the horz scrollbar
|
|
int xTextExtent ;
|
|
|
|
BOOL bSwitchToAlert ;
|
|
BOOL bNetworkAlert ;
|
|
BOOL bEventLog ;
|
|
TCHAR MessageName [16] ;
|
|
|
|
// used for the network alert thread
|
|
HANDLE hNetAlertThread ;
|
|
DWORD dwNetAlertThreadID ;
|
|
|
|
// option to turn alert legend on/off
|
|
BOOL bLegendOn ;
|
|
} ALERT ;
|
|
|
|
typedef ALERT *PALERT ;
|
|
|
|
|
|
|
|
#define AlertMajorVersion 1
|
|
|
|
// minor version 2 to support Alert msg name
|
|
// minor version 3 to support alert, report, log intervals in msec
|
|
// minor version 4 to support alert event logging
|
|
// minor version 6 to support alert misc options
|
|
#define AlertMinorVersion 6
|
|
|
|
|
|
typedef struct DISKALERTSTRUCT
|
|
{
|
|
LINEVISUAL Visual ;
|
|
DWORD dwNumLines ;
|
|
DWORD dwIntervalSecs ;
|
|
BOOL bManualRefresh ;
|
|
BOOL bSwitchToAlert ;
|
|
BOOL bNetworkAlert ;
|
|
TCHAR MessageName [16] ;
|
|
OPTIONS perfmonOptions ;
|
|
DWORD MiscOptions ;
|
|
} DISKALERT ;
|
|
|
|
|
|
//======================================//
|
|
// Report Data Type //
|
|
//======================================//
|
|
|
|
|
|
typedef struct COLUMNGROUPSTRUCT
|
|
{
|
|
struct COLUMNGROUPSTRUCT *pColumnGroupNext ;
|
|
struct COLUMNGROUPSTRUCT *pColumnGroupPrevious ;
|
|
struct OBJECTGROUPSTRUCT *pParentObject ;
|
|
LPTSTR lpszParentName ;
|
|
LPTSTR lpszInstanceName ;
|
|
int ParentNameTextWidth ;
|
|
int InstanceNameTextWidth ;
|
|
int xPos ;
|
|
int xWidth ;
|
|
int yFirstLine ;
|
|
int ColumnNumber ; // start from 0
|
|
DWORD dwInstanceIndex;
|
|
} COLUMNGROUP ;
|
|
|
|
|
|
typedef COLUMNGROUP *PCOLUMNGROUP ;
|
|
|
|
|
|
typedef struct COUNTERGROUPSTRUCT
|
|
{
|
|
struct COUNTERGROUPSTRUCT *pCounterGroupNext ;
|
|
struct COUNTERGROUPSTRUCT *pCounterGroupPrevious ;
|
|
struct OBJECTGROUPSTRUCT *pParentObject ;
|
|
DWORD dwCounterIndex ;
|
|
PLINE pLineFirst ;
|
|
int yLine ;
|
|
int xWidth ;
|
|
} COUNTERGROUP ;
|
|
|
|
typedef COUNTERGROUP *PCOUNTERGROUP ;
|
|
|
|
|
|
typedef struct OBJECTGROUPSTRUCT
|
|
{
|
|
struct OBJECTGROUPSTRUCT *pObjectGroupNext ;
|
|
struct OBJECTGROUPSTRUCT *pObjectGroupPrevious ;
|
|
struct SYSTEMGROUPSTRUCT *pParentSystem ;
|
|
LPTSTR lpszObjectName ;
|
|
PCOUNTERGROUP pCounterGroupFirst ;
|
|
PCOLUMNGROUP pColumnGroupFirst ;
|
|
int yFirstLine ;
|
|
int yLastLine ;
|
|
int xWidth ;
|
|
} OBJECTGROUP ;
|
|
|
|
typedef OBJECTGROUP *POBJECTGROUP ;
|
|
|
|
|
|
typedef struct SYSTEMGROUPSTRUCT
|
|
{ // SystemGroup
|
|
struct SYSTEMGROUPSTRUCT *pSystemGroupNext ;
|
|
struct SYSTEMGROUPSTRUCT *pSystemGroupPrevious ;
|
|
LPTSTR lpszSystemName ;
|
|
POBJECTGROUP pObjectGroupFirst ;
|
|
int yFirstLine ;
|
|
int yLastLine ;
|
|
int xWidth ;
|
|
} SYSTEMGROUP ;
|
|
|
|
typedef SYSTEMGROUP *PSYSTEMGROUP ;
|
|
|
|
enum REPORT_ITEM_TYPE
|
|
{
|
|
REPORT_TYPE_NOTHING,
|
|
REPORT_TYPE_SYSTEM,
|
|
REPORT_TYPE_OBJECT,
|
|
REPORT_TYPE_COLUMN,
|
|
REPORT_TYPE_COUNTER,
|
|
REPORT_TYPE_LINE
|
|
} ;
|
|
|
|
typedef union REPORT_ITEM_TAG
|
|
{
|
|
PSYSTEMGROUP pSystem ;
|
|
POBJECTGROUP pObject ;
|
|
PCOLUMNGROUP pColumn ;
|
|
PCOUNTERGROUP pCounter ;
|
|
PLINE pLine ;
|
|
} REPORT_ITEM ;
|
|
|
|
|
|
typedef struct REPORTSTRUCT
|
|
{ // REPORT
|
|
HWND hWnd ;
|
|
int iStatus ;
|
|
BOOL bManualRefresh ;
|
|
BOOL bModified ;
|
|
|
|
TCHAR szTitle [120] ;
|
|
SYSTEMTIME SystemTime ;
|
|
|
|
PPERFSYSTEM pSystemFirst ;
|
|
PLINE pLineFirst ;
|
|
|
|
PSYSTEMGROUP pSystemGroupFirst ;
|
|
|
|
REPORT_ITEM CurrentItem ;
|
|
enum REPORT_ITEM_TYPE CurrentItemType ;
|
|
|
|
LINEVISUAL Visual ;
|
|
|
|
|
|
DWORD iIntervalMSecs ;
|
|
FLOAT eTimeInterval ;
|
|
HFONT hFont ;
|
|
HFONT hFontHeaders ;
|
|
int yLineHeight ;
|
|
|
|
int xMaxCounterWidth ;
|
|
int xValueWidth ;
|
|
|
|
int xWidth ;
|
|
int yHeight ;
|
|
} REPORT ;
|
|
|
|
typedef REPORT *PREPORT ;
|
|
|
|
// minor version 3 to support alert, report, log intervals in msec
|
|
#define ReportMajorVersion 1
|
|
#define ReportMinorVersion 3
|
|
|
|
|
|
typedef struct DISKREPORTSTRUCT
|
|
{
|
|
LINEVISUAL Visual ;
|
|
DWORD dwNumLines ;
|
|
DWORD dwIntervalSecs ;
|
|
BOOL bManualRefresh ;
|
|
OPTIONS perfmonOptions ;
|
|
} DISKREPORT ;
|
|
|
|
|
|
//======================================//
|
|
// File Header Type //
|
|
//======================================//
|
|
|
|
|
|
#define PerfSignatureLen 20
|
|
|
|
#define szPerfChartSignature TEXT("PERF CHART")
|
|
#define szPerfAlertSignature TEXT("PERF ALERT")
|
|
#define szPerfLogSignature TEXT("PERF LOG")
|
|
#define szPerfReportSignature TEXT("PERF REPORT")
|
|
#define szPerfWorkspaceSignature TEXT("PERF WORKSPACE")
|
|
|
|
|
|
typedef struct PERFFILEHEADERSTRUCT
|
|
{ // PERFFILEHEADER
|
|
TCHAR szSignature [PerfSignatureLen] ;
|
|
DWORD dwMajorVersion ;
|
|
DWORD dwMinorVersion ;
|
|
BYTE abyUnused [100] ;
|
|
} PERFFILEHEADER ;
|
|
|
|
#define WorkspaceMajorVersion 1
|
|
|
|
// minor version 1 to support window placement data
|
|
// minor version 2 to support alert msg name
|
|
// minor version 3 to support alert, report, log intervals in msec
|
|
// minor version 4 to support alert eventlog
|
|
// minor version 5 to support log file name in log setting
|
|
// minor version 6 to support alert misc options
|
|
#define WorkspaceMinorVersion 6
|
|
|
|
typedef struct DISKWORKSPACESTRUCT
|
|
{
|
|
INT iPerfmonView ;
|
|
DWORD ChartOffset ;
|
|
DWORD AlertOffset ;
|
|
DWORD LogOffset ;
|
|
DWORD ReportOffset ;
|
|
WINDOWPLACEMENT WindowPlacement ;
|
|
} DISKWORKSPACE ;
|
|
|
|
|
|
|
|
|