96 lines
2.3 KiB
C
96 lines
2.3 KiB
C
/*++ BUILD Version: 0001 // Increment this if a change has global effects
|
||
|
||
Copyright (c) 1992 Microsoft Corporation
|
||
|
||
Module Name:
|
||
|
||
perfutil.h
|
||
|
||
Abstract:
|
||
|
||
This file supports routines used to parse and
|
||
create Performance Monitor Data Structures.
|
||
It actually supports Performance Object types with
|
||
multiple instances
|
||
|
||
Author:
|
||
|
||
Russ Blake 7/30/92
|
||
|
||
Revision History:
|
||
|
||
|
||
--*/
|
||
#ifndef _PERFUTIL_H_
|
||
#define _PERFUTIL_H_
|
||
|
||
// enable this define to log process heap data to the event log
|
||
#ifdef PROBE_HEAP_USAGE
|
||
#undef PROBE_HEAP_USAGE
|
||
#endif
|
||
//
|
||
// Utility macro. This is used to reserve a DWORD multiple of
|
||
// bytes for Unicode strings embedded in the definitional data,
|
||
// viz., object instance names.
|
||
//
|
||
#define DWORD_MULTIPLE(x) (((x+sizeof(DWORD)-1)/sizeof(DWORD))*sizeof(DWORD))
|
||
|
||
// (assumes dword is 4 bytes long and pointer is a dword in size)
|
||
#define ALIGN_ON_DWORD(x) ((VOID *)( ((DWORD) x & 0x00000003) ? ( ((DWORD) x & 0xFFFFFFFC) + 4 ) : ( (DWORD) x ) ))
|
||
|
||
extern WCHAR GLOBAL_STRING[]; // Global command (get all local ctrs)
|
||
extern WCHAR FOREIGN_STRING[]; // get data from foreign computers
|
||
extern WCHAR COSTLY_STRING[];
|
||
extern WCHAR NULL_STRING[];
|
||
|
||
#define QUERY_GLOBAL 1
|
||
#define QUERY_ITEMS 2
|
||
#define QUERY_FOREIGN 3
|
||
#define QUERY_COSTLY 4
|
||
|
||
//
|
||
// The definition of the only routine of perfutil.c, It builds part of a
|
||
// performance data instance (PERF_INSTANCE_DEFINITION) as described in
|
||
// winperf.h
|
||
//
|
||
|
||
HANDLE MonOpenEventLog ();
|
||
VOID MonCloseEventLog ();
|
||
DWORD GetQueryType (IN LPWSTR);
|
||
BOOL IsNumberInUnicodeList (DWORD, LPWSTR);
|
||
|
||
typedef struct _LOCAL_HEAP_INFO_BLOCK {
|
||
DWORD AllocatedEntries;
|
||
DWORD AllocatedBytes;
|
||
DWORD FreeEntries;
|
||
DWORD FreeBytes;
|
||
} LOCAL_HEAP_INFO, *PLOCAL_HEAP_INFO;
|
||
|
||
|
||
//
|
||
// Memory Probe macro
|
||
//
|
||
#ifdef PROBE_HEAP_USAGE
|
||
|
||
#define HEAP_PROBE() { \
|
||
DWORD dwHeapStatus[5]; \
|
||
NTSTATUS CallStatus; \
|
||
dwHeapStatus[4] = __LINE__; \
|
||
if (!(CallStatus = memprobe (dwHeapStatus, 16L, NULL))) { \
|
||
REPORT_INFORMATION_DATA (TCP_HEAP_STATUS, LOG_DEBUG, \
|
||
&dwHeapStatus, sizeof(dwHeapStatus)); \
|
||
} else { \
|
||
REPORT_ERROR_DATA (TCP_HEAP_STATUS_ERROR, LOG_DEBUG, \
|
||
&CallStatus, sizeof (DWORD)); \
|
||
} \
|
||
}
|
||
|
||
#else
|
||
|
||
#define HEAP_PROBE() ;
|
||
|
||
#endif
|
||
|
||
#endif //_PERFUTIL_H_
|
||
|