Microsoft.O365.Security.ETW
5.0.0
Prefix Reserved
dotnet add package Microsoft.O365.Security.ETW --version 5.0.0
NuGet\Install-Package Microsoft.O365.Security.ETW -Version 5.0.0
<PackageReference Include="Microsoft.O365.Security.ETW" Version="5.0.0" />
<PackageVersion Include="Microsoft.O365.Security.ETW" Version="5.0.0" />
<PackageReference Include="Microsoft.O365.Security.ETW" />
paket add Microsoft.O365.Security.ETW --version 5.0.0
#r "nuget: Microsoft.O365.Security.ETW, 5.0.0"
#:package Microsoft.O365.Security.ETW@5.0.0
#addin nuget:?package=Microsoft.O365.Security.ETW&version=5.0.0
#tool nuget:?package=Microsoft.O365.Security.ETW&version=5.0.0
Microsoft.O365.Security.ETW
A pure .NET library for consuming and decoding Windows Event Tracing for Windows (ETW) events. It calls ETW and TDH directly, without a C++/CLI or mixed-mode assembly dependency.
Installation
dotnet add package Microsoft.O365.Security.ETW --version 5.0.0
The package targets .NET Framework 4.6.2 and 4.8, .NET 8, and .NET 10 on Windows. It ships AnyCPU assemblies for x64 and ARM64 consumers. Live ETW sessions may require elevated permissions, depending on the session and provider.
Reading and testing events
- Use
IEventRecordfor compatibility-oriented event access. - Use the
EventRecordRefref-struct API for allocation-free payload reads and filtering. Materializing strings, arrays and other objects may allocate. - Use the synthetic record/schema builders and proxy helpers to test handlers without a live ETW session.
Event records are callback-scoped: do not retain them after the callback returns. Copy any values that need to outlive the callback.
Migrating from the C++/CLI wrapper
Version 5.0 is a separate package, not an in-place update to
Microsoft.O365.Security.Native.ETW 4.x. The namespace remains
Microsoft.O365.Security.ETW, but source compatibility is partial and there is
no binary compatibility. Rebuild all consumers and review the
breaking changes and migration examples.
Documentation and debugging
- Migration guide and examples
- Implementation parity and differences
- Proxy-based callback-processing benchmarks
- Source repository
A companion .snupkg contains portable debugging symbols. Source Link maps the
symbols to the exact GitHub source commit used to build the package.
Licensed under the MIT license.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0-windows7.0 is compatible. net9.0-windows was computed. net10.0-windows was computed. net10.0-windows7.0 is compatible. |
| .NET Framework | net462 is compatible. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 is compatible. net481 was computed. |
-
.NETFramework 4.6.2
- System.Memory (>= 4.6.0)
-
.NETFramework 4.8
- System.Memory (>= 4.6.0)
-
net10.0-windows7.0
- No dependencies.
-
net8.0-windows7.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 5.0.0 | 44 | 11/6/2026 |
Version 5.0.0:
- Replaces the C++/CLI wrapper with a pure .NET implementation. The C++/CLI package
Microsoft.O365.Security.Native.ETW remains a separate 4.x package.
- Adds an allocation-free EventRecordRef reading surface. Materializing strings,
arrays and other objects may allocate.
- No C++/CLI or mixed-mode assembly dependency; one AnyCPU assembly serves x64 and ARM64.
- Targets net462, net48, net8.0-windows and net10.0-windows.
- The namespace (Microsoft.O365.Security.ETW) is unchanged, but the public surface is
only partially source-compatible, with no binary compatibility. Rebuild all consumers
and review the breaking-change checklists:
https://github.com/microsoft/krabsetw/blob/master/managed/MIGRATION.md