/*++ Copyright (c) 1992 Microsoft Corporation Module Name: pdhp.h Abstract: PDH private APIs. Converts WMI event trace data to perf counters Author: Melur Raghuraman (mraghu) 03-Oct-1997 Environment: Revision History: --*/ #ifndef __TRACECTR__01042001_ #define __TRACECTR__01042001_ #include #include #ifdef __cplusplus extern "C" { #endif /*****************************************************************************\ Trace Section \*****************************************************************************/ #define CPDAPI __stdcall #define TRACE_LOGGER_START_IF 0x00000001 #define TRACE_LOGGER_EXISTING 0x00000002 #define TRACE_ZERO_ON_QUERY 0x00000004 #define TRACE_REDUCE 0x00000008 #define TRACE_LOG_REPLAY 0x00000010 #define TRACE_DS_ONLY 0x00000020 #define TRACE_DUMP 0x00000080 #define TRACE_USE_WBEM 0x00000100 #define TRACE_EXTENDED_FMT 0x00000200 #define TRACE_SUMMARY 0x00000400 #define TRACE_MERGE_ETL 0x00000800 #define TRACE_INTERPRET 0x00001000 #define TRACE_MEMORY_REPORT 0x00002000 #define TRACE_HARDFAULT_REPORT 0x00004000 #define TRACE_BASIC_REPORT 0x00008000 #define TRACE_TOTALS_REPORT 0x00010000 #define TRACE_FILE_REPORT 0x00020000 #define TRACE_TRANSFORM_XML 0x00040000 #define DEFAULT_FILE_REPORT_SIZE 50 #define TRACE_STATUS_PROCESSING 0x00000001 #define TRACE_STATUS_REPORTING 0x00000002 typedef enum _MM_REPORT_TYPE { REPORT_SUMMARY_PROCESS, REPORT_SUMMARY_MODULE, REPORT_LIST_PROCESS, REPORT_LIST_MODULE } MM_REPORT_TYPE; typedef enum _MM_REPORT_SORT_KEY { REPORT_SORT_ALL, REPORT_SORT_HPF, REPORT_SORT_TF, REPORT_SORT_DZF, REPORT_SORT_COW } MM_REPORT_SORT_KEY; typedef struct _USER_CONTEXT_MM { MM_REPORT_TYPE reportNow; MM_REPORT_SORT_KEY sortNow; PWCHAR strImgName; } CPD_USER_CONTEXT_MM, * PCPD_USER_CONTEXT_MM; typedef struct _TRACE_MODULE_INFO { ULONG PID; ULONG lBaseAddress; ULONG lModuleSize; ULONG lDataFaultHF; ULONG lDataFaultTF; ULONG lDataFaultDZF; ULONG lDataFaultCOW; ULONG lCodeFaultHF; ULONG lCodeFaultTF; ULONG lCodeFaultDZF; ULONG lCodeFaultCOW; ULONG NextEntryOffset; // From the Current; Not from the top. LPWSTR strModuleName; LPWSTR strImageName; } TRACE_MODULE_INFO, * PTRACE_MODULE_INFO; typedef struct _TRACE_PROCESS_FAULT_INFO { ULONG PID; ULONG lDataFaultHF; ULONG lDataFaultTF; ULONG lDataFaultDZF; ULONG lDataFaultCOW; ULONG lCodeFaultHF; ULONG lCodeFaultTF; ULONG lCodeFaultDZF; ULONG lCodeFaultCOW; ULONG NextEntryOffset; LPWSTR ImageName; } TRACE_PROCESS_FAULT_INFO, *PTRACE_PROCESS_FAULT_INFO; typedef struct _TRACE_TRANSACTION_INFO { ULONG TransactionCount; ULONG AverageResponseTime; // in milliseconds ULONG MaxResponseTime; ULONG MinResponseTime; ULONG NextEntryOffset; LPWSTR Name; } TRACE_TRANSACTION_INFO, *PTRACE_TRANSACTION_INFO; typedef struct _TRACE_FILE_INFOW { ULONG ReadCount; ULONG WriteCount; ULONG ReadSize; ULONG WriteSize; ULONG NextEntryOffset; // From the Current; Not from the top. LPWSTR FileName; // The string immediatealy follows this structure. ULONG DiskNumber; } TRACE_FILE_INFOW, *PTRACE_FILE_INFOW; typedef struct _TRACE_PROCESS_INFOW { ULONG ReadCount; ULONG WriteCount; ULONG ReadSize; ULONG WriteSize; ULONG SendCount; ULONG RecvCount; ULONG SendSize; ULONG RecvSize; ULONG NextEntryOffset; LPWSTR ImageName; ULONG PID; ULONG DeadFlag; ULONG HPF; ULONG SPF; ULONG PrivateWSet; ULONG GlobalWSet; ULONG UserCPU; ULONG KernelCPU; ULONG TransCount; ULONGLONG LifeTime; ULONGLONG ResponseTime; ULONGLONG TxnStartTime; ULONGLONG TxnEndTime; LPWSTR UserName; } TRACE_PROCESS_INFOW, *PTRACE_PROCESS_INFOW; typedef struct _TRACE_THREAD_INFO { ULONG ThreadId; } TRACE_THREAD_INFO, *PTRACE_THREAD_INFO; typedef struct _TRACE_DISK_INFOW { ULONG ReadCount; ULONG WriteCount; ULONG ReadSize; ULONG WriteSize; ULONG NextEntryOffset; LPWSTR DiskName; ULONG DiskNumber; } TRACE_DISK_INFOW, *PTRACE_DISK_INFOW; // // tracelib will not start up a logger anymore. It is external to the dll // You can provide either Logfiles or LoggerNames (RealTime) as data feed // typedef struct _TRACE_BASIC_INFOW { ULONG FlushTimer; HANDLE hEvent; ULONG LogFileCount; ULONG LoggerCount; LPCWSTR *LogFileName; LPCWSTR *LoggerName; LPCWSTR MergeFileName; LPCWSTR ProcFileName; LPCWSTR SummaryFileName; LPCWSTR DumpFileName; LPCWSTR MofFileName; LPCWSTR DefMofFileName; LPCWSTR CompFileName; LPCWSTR XSLDocName; ULONGLONG StartTime; ULONGLONG EndTime; ULONGLONG DSStartTime; ULONGLONG DSEndTime; ULONG Flags; void (*StatusFunction)(int, double); PVOID pUserContext; } TRACE_BASIC_INFOW, *PTRACE_BASIC_INFOW; #define TRACE_FILE_INFO TRACE_FILE_INFOW #define PTRACE_FILE_INFO PTRACE_FILE_INFOW #define TRACE_PROCESS_INFO TRACE_PROCESS_INFOW #define PTRACE_PROCESS_INFO PTRACE_PROCESS_INFOW #define TRACE_DISK_INFO TRACE_DISK_INFOW #define PTRACE_DISK_INFO PTRACE_DISK_INFOW #define TRACE_BASIC_INFO TRACE_BASIC_INFOW #define PTRACE_BASIC_INFO PTRACE_BASIC_INFOW #ifdef DBG extern BOOLEAN TracectrDbgEnabled; #define TrctrDbgPrint(_x_) { if (TracectrDbgEnabled) DbgPrint _x_ ; } #endif // // APIs // ULONG CPDAPI GetTempName( LPTSTR strFile, size_t cchSize ); BOOLEAN CPDAPI TraceCtrDllInitialize ( HINSTANCE hinstDll, DWORD fdwReason, LPVOID fImpLoad ); ULONG CPDAPI InitTraceContextW( IN OUT PTRACE_BASIC_INFOW pTraceBasic, PULONG pMergedEventsLost ); ULONG CPDAPI DeinitTraceContext( IN OUT PTRACE_BASIC_INFO pTraceBasic ); ULONG CPDAPI GetMaxLoggers(); void DecodeIpAddressA( USHORT AddrType, PULONG IpAddrV4, PUSHORT IpAddrV6, PCHAR pszA ); void DecodeIpAddressW( USHORT AddrType, PULONG IpAddrV4, PUSHORT IpAddrV6, PWCHAR pszW ); HRESULT TransformXML( LPWSTR szXML, LPWSTR szXSL, LPWSTR szResult ); #define InitTraceContext InitTraceContextW #ifdef __cplusplus } #endif #endif // __TRACECTR__01042001_