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.

133 lines
3.9 KiB

  1. /*++
  2. Copyright (c) 2000 Microsoft Corporation
  3. Module Name:
  4. traceump.h
  5. Abstract:
  6. Private headers for Event Tracing user mode
  7. Author:
  8. 19-Jul-2000 Melur Raghuraman
  9. Revision History:
  10. --*/
  11. #ifndef MEMPHIS
  12. #define MAXSTR 1024
  13. #define BUFFER_SIZE 64*1024
  14. #define MAX_BUFFER_SIZE 10*1024*1024
  15. #define NOTIFY_RETRY_COUNT 10
  16. #define SYSTEM_TRACE_VERSION1 1
  17. #ifdef _WIN64
  18. #define SYSTEM_TRACE_MARKER1 TRACE_HEADER_FLAG | TRACE_HEADER_EVENT_TRACE \
  19. | (TRACE_HEADER_TYPE_SYSTEM64 << 16) | SYSTEM_TRACE_VERSION1
  20. #else
  21. #define SYSTEM_TRACE_MARKER1 TRACE_HEADER_FLAG | TRACE_HEADER_EVENT_TRACE \
  22. | (TRACE_HEADER_TYPE_SYSTEM32 << 16) | SYSTEM_TRACE_VERSION1
  23. #endif
  24. #define LOGFILE_FIELD_OFFSET(field) \
  25. sizeof(WMI_BUFFER_HEADER) + \
  26. sizeof(SYSTEM_TRACE_HEADER) +\
  27. FIELD_OFFSET(TRACE_LOGFILE_HEADER, field)
  28. typedef struct _WMI_LOGGER_CONTEXT {
  29. LARGE_INTEGER StartTime;
  30. HANDLE LogFileHandle;
  31. HANDLE NewFileHandle;
  32. ULONG LoggerId;
  33. ULONG LocalSequence;
  34. HANDLE Semaphore;
  35. HANDLE LoggerThreadId;
  36. HANDLE hThread;
  37. HANDLE LoggerEvent;
  38. NTSTATUS LoggerStatus;
  39. ULONG BuffersAvailable;
  40. ULONG NumberOfProcessors;
  41. ULONG BufferPageSize; // BufferSize rounded to page
  42. LIST_ENTRY FreeList;
  43. LIST_ENTRY FlushList;
  44. PLIST_ENTRY TransitionBuffer;
  45. PWMI_BUFFER_HEADER* ProcessorBuffers; // Per Processor Buffer
  46. UNICODE_STRING LoggerName;
  47. UNICODE_STRING LogFileName;
  48. ULONG CollectionOn;
  49. ULONG NewFileFlag;
  50. ULONG EnableFlags;
  51. ULONG MaximumFileSize;
  52. ULONG LogFileMode;
  53. ULONG LastFlushedBuffer;
  54. LARGE_INTEGER FlushTimer;
  55. LARGE_INTEGER FirstBufferOffset;
  56. LARGE_INTEGER ByteOffset;
  57. LARGE_INTEGER BufferAgeLimit;
  58. ULONG TimerResolution; // Used for backtracking in Rundown code
  59. ULONG UsePerfClock; // Logger Specific PerfClock flags
  60. // the following are attributes available for query
  61. ULONG BufferSize;
  62. ULONG NumberOfBuffers;
  63. ULONG MaximumBuffers;
  64. ULONG MinimumBuffers;
  65. ULONG EventsLost;
  66. ULONG BuffersWritten;
  67. ULONG LogBuffersLost;
  68. ULONG RealTimeBuffersLost;
  69. PULONG SequencePtr;
  70. GUID InstanceGuid;
  71. // logger specific extension to context
  72. PVOID BufferSpace; // Reserved Buffer Space
  73. } WMI_LOGGER_CONTEXT, *PWMI_LOGGER_CONTEXT;
  74. //
  75. // logsup.c
  76. //
  77. PVOID
  78. EtwpGetTraceBuffer(
  79. IN PWMI_LOGGER_CONTEXT Logger,
  80. IN PSYSTEM_THREAD_INFORMATION pThread,
  81. IN ULONG GroupType,
  82. IN ULONG RequiredSize
  83. );
  84. //
  85. // tracehw.c
  86. //
  87. ULONG
  88. WmipDumpHardwareConfig(
  89. IN PWMI_LOGGER_CONTEXT LoggerContext
  90. );
  91. ULONG
  92. WmipDumpGuidMaps(
  93. IN PWMI_LOGGER_CONTEXT Logger,
  94. IN PLIST_ENTRY GuidMapListHeadPtr,
  95. IN ULONG StartFlag
  96. );
  97. ULONG
  98. WmipAddGuidHandleToGuidMapList(
  99. IN PLIST_ENTRY GuidMapListHeadPtr,
  100. IN ULONGLONG GuidHandle,
  101. IN LPGUID Guid
  102. );
  103. #endif