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.
82 lines
2.9 KiB
82 lines
2.9 KiB
/*++ api32prf.h
|
|
|
|
Header file for api profiling utilities
|
|
|
|
History:
|
|
11-9-89 created by vaidy
|
|
9-4-90 cleanup and modification to work with windows and
|
|
to take more data -- jamesg
|
|
6-11-91 Modified to work with WIN32 API profiler -- t-philm
|
|
--*/
|
|
|
|
#include "timing.h" // Timer DLL include file
|
|
|
|
//
|
|
// Defines for 64 DWORD arguments used by varible argument cdecl apis
|
|
// such as wsprintf.
|
|
//
|
|
#define DWORD64ARGS DWORD a0, DWORD a1, DWORD a2, DWORD a3, DWORD a4, \
|
|
DWORD a5, DWORD a6, DWORD a7, DWORD a8, DWORD a9, \
|
|
DWORD b0, DWORD b1, DWORD b2, DWORD b3, DWORD b4, \
|
|
DWORD b5, DWORD b6, DWORD b7, DWORD b8, DWORD b9, \
|
|
DWORD c0, DWORD c1, DWORD c2, DWORD c3, DWORD c4, \
|
|
DWORD c5, DWORD c6, DWORD c7, DWORD c8, DWORD c9, \
|
|
DWORD d0, DWORD d1, DWORD d2, DWORD d3, DWORD d4, \
|
|
DWORD d5, DWORD d6, DWORD d7, DWORD d8, DWORD d9, \
|
|
DWORD e0, DWORD e1, DWORD e2, DWORD e3, DWORD e4, \
|
|
DWORD e5, DWORD e6, DWORD e7, DWORD e8, DWORD e9, \
|
|
DWORD f0, DWORD f1, DWORD f2, DWORD f3, DWORD f4, \
|
|
DWORD f5, DWORD f6, DWORD f7, DWORD f8, DWORD f9, \
|
|
DWORD g0, DWORD g1, DWORD g2, DWORD g3
|
|
|
|
#define ARGS64 a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, \
|
|
b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, \
|
|
c0, c1, c2, c3, c4, c5, c6, c7, c8, c9, \
|
|
d0, d1, d2, d3, d4, d5, d6, d7, d8, d9, \
|
|
e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, \
|
|
f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, \
|
|
g0, g1, g2, g3
|
|
|
|
#define I_CALIBRATE API_COUNT
|
|
//
|
|
// profiling data structure
|
|
//
|
|
typedef struct _APFDATA {
|
|
DWORD cCalls; /* number of successfully timed calls */
|
|
DWORD cTimingErrors; /* number of times API called but not timed */
|
|
DWORD ulTotalTime; /* cumulative time spent in API */
|
|
DWORD ulFirstTime; /* time of first call */
|
|
DWORD ulMaxTime; /* time of longest call */
|
|
DWORD ulMinTime; /* time of shortest call */
|
|
} APFDATA, *PAPFDATA;
|
|
|
|
//
|
|
// Calibration control structure
|
|
//
|
|
typedef struct _APFCONTROL {
|
|
BOOL fCalibrate;
|
|
} APFCONTROL, *PAPFCONTROL;
|
|
|
|
|
|
//
|
|
// timing routines -- from apitimer.dll
|
|
//
|
|
extern DWORD FAR PASCAL ApfGetTime (void);
|
|
extern DWORD FAR PASCAL ApfStartTime (void);
|
|
|
|
|
|
//
|
|
// callable profiling routines
|
|
//
|
|
extern void ApfInitDll (void);
|
|
extern void FAR PASCAL ApfRecordInfo (WORD, ULONG);
|
|
extern int FAR PASCAL ApfDumpData (LPSTR);
|
|
extern void FAR PASCAL ApfClearData (void);
|
|
extern PAPFDATA FAR PASCAL ApfGetData (void);
|
|
extern char ** FAR PASCAL ApfGetApiNames (void);
|
|
extern char * FAR PASCAL ApfGetModuleName (void);
|
|
extern WORD FAR PASCAL ApfGetApiCount (void);
|
|
extern NTSTATUS ApfCreateDataSection (PAPFCONTROL *);
|
|
extern void _CRTAPI1 CalibCdeclApi (DWORD64ARGS);
|
|
|
|
|