Leaked source code of windows server 2003
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.

146 lines
4.7 KiB

  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. #include <windows.h>
  4. #include <wbemidl.h>
  5. #include <shellapi.h>
  6. #include <tchar.h>
  7. #include <wmistr.h>
  8. #include <objbase.h>
  9. #include <initguid.h>
  10. #include <evntrace.h>
  11. #include <objidl.h>
  12. #define MAXLOGFILES 16
  13. #define MAXSTR 1024
  14. #define MOFWSTR 1024
  15. #define MOFSTR 2048
  16. #define MAXTYPE 256
  17. #define UC(x) ( (UINT)((x) & 0xFF) )
  18. #define NTOHS(x) ( (UC(x) * 256) + UC((x) >> 8) )
  19. // Maximum number of properties per WBEM class object: may need to be changed
  20. #define MAXPROPS 256
  21. #define DUMP_FILE_NAME _T("DumpFile.csv")
  22. #define SUMMARY_FILE_NAME _T("Summary.txt")
  23. #define DEFAULT_NAMESPACE _T("root\\wmi")
  24. #define IsEqualGUID(rguid1, rguid2) (!memcmp(rguid1, rguid2, sizeof(GUID)))
  25. // List mamangement macros
  26. #define InitializeListHead(ListHead) (\
  27. (ListHead)->Flink = (ListHead)->Blink = (ListHead))
  28. #define InsertTailList(ListHead,Entry) {\
  29. PLIST_ENTRY _EX_Blink;\
  30. PLIST_ENTRY _EX_ListHead;\
  31. _EX_ListHead = (ListHead);\
  32. _EX_Blink = _EX_ListHead->Blink;\
  33. (Entry)->Flink = _EX_ListHead;\
  34. (Entry)->Blink = _EX_Blink;\
  35. _EX_Blink->Flink = (Entry);\
  36. _EX_ListHead->Blink = (Entry);\
  37. }
  38. #define RemoveEntryList(Entry) {\
  39. PLIST_ENTRY _EX_Blink;\
  40. PLIST_ENTRY _EX_Flink;\
  41. _EX_Flink = (Entry)->Flink;\
  42. _EX_Blink = (Entry)->Blink;\
  43. _EX_Blink->Flink = _EX_Flink;\
  44. _EX_Flink->Blink = _EX_Blink;\
  45. }
  46. // Default strings and values.
  47. #define GUID_TYPE_EVENTTRACE _T("EventTrace")
  48. #define GUID_TYPE_HEADER _T("Header")
  49. #define GUID_TYPE_UNKNOWN _T("Unknown")
  50. #define GUID_TYPE_DEFAULT _T("Default")
  51. #define EVENT_TYPE_DEFAULT (-1)
  52. #define EVENT_LEVEL_DEFAULT (-1)
  53. #define EVENT_VERSION_DEFAULT (-1)
  54. // Strings and enumeration for Data item types that we want to decode.
  55. // Refer to DumpEvent() for more detail on each item.
  56. #define STR_ItemChar _T("ItemChar")
  57. #define STR_ItemWChar _T("ItemWChar")
  58. #define STR_ItemUChar _T("ItemUChar")
  59. #define STR_ItemCharShort _T("ItemCharShort")
  60. #define STR_ItemShort _T("ItemShort")
  61. #define STR_ItemUShort _T("ItemUShort")
  62. #define STR_ItemLong _T("ItemLong")
  63. #define STR_ItemULong _T("ItemULong")
  64. #define STR_ItemULongX _T("ItemULongX")
  65. #define STR_ItemLongLong _T("ItemLongLong")
  66. #define STR_ItemULongLong _T("ItemULongLong")
  67. #define STR_ItemFloat _T("ItemFloat");
  68. #define STR_ItemDouble _T("ItemDouble");
  69. #define STR_ItemString _T("ItemString")
  70. #define STR_ItemWString _T("ItemWString")
  71. #define STR_ItemPString _T("ItemPString")
  72. #define STR_ItemPWString _T("ItemPWString")
  73. #define STR_ItemDSString _T("ItemDSString")
  74. #define STR_ItemDSWString _T("ItemDSWString")
  75. #define STR_ItemMLString _T("ItemMLString")
  76. #define STR_ItemSid _T("ItemSid")
  77. #define STR_ItemIPAddr _T("ItemIPAddr")
  78. #define STR_ItemPort _T("ItemPort")
  79. #define STR_ItemNWString _T("ItemNWString")
  80. #define STR_ItemPtr _T("ItemPtr")
  81. #define STR_ItemGuid _T("ItemGuid")
  82. #define STR_ItemBool _T("ItemBool")
  83. typedef enum _ITEM_TYPE {
  84. ItemChar,
  85. ItemWChar,
  86. ItemUChar,
  87. ItemCharShort,
  88. ItemShort,
  89. ItemUShort,
  90. ItemLong,
  91. ItemULong,
  92. ItemULongX,
  93. ItemLongLong,
  94. ItemULongLong,
  95. ItemFloat,
  96. ItemDouble,
  97. ItemString,
  98. ItemWString,
  99. ItemPString,
  100. ItemPWString,
  101. ItemDSString,
  102. ItemDSWString,
  103. ItemSid,
  104. ItemIPAddr,
  105. ItemPort,
  106. ItemMLString,
  107. ItemNWString,
  108. ItemPtr,
  109. ItemGuid,
  110. ItemBool,
  111. ItemUnknown
  112. } ITEM_TYPE;
  113. // Construct that represents an event layout.
  114. typedef struct _MOF_INFO {
  115. LIST_ENTRY Entry;
  116. LPTSTR strDescription; // Class Name
  117. ULONG EventCount;
  118. GUID Guid;
  119. PLIST_ENTRY ItemHeader;
  120. LPTSTR strType; // Type Name
  121. SHORT TypeIndex;
  122. SHORT Version;
  123. CHAR Level;
  124. } MOF_INFO, *PMOF_INFO;
  125. // Construct that represents one data item.
  126. typedef struct _ITEM_DESC {
  127. LIST_ENTRY Entry;
  128. LPTSTR strDescription;
  129. ULONG DataSize;
  130. ITEM_TYPE ItemType;
  131. UINT ArraySize;
  132. } ITEM_DESC, *PITEM_DESC;