mirror of
https://github.com/rwinkhart/go-winio.git
synced 2026-09-05 16:47:31 -04:00
Clean up some types and comments
This commit is contained in:
@@ -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
|
package etw
|
||||||
|
|
||||||
//go:generate go run $GOROOT/src/syscall/mksyscall_windows.go -output zsyscall_windows.go etw.go
|
//go:generate go run $GOROOT/src/syscall/mksyscall_windows.go -output zsyscall_windows.go etw.go
|
||||||
|
|||||||
+7
-5
@@ -5,10 +5,10 @@ package etw
|
|||||||
type Channel uint8
|
type Channel uint8
|
||||||
|
|
||||||
const (
|
const (
|
||||||
// ChannelTracelogging is the default channel for tracelogging events. It is
|
// ChannelTraceLogging is the default channel for TraceLogging events. It is
|
||||||
// not required to be used for tracelogging, but will prevent decoding
|
// not required to be used for TraceLogging, but will prevent decoding
|
||||||
// issues for these events on older operating systems.
|
// 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
|
// 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
|
// NewEventDescriptor returns an EventDescriptor initialized for use with
|
||||||
// tracelogging.
|
// TraceLogging.
|
||||||
func NewEventDescriptor() *EventDescriptor {
|
func NewEventDescriptor() *EventDescriptor {
|
||||||
|
// Standard TraceLogging events default to the TraceLogging channel, and
|
||||||
|
// verbose level.
|
||||||
return &EventDescriptor{
|
return &EventDescriptor{
|
||||||
id: 0,
|
id: 0,
|
||||||
version: 0,
|
version: 0,
|
||||||
Channel: ChannelTracelogging,
|
Channel: ChannelTraceLogging,
|
||||||
Level: LevelVerbose,
|
Level: LevelVerbose,
|
||||||
Opcode: 0,
|
Opcode: 0,
|
||||||
Task: 0,
|
Task: 0,
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ import (
|
|||||||
// InType indicates the type of data contained in the ETW event.
|
// InType indicates the type of data contained in the ETW event.
|
||||||
type InType byte
|
type InType byte
|
||||||
|
|
||||||
// Various InType definitions for tracelogging.
|
// Various InType definitions for TraceLogging.
|
||||||
const (
|
const (
|
||||||
InTypeNull InType = iota
|
InTypeNull InType = iota
|
||||||
InTypeUnicodeString
|
InTypeUnicodeString
|
||||||
|
|||||||
+17
-3
@@ -26,9 +26,23 @@ type Provider struct {
|
|||||||
|
|
||||||
type providerHandle windows.Handle
|
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
|
// EnableCallback is the form of the callback function that receives provider
|
||||||
// enable/disable notifications from ETW.
|
// 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 {
|
type eventDataDescriptor struct {
|
||||||
ptr uint64
|
ptr uint64
|
||||||
@@ -49,9 +63,9 @@ func (descriptor *eventDataDescriptor) set(dataType eventDataDescriptorType, buf
|
|||||||
|
|
||||||
// NewProvider creates and registers a new provider.
|
// NewProvider creates and registers a new provider.
|
||||||
func NewProvider(name string, id *windows.GUID, callback EnableCallback) (*Provider, error) {
|
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 {
|
if callback != nil {
|
||||||
callback(sourceID, isEnabled, level, matchAnyKeyword, matchAllKeyword, filterData)
|
callback(sourceID, state, level, matchAnyKeyword, matchAllKeyword, filterData)
|
||||||
}
|
}
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,8 +12,8 @@ import (
|
|||||||
"golang.org/x/sys/windows"
|
"golang.org/x/sys/windows"
|
||||||
)
|
)
|
||||||
|
|
||||||
func callback(sourceID *windows.GUID, isEnabled uint32, level byte, matchAnyKeyword uint64, matchAllKeyword uint64, filterData uintptr) {
|
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", isEnabled, level, matchAnyKeyword)
|
fmt.Printf("Callback: isEnabled=%d, level=%d, matchAnyKeyword=%d\n", state, level, matchAnyKeyword)
|
||||||
}
|
}
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
|||||||
Reference in New Issue
Block a user