/*++ 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 __PDHP__ #define __PDHP__ #include #include #ifdef __cplusplus extern "C" { #endif /*****************************************************************************\ Private Pdh Section \*****************************************************************************/ typedef struct _PDH_RELOG_INFO_A { LPSTR strLog; DWORD dwFileFormat; DWORD dwFlags; PDH_TIME_INFO TimeInfo; FILETIME ftInterval; ULONG Reserved1; ULONG Reserved2; } PDH_RELOG_INFO_A, *PPDH_RELOG_INFO_A; typedef struct _PDH_RELOG_INFO_W { LPWSTR strLog; DWORD dwFileFormat; DWORD dwFlags; PDH_TIME_INFO TimeInfo; FILETIME ftInterval; ULONG Reserved1; ULONG Reserved2; } PDH_RELOG_INFO_W, *PPDH_RELOG_INFO_W; PDH_FUNCTION PdhRelogA( HLOG hLogIn, PPDH_RELOG_INFO_A pRelogInfo ); PDH_FUNCTION PdhRelogW( HLOG hLogIn, PPDH_RELOG_INFO_W pRelogInfo ); #ifdef UNICODE #define PdhRelog PdhRelogW #define PDH_RELOG_INFO PDH_RELOG_INFO_W #define PPDH_RELOG_INFO PPDH_RELOG_INFO_W #else #define PdhRelog PdhRelogA #define PDH_RELOG_INFO PDH_RELOG_INFO_A #define PPDH_RELOG_INFO PPDH_RELOG_INFO_A #endif /*****************************************************************************\ Performance Logs and Alerts Section \*****************************************************************************/ #ifdef UNICODE #define PdhPlaStart PdhPlaStartW #define PdhPlaStop PdhPlaStopW #define PdhPlaSchedule PdhPlaScheduleW #define PdhPlaCreate PdhPlaCreateW #define PdhPlaDelete PdhPlaDeleteW #define PdhPlaAddItem PdhPlaAddItemW #define PdhPlaSetItemList PdhPlaSetItemListW #define PdhPlaRemoveAllItems PdhPlaRemoveAllItemsW #define PdhPlaGetInfo PdhPlaGetInfoW #define PdhPlaSetInfo PdhPlaSetInfoW #define PdhPlaSetRunAs PdhPlaSetRunAsW #define PdhPlaEnumCollections PdhPlaEnumCollectionsW #define PdhPlaValidateInfo PdhPlaValidateInfoW #define PDH_PLA_INFO PDH_PLA_INFO_W #define PPDH_PLA_INFO PPDH_PLA_INFO_W #define PDH_PLA_ITEM PDH_PLA_ITEM_W #define PPDH_PLA_ITEM PPDH_PLA_ITEM_W #define PdhTranslate009Counter PdhTranslate009CounterW #define PdhTranslateLocaleCounter PdhTranslateLocaleCounterW #define PdhAdd009Counter PdhAdd009CounterW #define PdhGetLogFileType PdhGetLogFileTypeW #define PdhPlaGetLogFileName PdhPlaGetLogFileNameW #define PdhPlaGetSchedule PdhPlaGetScheduleW #define PdhiPlaFormatBlanks PdhiPlaFormatBlanksW #else #define PdhPlaStart PdhPlaStartA #define PdhPlaStop PdhPlaStopA #define PdhPlaSchedule PdhPlaScheduleW #define PdhPlaCreate PdhPlaCreateA #define PdhPlaDelete PdhPlaDeleteA #define PdhPlaAddItem PdhPlaAddItemA #define PdhPlaSetItemList PdhPlaSetItemListA #define PdhPlaRemoveAllItems PdhPlaRemoveAllItemA #define PdhPlaGetInfo PdhPlaGetInfoA #define PdhPlaSetInfo PdhPlaSetInfoA #define PdhPlaSetRunAs PdhPlaSetRunAsA #define PdhPlaEnumCollections PdhPlaEnumCollectionsA #define PdhPlaValidateInfo PdhPlaValidateInfoA #define PDH_PLA_INFO PDH_PLA_INFO_A #define PPDH_PLA_INFO PPDH_PLA_INFO_A #define PDH_PLA_ITEM PDH_PLA_ITEM_A #define PPDH_PLA_ITEM PPDH_PLA_ITEM_A #define PdhTranslate009Counter PdhTranslate009CounterA #define PdhTranslateLocaleCounter PdhTranslateLocaleCounterA #define PdhAdd009Counter PdhAdd009CounterA #define PdhGetLogFileType PdhGetLogFileTypeA #define PdhPlaGetLogFileName PdhPlaGetLogFileNameA #define PdhPlaGetSchedule PdhPlaGetScheduleA #define PdhiPlaFormatBlanks PdhiPlaFormatBlanksA #endif // wDataType values #define PLA_TT_DTYPE_DATETIME ((WORD)0x0001) #define PLA_TT_DTYPE_UNITS ((WORD)0x0002) // dwMode values #define PLA_AUTO_MODE_NONE ((DWORD)0x00000000) // Manual #define PLA_AUTO_MODE_SIZE ((DWORD)0x00000001) // Size #define PLA_AUTO_MODE_AT ((DWORD)0x00000002) // Time #define PLA_AUTO_MODE_AFTER ((DWORD)0x00000003) // Value & unit type #define PLA_AUTO_MODE_CALENDAR ((DWORD)0x00000004) // Schedule Calender // wTimeType values #define PLA_TT_TTYPE_START ((WORD)0x0001) #define PLA_TT_TTYPE_STOP ((WORD)0x0002) #define PLA_TT_TTYPE_RESTART ((WORD)0x0003) #define PLA_TT_TTYPE_SAMPLE ((WORD)0x0004) #define PLA_TT_TTYPE_LAST_MODIFIED ((WORD)0x0005) #define PLA_TT_TTYPE_CREATENEWFILE ((WORD)0x0006) #define PLA_TT_TTYPE_REPEAT_SCHEDULE ((WORD)0x0007) // dwUnitType values #define PLA_TT_UTYPE_SECONDS ((DWORD)0x00000001) #define PLA_TT_UTYPE_MINUTES ((DWORD)0x00000002) #define PLA_TT_UTYPE_HOURS ((DWORD)0x00000003) #define PLA_TT_UTYPE_DAYS ((DWORD)0x00000004) #define PLA_TT_UTYPE_DAYSOFWEEK ((DWORD)0x00000005) #pragma warning ( disable : 4201 ) typedef struct _PLA_TIME_INFO { WORD wDataType; WORD wTimeType; DWORD dwAutoMode; union { LONGLONG llDateTime; // filetime stored as a LONGLONG struct { DWORD dwValue; DWORD dwUnitType; }; }; } PLA_TIME_INFO, *PPLA_TIME_INFO; typedef struct _PDH_PLA_ITEM_W { DWORD dwType; union { LPWSTR strCounters; struct { LPWSTR strProviders; LPWSTR strFlags; LPWSTR strLevels; }; }; } PDH_PLA_ITEM_W, *PPDH_PLA_ITEM_W; typedef struct _PDH_PLA_ITEM_A { DWORD dwType; union { LPSTR strCounters; struct { LPSTR strProviders; LPSTR strFlags; LPSTR strLevels; }; }; } PDH_PLA_ITEM_A, *PPDH_PLA_ITEM_A; #pragma warning ( default : 4201 ) // Generic Fields #define PLA_INFO_FLAG_USER 0x00000001 #define PLA_INFO_FLAG_FORMAT 0x00000002 #define PLA_INFO_FLAG_MAXLOGSIZE 0x00000004 #define PLA_INFO_FLAG_RUNCOMMAND 0x00000008 #define PLA_INFO_FLAG_FILENAME 0x00000010 #define PLA_INFO_FLAG_AUTOFORMAT 0x00000020 #define PLA_INFO_FLAG_DATASTORE 0x00000040 #define PLA_INFO_FLAG_REPEAT 0x00000080 #define PLA_INFO_FLAG_STATUS 0x00000100 #define PLA_INFO_FLAG_TYPE 0x00000200 #define PLA_INFO_FLAG_BEGIN 0x00000400 #define PLA_INFO_FLAG_END 0x00000800 #define PLA_INFO_FLAG_CRTNEWFILE 0x00001000 #define PLA_INFO_FLAG_DEFAULTDIR 0x00002000 #define PLA_INFO_FLAG_SRLNUMBER 0x00004000 #define PLA_INFO_FLAG_SQLNAME 0x00008000 #define PLA_INFO_FLAG_ALL 0xFFFFFFFF // Trace Fields #define PLA_INFO_FLAG_BUFFERSIZE 0x00010000 #define PLA_INFO_FLAG_LOGGERNAME 0x00020000 #define PLA_INFO_FLAG_MODE 0x00040000 #define PLA_INFO_FLAG_MINBUFFERS 0x00080000 #define PLA_INFO_FLAG_MAXBUFFERS 0x00100000 #define PLA_INFO_FLAG_FLUSHTIMER 0x00200000 #define PLA_INFO_FLAG_PROVIDERS 0x00400000 #define PLA_INFO_FLAG_TRACE 0x00FFFFFF // Performance Fields #define PLA_INFO_FLAG_INTERVAL 0x01000000 #define PLA_INFO_FLAG_COUNTERS 0x02000000 #define PLA_INFO_FLAG_PERF 0xFF00FFFF #define PLA_INFO_CREATE_FILENAME \ (PLA_INFO_FLAG_FORMAT| \ PLA_INFO_FLAG_FILENAME| \ PLA_INFO_FLAG_AUTOFORMAT| \ PLA_INFO_FLAG_TYPE| \ PLA_INFO_FLAG_CRTNEWFILE| \ PLA_INFO_FLAG_DEFAULTDIR| \ PLA_INFO_FLAG_SRLNUMBER| \ PLA_INFO_FLAG_SQLNAME| \ PLA_INFO_FLAG_STATUS ) \ typedef struct _PDH_PLA_INFO_W { DWORD dwMask; LPWSTR strUser; LPWSTR strPassword; DWORD dwType; DWORD dwMaxLogSize; DWORD dwFlags; DWORD dwLogQuota; LPWSTR strLogFileCaption; LPWSTR strDefaultDir; LPWSTR strBaseFileName; LPWSTR strSqlName; DWORD dwFileFormat; DWORD dwAutoNameFormat; DWORD dwLogFileSerialNumber; LPWSTR strCommandFileName; DWORD dwDatastoreAttributes; PLA_TIME_INFO ptLogBeginTime; PLA_TIME_INFO ptLogEndTime; PLA_TIME_INFO ptCreateNewFile; PLA_TIME_INFO ptRepeat; DWORD dwStatus; DWORD dwReserved1; DWORD dwReserved2; union { struct { PDH_PLA_ITEM_W piCounterList; DWORD dwAutoNameInterval; DWORD dwAutoNameUnits; PLA_TIME_INFO ptSampleInterval; } Perf; struct { PDH_PLA_ITEM_W piProviderList; LPWSTR strLoggerName; DWORD dwMode; DWORD dwNumberOfBuffers; DWORD dwMaximumBuffers; DWORD dwMinimumBuffers; DWORD dwBufferSize; DWORD dwFlushTimer; } Trace; }; } PDH_PLA_INFO_W, *PPDH_PLA_INFO_W; typedef struct _PDH_PLA_INFO_A { DWORD dwMask; // NOT YET IMPLEMENTED } PDH_PLA_INFO_A, *PPDH_PLA_INFO_A; typedef struct _PLA_VERSION_ { DWORD dwMajorVersion; DWORD dwMinorVersion; DWORD dwBuild; DWORD dwSubBuild; } PLA_VERSION, *PPLA_VERSION; HRESULT PdhiPlaFormatBlanksA( LPSTR strComputer, LPSTR strFormat ); HRESULT PdhiPlaFormatBlanksW( LPWSTR strComputer, LPWSTR strFormat ); PDH_FUNCTION PdhPlaGetScheduleA( LPSTR strName, LPSTR strComputer, LPDWORD pdwTypeStart, LPDWORD pdwTypeStop, PPDH_TIME_INFO pInfo ); PDH_FUNCTION PdhPlaGetScheduleW( LPWSTR strName, LPWSTR strComputer, LPDWORD pdwTypeStart, LPDWORD pdwTypeStop, PPDH_TIME_INFO pInfo ); PDH_FUNCTION PlaTimeInfoToMilliSeconds( PLA_TIME_INFO* pTimeInfo, LONGLONG* pllmsecs ); PDH_FUNCTION PdhPlaValidateInfoA( LPSTR strName, LPSTR strComputer, PPDH_PLA_INFO_A pInfo ); PDH_FUNCTION PdhPlaValidateInfoW( LPWSTR strName, LPWSTR strComputer, PPDH_PLA_INFO_W pInfo ); PDH_FUNCTION PdhPlaSetRunAsA( LPSTR strName, LPSTR strComputer, LPSTR strUser, LPSTR strPassword ); PDH_FUNCTION PdhPlaSetRunAsW( LPWSTR strName, LPWSTR strComputer, LPWSTR strUser, LPWSTR strPassword ); PDH_FUNCTION PdhPlaScheduleA( LPSTR strName, LPSTR strComputer, DWORD fType, PPDH_TIME_INFO pInfo ); PDH_FUNCTION PdhPlaScheduleW( LPWSTR strName, LPWSTR strComputer, DWORD fType, PPDH_TIME_INFO pInfo ); PDH_FUNCTION PdhPlaStartA( LPSTR strName, LPSTR strComputer ); PDH_FUNCTION PdhPlaStartW( LPWSTR strName, LPWSTR strComputer ); PDH_FUNCTION PdhPlaStopA( LPSTR strName, LPSTR strComputer ); PDH_FUNCTION PdhPlaStopW( LPWSTR strName, LPWSTR strComputer ); PDH_FUNCTION PdhPlaCreateA( LPSTR strName, LPSTR strComputer, PPDH_PLA_INFO_A pInfo ); PDH_FUNCTION PdhPlaCreateW( LPWSTR strName, LPWSTR strComputer, PPDH_PLA_INFO_W pInfo ); PDH_FUNCTION PdhPlaDeleteA( LPSTR strName, LPSTR strComputer ); PDH_FUNCTION PdhPlaDeleteW( LPWSTR strName, LPWSTR strComputer ); PDH_FUNCTION PdhPlaAddItemA( LPSTR strName, LPSTR strComputer, PPDH_PLA_ITEM_A pItem ); PDH_FUNCTION PdhPlaAddItemW( LPWSTR strName, LPWSTR strComputer, PPDH_PLA_ITEM_W pItem ); PDH_FUNCTION PdhPlaSetItemListA( LPSTR strName, LPSTR strComputer, PPDH_PLA_ITEM_A pItems ); PDH_FUNCTION PdhPlaSetItemListW( LPWSTR strName, LPWSTR strComputer, PPDH_PLA_ITEM_W pItems ); PDH_FUNCTION PdhPlaRemoveAllItemsA( LPSTR strName, LPSTR strComputer ); PDH_FUNCTION PdhPlaRemoveAllItemsW( LPWSTR strName, LPWSTR strComputer ); PDH_FUNCTION PdhPlaGetInfoA( LPSTR strName, LPSTR strComputer, LPDWORD pdwBufferSize, PPDH_PLA_INFO_A pInfo ); PDH_FUNCTION PdhPlaGetInfoW( LPWSTR strName, LPWSTR strComputer, LPDWORD pdwBufferSize, PPDH_PLA_INFO_W pInfo ); PDH_FUNCTION PdhPlaSetInfoA( LPSTR strName, LPSTR strComputer, PPDH_PLA_INFO_A pInfo ); PDH_FUNCTION PdhPlaSetInfoW( LPWSTR strName, LPWSTR strComputer, PPDH_PLA_INFO_W pInfo ); PDH_FUNCTION PdhPlaSetRunAsA( LPSTR strName, LPSTR strComputer, LPSTR strUser, LPSTR strPassword ); PDH_FUNCTION PdhPlaSetRunAsW( LPWSTR strName, LPWSTR strComputer, LPWSTR strUser, LPWSTR strPassword ); PDH_FUNCTION PdhiPlaSetRunAs( LPWSTR strName, LPWSTR strComputer, LPWSTR strUser, LPWSTR strPassword ); PDH_FUNCTION PdhiPlaRunAs( LPWSTR strName, LPWSTR strComputer, HANDLE* hToken ); PDH_FUNCTION PdhiPlaGetVersion( LPCWSTR strComputer, PPLA_VERSION pVersion ); PDH_FUNCTION PdhPlaEnumCollectionsA( LPSTR strComputer, LPDWORD pdwBufferSize, LPSTR mszCollections ); PDH_FUNCTION PdhPlaEnumCollectionsW( LPWSTR strComputer, LPDWORD pdwBufferSize, LPWSTR mszCollections ); PDH_FUNCTION PdhPlaGetLogFileNameA( LPWSTR strName, LPWSTR strComputer, PPDH_PLA_INFO_A pInfo, DWORD dwFlags, LPDWORD pdwBufferSize, LPWSTR strFileName ); PDH_FUNCTION PdhPlaGetLogFileNameW( LPWSTR strName, LPWSTR strComputer, PPDH_PLA_INFO_W pInfo, DWORD dwFlags, LPDWORD pdwBufferSize, LPWSTR strFileName ); PDH_FUNCTION PdhTranslate009CounterW( IN LPWSTR szLocalePath, IN LPWSTR pszFullPathName, IN LPDWORD pcchPathLength); PDH_FUNCTION PdhTranslate009CounterA( IN LPSTR szLocalePath, IN LPSTR pszFullPathName, IN LPDWORD pcchPathLength); PDH_FUNCTION PdhTranslateLocaleCounterW( IN LPWSTR sz009Path, IN LPWSTR pszFullPathName, IN LPDWORD pcchPathLength); PDH_FUNCTION PdhTranslateLocaleCounterA( IN LPSTR sz009Path, IN LPSTR pszFullPathName, IN LPDWORD pcchPathLength); PDH_FUNCTION PdhAdd009CounterW( IN HQUERY hQuery, IN LPWSTR szFullPath, IN DWORD_PTR dwUserData, OUT HCOUNTER * phCounter); PDH_FUNCTION PdhAdd009CounterA( IN HQUERY hQuery, IN LPSTR szFullPath, IN DWORD_PTR dwUserData, OUT HCOUNTER * phCounter); PDH_FUNCTION PdhGetLogFileTypeW( IN LPCWSTR LogFileName, IN LPDWORD LogFileType); PDH_FUNCTION PdhGetLogFileTypeA( IN LPCSTR LogFileName, IN LPDWORD LogFileType); PDH_FUNCTION PdhListLogFileHeaderW ( IN LPCWSTR szFileName, IN LPWSTR mszHeaderList, IN LPDWORD pcchHeaderListSize ); PDH_FUNCTION PdhListLogFileHeaderA ( IN LPCSTR szFileName, IN LPSTR mszHeaderList, IN LPDWORD pcchHeaderListSize ); #define PLA_SECONDS_IN_DAY 86400 #define PLA_SECONDS_IN_HOUR 3600 #define PLA_SECONDS_IN_MINUTE 60 #define _PLA_CONFIG_DLL_NAME_W_ L"SmLogCfg.dll" #define _PLA_SERVICE_EXE_NAME_W_ L"SmLogSvc.exe" // Communication between smlogcfg and smlogsvc #define PLA_MAX_AUTO_NAME_LEN ((DWORD)0x0000000B) #define PLA_MAX_COLLECTION_NAME ((DWORD)(_MAX_FNAME - PLA_MAX_AUTO_NAME_LEN - 1)) #define PLA_FILENAME_USE_SUBEXT 0x00000001 #define PLA_FILENAME_GET_SUBFMT 0x00000002 #define PLA_FILENAME_GET_SUBXXX 0x00000004 #define PLA_FILENAME_CREATEONLY 0x00000008 #define PLA_FILENAME_CURRENTLOG 0x00000010 #define PLA_SERVICE_CONTROL_SYNCHRONIZE 128 #define PLA_QUERY_STOPPED ((DWORD)0x00000000) #define PLA_QUERY_RUNNING ((DWORD)0x00000001) #define PLA_QUERY_START_PENDING ((DWORD)0x00000002) #define PLA_NEW_LOG ((DWORD)0xFFFFFFFF) #define PLA_FIRST_LOG_TYPE ((DWORD)0x00000000) #define PLA_COUNTER_LOG ((DWORD)0x00000000) #define PLA_TRACE_LOG ((DWORD)0x00000001) #define PLA_ALERT ((DWORD)0x00000002) #define PLA_LAST_LOG_TYPE ((DWORD)0x00000002) #define PLA_NUM_LOG_TYPES ((DWORD)0x00000003) // Sysmon log output file configuration definitions #define PLA_DATASTORE_APPEND_MASK ((DWORD)0x000000F) #define PLA_DATASTORE_OVERWRITE ((DWORD)0x0000001) #define PLA_DATASTORE_APPEND ((DWORD)0x0000002) #define PLA_DATASTORE_SIZE_MASK ((DWORD)0x00000F0) #define PLA_DATASTORE_SIZE_ONE_RECORD ((DWORD)0x0000010) #define PLA_DATASTORE_SIZE_KB ((DWORD)0x0000020) #define PLA_DATASTORE_SIZE_MB ((DWORD)0x0000040) #define PLA_FIRST_FILE_TYPE ((DWORD)0x00000000) #define PLA_CSV_FILE ((DWORD)0x00000000) #define PLA_TSV_FILE ((DWORD)0x00000001) #define PLA_BIN_FILE ((DWORD)0x00000002) #define PLA_BIN_CIRC_FILE ((DWORD)0x00000003) #define PLA_CIRC_TRACE_FILE ((DWORD)0x00000004) #define PLA_SEQ_TRACE_FILE ((DWORD)0x00000005) #define PLA_SQL_LOG ((DWORD)0x00000006) #define PLA_NUM_FILE_TYPES ((DWORD)0x00000007) #define PLA_SLF_NAME_NONE ((DWORD)0xFFFFFFFF) #define PLA_SLF_NAME_FIRST_AUTO ((DWORD)0x00000000) #define PLA_SLF_NAME_MMDDHH ((DWORD)0x00000000) #define PLA_SLF_NAME_NNNNNN ((DWORD)0x00000001) #define PLA_SLF_NAME_YYYYDDD ((DWORD)0x00000002) #define PLA_SLF_NAME_YYYYMM ((DWORD)0x00000003) #define PLA_SLF_NAME_YYYYMMDD ((DWORD)0x00000004) #define PLA_SLF_NAME_YYYYMMDDHH ((DWORD)0x00000005) #define PLA_SLF_NAME_MMDDHHMM ((DWORD)0x00000006) #define PLA_SLF_NUM_AUTO_NAME_TYPES ((DWORD)0x00000007) // Sysmon log query types and constants // Constants #define PLA_DISK_MAX_SIZE ((DWORD)-1) #define PLA_LOG_SIZE_UNIT_MB (1024*1024) #define PLA_LOG_SIZE_UNIT_KB 1024 #define PLA_TLI_ENABLE_BUFFER_FLUSH ((DWORD)0x00000001) #define PLA_TLI_ENABLE_KERNEL_TRACE ((DWORD)0x00000002) #define PLA_TLI_ENABLE_MEMMAN_TRACE ((DWORD)0x00000004) #define PLA_TLI_ENABLE_FILEIO_TRACE ((DWORD)0x00000008) #define PLA_TLI_ENABLE_PROCESS_TRACE ((DWORD)0x00000010) #define PLA_TLI_ENABLE_THREAD_TRACE ((DWORD)0x00000020) #define PLA_TLI_ENABLE_DISKIO_TRACE ((DWORD)0x00000040) #define PLA_TLI_ENABLE_NETWORK_TCPIP_TRACE ((DWORD)0x00000080) #define PLA_TLI_ENABLE_MASK ((DWORD)0x000000FF) #define PLA_TLI_ENABLE_KERNEL_MASK ((DWORD)0x000000FE) // alert action flags #define PLA_ALRT_ACTION_LOG_EVENT ((DWORD)0x00000001) #define PLA_ALRT_ACTION_SEND_MSG ((DWORD)0x00000002) #define PLA_ALRT_ACTION_EXEC_CMD ((DWORD)0x00000004) #define PLA_ALRT_ACTION_START_LOG ((DWORD)0x00000008) #define PLA_ALRT_ACTION_MASK ((DWORD)0x0000000F) #define PLA_ALRT_CMD_LINE_SINGLE ((DWORD)0x00000100) #define PLA_ALRT_CMD_LINE_A_NAME ((DWORD)0x00000200) #define PLA_ALRT_CMD_LINE_C_NAME ((DWORD)0x00000400) #define PLA_ALRT_CMD_LINE_D_TIME ((DWORD)0x00000800) #define PLA_ALRT_CMD_LINE_L_VAL ((DWORD)0x00001000) #define PLA_ALRT_CMD_LINE_M_VAL ((DWORD)0x00002000) #define PLA_ALRT_CMD_LINE_U_TEXT ((DWORD)0x00004000) #define PLA_ALRT_CMD_LINE_MASK ((DWORD)0x00007F00) #define PLA_ALRT_DEFAULT_ACTION ((DWORD)0x00000001) // log event is default #define PLA_AIBF_UNDER 0L #define PLA_AIBF_OVER ((DWORD)0x00000001) // true when "over" limit is selected #define PLA_AIBF_SEEN ((DWORD)0x00000002) // set when the user has seen this value #define PLA_AIBF_SAVED ((DWORD)0x00000004) // true when user has saved this entry in an edit box typedef struct _PLA_ALERT_INFO_BLOCK { DWORD dwSize; LPTSTR szCounterPath; DWORD dwFlags; double dLimit; } PLA_ALERT_INFO_BLOCK, *PPLA_ALERT_INFO_BLOCK; #ifdef __cplusplus } #endif #endif // __PDHP__