Clean up some types and comments

This commit is contained in:
Kevin Parsons
2018-12-13 14:12:44 -08:00
parent 083046a6cd
commit bb628025f5
5 changed files with 34 additions and 11 deletions
+7
View File
@@ -1,3 +1,10 @@
// Package etw provides support for TraceLogging-based ETW (Event Tracing
// for Windows). TraceLogging is a format of ETW events that are self-describing
// (the event contains information on its own schema). This allows them to be
// decoded without needing a separate manifest with event information. The
// implementation here is based on the information found in
// TraceLoggingProvider.h in the Windows SDK, which implements TraceLogging as a
// set of C macros.
package etw
//go:generate go run $GOROOT/src/syscall/mksyscall_windows.go -output zsyscall_windows.go etw.go
+7 -5
View File
@@ -5,10 +5,10 @@ package etw
type Channel uint8
const (
// ChannelTracelogging is the default channel for tracelogging events. It is
// not required to be used for tracelogging, but will prevent decoding
// ChannelTraceLogging is the default channel for TraceLogging events. It is
// not required to be used for TraceLogging, but will prevent decoding
// issues for these events on older operating systems.
ChannelTracelogging Channel = 11
ChannelTraceLogging Channel = 11
)
// Level represents the ETW logging level. There are several predefined levels
@@ -56,12 +56,14 @@ type EventDescriptor struct {
}
// NewEventDescriptor returns an EventDescriptor initialized for use with
// tracelogging.
// TraceLogging.
func NewEventDescriptor() *EventDescriptor {
// Standard TraceLogging events default to the TraceLogging channel, and
// verbose level.
return &EventDescriptor{
id: 0,
version: 0,
Channel: ChannelTracelogging,
Channel: ChannelTraceLogging,
Level: LevelVerbose,
Opcode: 0,
Task: 0,
+1 -1
View File
@@ -8,7 +8,7 @@ import (
// InType indicates the type of data contained in the ETW event.
type InType byte
// Various InType definitions for tracelogging.
// Various InType definitions for TraceLogging.
const (
InTypeNull InType = iota
InTypeUnicodeString
+17 -3
View File
@@ -26,9 +26,23 @@ type Provider struct {
type providerHandle windows.Handle
// ProviderState informs the provider EnableCallback what action is being
// performed.
type ProviderState uint32
const (
// ProviderStateDisable indicates the provider is being disabled.
ProviderStateDisable ProviderState = iota
// ProviderStateEnable indicates the provider is being enabled.
ProviderStateEnable
// ProviderStateCaptureState indicates the provider is having its current
// state snap-shotted.
ProviderStateCaptureState
)
// EnableCallback is the form of the callback function that receives provider
// enable/disable notifications from ETW.
type EnableCallback func(*windows.GUID, uint32, byte, uint64, uint64, uintptr)
type EnableCallback func(*windows.GUID, ProviderState, Level, uint64, uint64, uintptr)
type eventDataDescriptor struct {
ptr uint64
@@ -49,9 +63,9 @@ func (descriptor *eventDataDescriptor) set(dataType eventDataDescriptorType, buf
// NewProvider creates and registers a new provider.
func NewProvider(name string, id *windows.GUID, callback EnableCallback) (*Provider, error) {
innerCallback := func(sourceID *windows.GUID, isEnabled uint32, level byte, matchAnyKeyword uint64, matchAllKeyword uint64, filterData uintptr, _ uintptr) uintptr {
innerCallback := func(sourceID *windows.GUID, state ProviderState, level Level, matchAnyKeyword uint64, matchAllKeyword uint64, filterData uintptr, _ uintptr) uintptr {
if callback != nil {
callback(sourceID, isEnabled, level, matchAnyKeyword, matchAllKeyword, filterData)
callback(sourceID, state, level, matchAnyKeyword, matchAllKeyword, filterData)
}
return 0
}
+2 -2
View File
@@ -12,8 +12,8 @@ import (
"golang.org/x/sys/windows"
)
func callback(sourceID *windows.GUID, isEnabled uint32, level byte, matchAnyKeyword uint64, matchAllKeyword uint64, filterData uintptr) {
fmt.Printf("Callback: isEnabled=%d, level=%d, matchAnyKeyword=%d\n", isEnabled, level, matchAnyKeyword)
func callback(sourceID *windows.GUID, state etw.ProviderState, level etw.Level, matchAnyKeyword uint64, matchAllKeyword uint64, filterData uintptr) {
fmt.Printf("Callback: isEnabled=%d, level=%d, matchAnyKeyword=%d\n", state, level, matchAnyKeyword)
}
func main() {