Using the Trace Processing library, is it possible to use streaming as described here to parse IGenericEvents from a .etl
file?
(I am a developer at Microsoft who works on the TraceProcessor project.)
That is not possible with the current implementation. It is meant to be transparent/irrelevant to users but with non-streaming data sources in TraceProcessor, some of the data is made available by parsing the ETW events and state models directly in TraceProcessor, and the other data is made available in the form of a .NET/managed TraceProcessor projection on top of native/C++ ETW processing done by Xperf. Likewise, the current implementation of the Windows Performance Analyzer (WPA) uses TraceProcessor as the data source for some of its tables, and Xperf as the source for the others.
In order to support streaming access in the current implementation of TraceProcessor, a data source has to be written both A) entirely within TraceProcessor (i.e. not in Xperf), and B) specifically to support streaming. We have typically only added this support when adding new data that wasn't already available in Xperf, or when we had other reasons to do a major rewrite of a data source.
Generic event support in TraceProcessor is currently built on top of the Xperf support, in part because there is some complicated logic required to parse the schemas for the event fields in one pass of the trace, and then populate the IGenericEvents in the next pass.
We don't currently have plans to invest in a streaming version of generic events, but if you are particularly interested, you could create an issue in our issues repo on Github and we could keep you posted if plans change.