| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 // | 4 // |
| 5 // Declaration of a Windows event trace provider class, to allow using | 5 // Declaration of a Windows event trace provider class, to allow using |
| 6 // Windows Event Tracing for logging transport and control. | 6 // Windows Event Tracing for logging transport and control. |
| 7 #ifndef BASE_WIN_EVENT_TRACE_PROVIDER_H_ | 7 #ifndef BASE_WIN_EVENT_TRACE_PROVIDER_H_ |
| 8 #define BASE_WIN_EVENT_TRACE_PROVIDER_H_ | 8 #define BASE_WIN_EVENT_TRACE_PROVIDER_H_ |
| 9 | 9 |
| 10 #include <windows.h> | 10 #include <windows.h> |
| (...skipping 25 matching lines...) Expand all Loading... |
| 36 | 36 |
| 37 // Clang and the C++ standard don't allow unqualified lookup into dependent | 37 // Clang and the C++ standard don't allow unqualified lookup into dependent |
| 38 // bases, hence these using decls to explicitly pull the names out. | 38 // bases, hence these using decls to explicitly pull the names out. |
| 39 using EtwMofEventBase<N>::header; | 39 using EtwMofEventBase<N>::header; |
| 40 using EtwMofEventBase<N>::fields; | 40 using EtwMofEventBase<N>::fields; |
| 41 | 41 |
| 42 EtwMofEvent() { | 42 EtwMofEvent() { |
| 43 memset(static_cast<Super*>(this), 0, sizeof(Super)); | 43 memset(static_cast<Super*>(this), 0, sizeof(Super)); |
| 44 } | 44 } |
| 45 | 45 |
| 46 EtwMofEvent(const EtwEventClass& event_class, EtwEventLevel level) { |
| 47 memset(static_cast<Super*>(this), 0, sizeof(Super)); |
| 48 header.Size = sizeof(Super); |
| 49 header.Guid = event_class; |
| 50 header.Class.Level = level; |
| 51 header.Flags = WNODE_FLAG_TRACED_GUID | WNODE_FLAG_USE_MOF_PTR; |
| 52 } |
| 53 |
| 46 EtwMofEvent(const EtwEventClass& event_class, EtwEventType type, | 54 EtwMofEvent(const EtwEventClass& event_class, EtwEventType type, |
| 47 EtwEventLevel level) { | 55 EtwEventLevel level) { |
| 48 memset(static_cast<Super*>(this), 0, sizeof(Super)); | 56 memset(static_cast<Super*>(this), 0, sizeof(Super)); |
| 49 header.Size = sizeof(Super); | 57 header.Size = sizeof(Super); |
| 50 header.Guid = event_class; | 58 header.Guid = event_class; |
| 51 header.Class.Type = type; | 59 header.Class.Type = type; |
| 52 header.Class.Level = level; | 60 header.Class.Level = level; |
| 53 header.Flags = WNODE_FLAG_TRACED_GUID | WNODE_FLAG_USE_MOF_PTR; | 61 header.Flags = WNODE_FLAG_TRACED_GUID | WNODE_FLAG_USE_MOF_PTR; |
| 54 } | 62 } |
| 55 | 63 |
| 56 EtwMofEvent(const EtwEventClass& event_class, EtwEventType type, | 64 EtwMofEvent(const EtwEventClass& event_class, EtwEventType type, |
| 57 EtwEventVersion version, EtwEventLevel level) { | 65 EtwEventVersion version, EtwEventLevel level) { |
| 58 memset(static_cast<Super*>(this), 0, sizeof(Super)); | 66 memset(static_cast<Super*>(this), 0, sizeof(Super)); |
| 59 header.Size = sizeof(Super); | 67 header.Size = sizeof(Super); |
| 60 header.Guid = event_class; | 68 header.Guid = event_class; |
| 61 header.Class.Type = type; | 69 header.Class.Type = type; |
| 62 header.Class.Version = version; | 70 header.Class.Version = version; |
| 63 header.Class.Level = level; | 71 header.Class.Level = level; |
| 64 header.Flags = WNODE_FLAG_TRACED_GUID | WNODE_FLAG_USE_MOF_PTR; | 72 header.Flags = WNODE_FLAG_TRACED_GUID | WNODE_FLAG_USE_MOF_PTR; |
| 65 } | 73 } |
| 66 | 74 |
| 75 void SetType(EtwEventType type) { |
| 76 header.Class.Type = type; |
| 77 } |
| 78 |
| 67 void SetField(int field, size_t size, const void *data) { | 79 void SetField(int field, size_t size, const void *data) { |
| 68 // DCHECK(field < N); | 80 // DCHECK(field < N); |
| 69 if ((field < N) && (size <= kuint32max)) { | 81 if ((field < N) && (size <= kuint32max)) { |
| 70 fields[field].DataPtr = reinterpret_cast<ULONG64>(data); | 82 fields[field].DataPtr = reinterpret_cast<ULONG64>(data); |
| 71 fields[field].Length = static_cast<ULONG>(size); | 83 fields[field].Length = static_cast<ULONG>(size); |
| 72 } | 84 } |
| 73 } | 85 } |
| 74 | 86 |
| 75 EVENT_TRACE_HEADER* get() { return& header; } | 87 EVENT_TRACE_HEADER* get() { return& header; } |
| 76 | 88 |
| (...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 171 // RegisterTraceGuids. Non-const, because that's how the API needs it. | 183 // RegisterTraceGuids. Non-const, because that's how the API needs it. |
| 172 static TRACE_GUID_REGISTRATION obligatory_guid_registration_; | 184 static TRACE_GUID_REGISTRATION obligatory_guid_registration_; |
| 173 | 185 |
| 174 DISALLOW_COPY_AND_ASSIGN(EtwTraceProvider); | 186 DISALLOW_COPY_AND_ASSIGN(EtwTraceProvider); |
| 175 }; | 187 }; |
| 176 | 188 |
| 177 } // namespace win | 189 } // namespace win |
| 178 } // namespace base | 190 } // namespace base |
| 179 | 191 |
| 180 #endif // BASE_WIN_EVENT_TRACE_PROVIDER_H_ | 192 #endif // BASE_WIN_EVENT_TRACE_PROVIDER_H_ |
| OLD | NEW |