181 lines
6.5 KiB
C
181 lines
6.5 KiB
C
// NMSTAT.H
|
|
//
|
|
// Headers for STATS.DLL: a library to accumulate high performance
|
|
// statistics and allow them to be tabulated in a different
|
|
// process.
|
|
//
|
|
// Created 24-Oct-96 [JonT]
|
|
|
|
#ifndef _NMSTATS_H
|
|
#define _NMSTATS_H
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
//#if defined(_BUILD_STATS_) || defined(__midl)
|
|
#ifdef _BUILD_STATS_
|
|
#define STATSAPI
|
|
#else
|
|
#define STATSAPI __declspec(dllimport)
|
|
#endif
|
|
|
|
// Equates
|
|
#define MAX_COUNTER_NAME 64
|
|
#define STATS_COUNTER_ADDDEL_EVENT "StatsNewCounter"
|
|
#define STATS_REPORT_ADDDEL_EVENT "StatsNewReport"
|
|
#define COUNTER_FLAG_NO_STATISTICS 1 // Flag to CreateCounter. No statistics accumulated
|
|
// for this counter even if StartStatistics called.
|
|
// (StartStatistics fails)
|
|
#define COUNTER_FLAG_ACCUMULATE 2 // UpdateCounter adds to the counter value rather
|
|
// than replacing it.
|
|
#define COUNTER_CLEAR 1 // Flag to GetCounter. Specifies the counter should
|
|
// be cleared after being read
|
|
#define MAX_REPORT_NAME 64
|
|
#define UNDEFINED -1L
|
|
|
|
// Call parameters report defines
|
|
#define REP_SEND_AUDIO_FORMAT 0
|
|
#define REP_SEND_AUDIO_SAMPLING 1
|
|
#define REP_SEND_AUDIO_BITRATE 2
|
|
#define REP_SEND_AUDIO_PACKET 3
|
|
#define REP_RECV_AUDIO_FORMAT 4
|
|
#define REP_RECV_AUDIO_SAMPLING 5
|
|
#define REP_RECV_AUDIO_BITRATE 6
|
|
#define REP_RECV_AUDIO_PACKET 7
|
|
#define REP_SEND_VIDEO_FORMAT 8
|
|
#define REP_SEND_VIDEO_MAXFPS 9
|
|
#define REP_SEND_VIDEO_BITRATE 10
|
|
#define REP_RECV_VIDEO_FORMAT 11
|
|
#define REP_RECV_VIDEO_MAXFPS 12
|
|
#define REP_RECV_VIDEO_BITRATE 13
|
|
|
|
// System settings report defines
|
|
#define REP_SYS_BANDWIDTH 0
|
|
#define REP_SYS_AUDIO_DSOUND 1
|
|
#define REP_SYS_AUDIO_RECORD 2
|
|
#define REP_SYS_AUDIO_PLAYBACK 3
|
|
#define REP_SYS_AUDIO_DUPLEX 4
|
|
#define REP_SYS_VIDEO_DEVICE 5
|
|
#define REP_DEVICE_IMAGE_SIZE 6
|
|
|
|
// Types
|
|
#ifdef __midl
|
|
typedef DWORD HCOUNTER;
|
|
#else
|
|
typedef HANDLE HCOUNTER;
|
|
#endif
|
|
typedef HCOUNTER HREPORT;
|
|
|
|
typedef struct _FINDCOUNTER
|
|
{
|
|
DWORD dwSize;
|
|
char szName[MAX_COUNTER_NAME]; // Human-readable counter name
|
|
HCOUNTER hcounter; // Handle to use with all stats functions
|
|
int nValue; // Current value of counter
|
|
WORD wFlags; // COUNTER_FLAG_* values
|
|
WORD wRefCount; // Number of times StartStatistics has been called.
|
|
DWORD dwReserved; // Must be preserved: used for FindNextCounter
|
|
} FINDCOUNTER;
|
|
|
|
typedef struct _FINDREPORT
|
|
{
|
|
DWORD dwSize;
|
|
char szName[MAX_REPORT_NAME]; // Human-readable report name
|
|
HREPORT hreport; // Handle to use with all functions
|
|
WORD wFlags; // COUNTER_FLAG_* values
|
|
WORD wRefCount; // Number of times StartStatistics has been called.
|
|
DWORD dwReserved; // Must be preserved: used for FindNextCounter
|
|
} FINDREPORT;
|
|
|
|
typedef struct _COUNTERSTAT
|
|
{
|
|
DWORD dwSize; // Size of structure. Allows for future growth...
|
|
int nValue;
|
|
int nLow; // Lowest value seen since clear
|
|
int nHigh; // Highest value seen since clear
|
|
int nAverage; // Average value seen since clear
|
|
DWORD dwNumSamples; // Number of samples accumulated
|
|
DWORD dwmsAtClear; // GetTickCount at last Clear/StartStatistics call
|
|
} COUNTERSTAT;
|
|
|
|
// Nothing further needed by MIDL
|
|
#ifndef __midl
|
|
|
|
// Counter Functions
|
|
|
|
// Called by updater of counter to make new counter
|
|
// Sets the event named in the equate STATS_NEW_COUNTER_EVENT
|
|
STATSAPI HCOUNTER WINAPI CreateCounter(char* szName, WORD wFlags);
|
|
|
|
// Called by updater of counter when counter is going away
|
|
STATSAPI BOOL WINAPI DeleteCounter(HCOUNTER hc);
|
|
|
|
// Used by reader app to locate specific named counters or walk entire list.
|
|
// Pass NULL in for name to walk entire list. Pass NULL to FINDCOUNTER if
|
|
// just an HCOUNTER is desired. FindNext returns FALSE when there are no more.
|
|
STATSAPI HCOUNTER WINAPI FindFirstCounter(char* szName, FINDCOUNTER* pfc);
|
|
STATSAPI BOOL WINAPI FindNextCounter(FINDCOUNTER* pfc);
|
|
|
|
// Called by updater of counter. Makes the value current in the counter.
|
|
STATSAPI void WINAPI UpdateCounter(HCOUNTER hcounter, int value);
|
|
|
|
// Called by updater of counter. Initializes the max value for the counter.
|
|
STATSAPI void WINAPI InitCounterMax(HCOUNTER hcounter, int nMaxValue);
|
|
|
|
// Called by user of counter and just returns value with no statistics
|
|
STATSAPI int WINAPI GetCounter(HCOUNTER hcounter, DWORD dwFlags);
|
|
|
|
// Called by user of counter and just returns max value with no statistics
|
|
STATSAPI int WINAPI GetCounterMax(HCOUNTER hcounter, DWORD dwFlags);
|
|
|
|
// Begins collecting statistics on a counter
|
|
STATSAPI BOOL WINAPI StartStatistics(HCOUNTER hcounter);
|
|
|
|
// Done collecting statistics on a counter
|
|
STATSAPI void WINAPI StopStatistics(HCOUNTER hcounter);
|
|
|
|
// Get statistics on a counter
|
|
STATSAPI BOOL WINAPI ReadStatistics(HCOUNTER hcounter, COUNTERSTAT* pcs);
|
|
|
|
// Clear statistics on a counter
|
|
STATSAPI void WINAPI ClearStatistics(HCOUNTER hcounter);
|
|
|
|
// Report Functions
|
|
|
|
// Called by updater of report to make new report
|
|
// Sets the event named in the equate STATS_NEW_COUNTER_EVENT
|
|
STATSAPI HREPORT WINAPI CreateReport(char* szName, WORD wFlags);
|
|
|
|
// Called by updater of report when report is going away
|
|
STATSAPI BOOL WINAPI DeleteReport(HREPORT hreport);
|
|
|
|
// Used by reader app to locate specific named reports or walk entire list.
|
|
// Pass NULL in for name to walk entire list. Pass NULL to FINDREPORT if
|
|
// just an HREPORT is desired. FindNext returns FALSE when there are no more.
|
|
STATSAPI HREPORT WINAPI FindFirstReport(char* szName, FINDREPORT* pfr);
|
|
STATSAPI BOOL WINAPI FindNextReport(FINDREPORT* pfr);
|
|
|
|
// Called by updater of report. Makes the value current in the report.
|
|
STATSAPI void WINAPI UpdateReportEntry(HREPORT hreport, int nValue, DWORD dwIndex);
|
|
|
|
// Called by creater of report.
|
|
STATSAPI void WINAPI CreateReportEntry(HREPORT hreport, char* szName, DWORD dwIndex);
|
|
|
|
// Called by user of report
|
|
STATSAPI int WINAPI GetReportEntry(HREPORT hreport, DWORD dwIndex);
|
|
|
|
// Called by user of report
|
|
STATSAPI void WINAPI GetReportEntryName(HREPORT hreport, char *szName, DWORD dwIndex);
|
|
|
|
// Called by user of report
|
|
STATSAPI int WINAPI GetNumReportEntries(HREPORT hreport);
|
|
|
|
#endif // #ifndef __midl
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif // #ifndef _STATS_H
|