//*************************************************************************** // // GLOBAL.H // // Module: HEALTHMON SERVER AGENT // // Purpose: Global helper functions, defines, macros... // // Copyright (c)1999 Microsoft Corporation, All Rights Reserved // //*************************************************************************** #if !defined( __GLOBAL_H ) #define __GLOBAL_H #include #include #include #include #include "wmihelper.h" extern IWbemServices* g_pIWbemServices; extern IWbemServices* g_pIWbemServicesCIMV2; extern IWbemObjectSink* g_pSystemEventSink; extern IWbemObjectSink* g_pDataGroupEventSink; extern IWbemObjectSink* g_pDataCollectorEventSink; extern IWbemObjectSink* g_pDataCollectorPerInstanceEventSink; extern IWbemObjectSink* g_pDataCollectorStatisticsEventSink; extern IWbemObjectSink* g_pThresholdEventSink; //extern IWbemObjectSink* g_pThresholdInstanceEventSink; extern IWbemObjectSink* g_pActionEventSink; extern IWbemObjectSink* g_pActionTriggerEventSink; extern HINSTANCE g_hResLib; //#define MAX_INT 0x7fff //#define MAX_UINT 0xffff #define MAX_LONG 0x7fffffffL #define MAX_ULONG 0xffffffffL #define MAX_I64 0x7fffffffffffffffL #define MAX_UI64 0xffffffffffffffffL #define MAX_FLOAT 3.402823E+38F #define MAX_DOUBLE 1.797693E+308 #define MIN_DOUBLE -1.7E+307 //#define MY_OUTPUT_TO_FILE 1 #ifdef _DEBUG #ifdef MY_OUTPUT_TO_FILE extern FILE* debug_f; #define MY_OUTPUT(msg, iLevel)\ {\ TCHAR l_buf[1024];\ SYSTEMTIME l_st;\ if (iLevel >= 4) {\ GetLocalTime(&l_st);\ wsprintf(l_buf, L"%02d:%02d:%02d %08x %d, %S, %s\n",\ l_st.wHour, l_st.wMinute, l_st.wSecond,\ GetCurrentThreadId(), (int)__LINE__, __FILE__, (msg));\ OutputDebugString(l_buf);\ _ftprintf(debug_f, l_buf);\ fflush(debug_f);\ }\ } #else #define MY_OUTPUT(msg, iLevel)\ {\ TCHAR l_buf[1024];\ SYSTEMTIME l_st;\ if (iLevel >= 4) {\ GetLocalTime(&l_st);\ wsprintf(l_buf, L"%02d:%02d:%02d %08x %d, %S, %s\n",\ l_st.wHour, l_st.wMinute, l_st.wSecond,\ GetCurrentThreadId(), (int)__LINE__, __FILE__, msg);\ OutputDebugString(l_buf);\ }\ } #endif #else #ifdef MY_OUTPUT_TO_FILE extern FILE* debug_f; #define MY_OUTPUT(msg, iLevel)\ {\ TCHAR l_buf[1024];\ SYSTEMTIME l_st;\ if (iLevel >= 4) {\ GetLocalTime(&l_st);\ wsprintf(l_buf, L"%02d:%02d:%02d %08x %d, %S, %s\n",\ l_st.wHour, l_st.wMinute, l_st.wSecond,\ GetCurrentThreadId(), (int)__LINE__, __FILE__, (msg));\ _ftprintf(debug_f, l_buf);\ fflush(debug_f);\ }\ } #else #define MY_OUTPUT(msg, iLevel) ; #endif #endif #ifdef _DEBUG #ifdef MY_OUTPUT_TO_FILE extern FILE* debug_f; #define MY_OUTPUT2(msg, arg1, iLevel)\ {\ TCHAR l_msg[1024];\ TCHAR l_buf[1024];\ SYSTEMTIME l_st;\ if (iLevel >= 4) {\ GetLocalTime(&l_st);\ wsprintf(l_msg, (msg), (arg1));\ wsprintf(l_buf, L"%02d:%02d:%02d %08x %d, %S, %s\n",\ l_st.wHour, l_st.wMinute, l_st.wSecond,\ GetCurrentThreadId(), (int)__LINE__, __FILE__, l_msg);\ OutputDebugString(l_buf);\ _ftprintf(debug_f, l_buf);\ fflush(debug_f);\ }\ } #else #define MY_OUTPUT2(msg, arg1, iLevel)\ {\ TCHAR l_msg[1024];\ TCHAR l_buf[1024];\ SYSTEMTIME l_st;\ if (iLevel >= 4) {\ GetLocalTime(&l_st);\ wsprintf(l_msg, (msg), (arg1));\ wsprintf(l_buf, L"%02d:%02d:%02d %08x %d, %S, %s\n",\ l_st.wHour, l_st.wMinute, l_st.wSecond,\ GetCurrentThreadId(), (int)__LINE__, __FILE__, l_msg);\ OutputDebugString(l_buf);\ }\ } #endif #else #ifdef MY_OUTPUT_TO_FILE extern FILE* debug_f; #define MY_OUTPUT2(msg, arg1, iLevel)\ {\ TCHAR l_msg[1024];\ TCHAR l_buf[1024];\ SYSTEMTIME l_st;\ if (iLevel >= 4) {\ GetLocalTime(&l_st);\ wsprintf(l_msg, (msg), (arg1));\ wsprintf(l_buf, L"%02d:%02d:%02d %08x %d, %S, %s\n",\ l_st.wHour, l_st.wMinute, l_st.wSecond,\ GetCurrentThreadId(), (int)__LINE__, __FILE__, l_msg);\ _ftprintf(debug_f, l_buf);\ fflush(debug_f);\ }\ } #else #define MY_OUTPUT2(msg, arg1, iLevel) ; #endif #endif // _ASSERT(condition); #ifdef _DEBUG extern FILE* debug_f; #define MY_ASSERT(condition)\ {\ if (!(condition)) {\ TCHAR l_buf[1024];\ SYSTEMTIME l_st;\ GetLocalTime(&l_st);\ wsprintf(l_buf, L"%02d:%02d:%02d %08x %d, %S\n",\ l_st.wHour, l_st.wMinute, l_st.wSecond,\ GetCurrentThreadId(), (int)__LINE__, __FILE__);\ _ftprintf(debug_f, l_buf);\ fflush(debug_f);\ DebugBreak();\ }\ } #else extern FILE* debug_f; #define MY_ASSERT(condition)\ {\ if (!(condition)) {\ TCHAR l_buf[1024];\ SYSTEMTIME l_st;\ GetLocalTime(&l_st);\ wsprintf(l_buf, L"%02d:%02d:%02d %08x %d, %S\n",\ l_st.wHour, l_st.wMinute, l_st.wSecond,\ GetCurrentThreadId(), (int)__LINE__, __FILE__);\ _ftprintf(debug_f, l_buf);\ fflush(debug_f);\ }\ } #endif // _ASSERT((hres_condition)==S_OK); #ifdef _DEBUG extern FILE* debug_f; #define MY_HRESASSERT(hres_condition)\ {\ if ((hres_condition)!=S_OK) {\ TCHAR l_buf[1024];\ SYSTEMTIME l_st;\ GetLocalTime(&l_st);\ wsprintf(l_buf, L"%02d:%02d:%02d %08x %d, %S 0x%08x\n",\ l_st.wHour, l_st.wMinute, l_st.wSecond,\ GetCurrentThreadId(), (int)__LINE__, __FILE__, (hres_condition));\ _ftprintf(debug_f, l_buf);\ fflush(debug_f);\ DebugBreak();\ }\ } #else extern FILE* debug_f; #define MY_HRESASSERT(hres_condition)\ {\ if ((hres_condition)!=S_OK) {\ TCHAR l_buf[1024];\ SYSTEMTIME l_st;\ GetLocalTime(&l_st);\ wsprintf(l_buf, L"%02d:%02d:%02d %08x %d, %S 0x%08x\n",\ l_st.wHour, l_st.wMinute, l_st.wSecond,\ GetCurrentThreadId(), (int)__LINE__, __FILE__, (hres_condition));\ _ftprintf(debug_f, l_buf);\ fflush(debug_f);\ }\ } #endif //#define HM_POLLING_INTERVAL 10 #define HM_POLLING_INTERVAL 1 // HM_RESET is a special state that is temporary to the object until it is done reseting // It is not known of outside of the agent. enum HM_STATE {HM_GOOD, HM_COLLECTING, HM_RESET, HM_INFO, HM_DISABLED, HM_SCHEDULEDOUT, HM_RESERVED1, HM_RESERVED2, HM_WARNING, HM_CRITICAL}; enum HM_CONDITION {HM_LT, HM_GT, HM_EQ, HM_NE, HM_GE, HM_LE, HM_CONTAINS, HM_NOTCONTAINS, HM_ALWAYS}; enum HM_DE_TYPE {HM_PGDE, HM_PMDE, HM_PQDE, HM_EQDE}; //enum HM_UNKNOWN_REASON {HM_UNKNOWN_NONE, HM_UNKNOWN_BADWMI, HM_UNKNOWN_OBJECTNOTFOUND, HM_UNKNOWN_NOINST, HM_UNKNOWN_ENUMFAIL, HM_UNKNOWN_TIMEOUT, HM_UNKNOWN_NULL, HM_UNKNOWN_TOOMANYINSTS, HM_UNKNOWN_BADTHRESHPROP}; #define HMRES_BADWMI 4 #define HMRES_OBJECTNOTFOUND 5 #define HMRES_NOINST 6 #define HMRES_ENUMFAIL 7 #define HMRES_TIMEOUT 8 #define HMRES_OUTAGE 9 #define HMRES_DISABLE 10 #define HMRES_NULLVALUE 11 #define HMRES_DCUNKNOWN 12 #define HMRES_TOOMANYINSTS 13 #define HMRES_BADTHRESHPROP 14 #define HMRES_MISSINGDESC 15 #define HMRES_DESC 16 #define HMRES_BADERROR 17 #define HMRES_OK 18 #define HMRES_COLLECTING 19 #define HMRES_RESET 20 #define HMRES_INFO 21 #define HMRES_DISABLED 22 #define HMRES_SCHEDULEDOUT 23 #define HMRES_RESERVED1 24 #define HMRES_RESERVED2 25 #define HMRES_WARNING 26 #define HMRES_CRITICAL 27 #define HMRES_LT 28 #define HMRES_GT 29 #define HMRES_EQ 30 #define HMRES_NE 31 #define HMRES_GTEQ 32 #define HMRES_LTEQ 33 #define HMRES_CONTAINS 34 #define HMRES_NOTCONTAINS 35 #define HMRES_ALWAYS 36 #define HMRES_ACTION_OUTAGE 37 #define HMRES_ACTION_DISABLE 38 #define HMRES_ACTION_FIRED 39 #define HMRES_ACTION_FAILED 40 #define HMRES_ACTION_ENABLE 41 #define HMRES_ACTION_LOADFAIL 42 #define HMRES_NOMEMORY 43 #define HMRES_SYSTEM_LOADFAIL 44 #define HMRES_DG_LOADFAIL 45 #define HMRES_DC_LOADFAIL 46 #define HMRES_THRESHOLD_LOADFAIL 47 #define HMRES_BADDCPROP 48 typedef struct _tag_TOKENStruct { LPTSTR szOrigToken; LPTSTR szToken; LPTSTR szReplacementText; } TOKENSTRUCT; typedef std::vector > TOKENLIST; typedef struct _tag_REPStruct { LPTSTR pStartStr; int len; LPTSTR pszReplacementText; } REPSTRUCT; typedef std::vector > REPLIST; BOOL ReadUI64(LPCWSTR wsz, UNALIGNED unsigned __int64& rui64); HRESULT ReplaceStr(LPTSTR *pszString, LPTSTR pszOld, LPTSTR pszNew); #ifdef _DEBUG #define TRACE_MUTEX(msg)\ {\ TCHAR l_buf[1024];\ SYSTEMTIME l_st;\ GetLocalTime(&l_st);\ wsprintf(l_buf, L"%s %02d:%02d:%02d %08x %d, %S\n",\ (msg), l_st.wHour, l_st.wMinute, l_st.wSecond,\ GetCurrentThreadId(), (int)__LINE__, __FILE__);\ _ftprintf(debug_f, l_buf);\ fflush(debug_f);\ } #else #define TRACE_MUTEX(msg) ; #endif #endif // __GLOBAL_H