diff --git a/internal/etw/provider.go b/internal/etw/provider.go index c9d54684..4773a808 100644 --- a/internal/etw/provider.go +++ b/internal/etw/provider.go @@ -201,7 +201,15 @@ func (provider *Provider) WriteEvent(name string, eventOpts []EventOpt, fieldOpt opt(em, ed) } - return provider.WriteEventRaw(options.descriptor, nil, nil, [][]byte{em.Bytes()}, [][]byte{ed.Bytes()}) + // Don't pass a data blob if there is no event data. There will always be + // event metadata (e.g. for the name) so we don't need to do this check for + // the metadata. + dataBlobs := [][]byte{} + if len(ed.Bytes()) > 0 { + dataBlobs = [][]byte{ed.Bytes()} + } + + return provider.WriteEventRaw(options.descriptor, nil, nil, [][]byte{em.Bytes()}, dataBlobs) } // WriteEventRaw writes a single ETW event from the provider. This function is