Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
56 changes: 37 additions & 19 deletions src/EventLogExpert.Eventing/Interop/EvtVariant.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,28 +8,46 @@ namespace EventLogExpert.Eventing.Interop;
[StructLayout(LayoutKind.Explicit)]
internal readonly record struct EvtVariant
{
[FieldOffset(0)] internal readonly uint UInteger;
[FieldOffset(0)] internal readonly int Integer;
[FieldOffset(0)] internal readonly byte UInt8;
[FieldOffset(0)] internal readonly short Short;
[FieldOffset(0)] internal readonly ushort UShort;
[FieldOffset(0)] internal readonly uint Bool;
[FieldOffset(0)] internal readonly int BooleanVal;
[FieldOffset(0)] internal readonly sbyte SByteVal;
[FieldOffset(0)] internal readonly short Int16Val;
[FieldOffset(0)] internal readonly int Int32Val;
[FieldOffset(0)] internal readonly long Int64Val;
[FieldOffset(0)] internal readonly byte ByteVal;
[FieldOffset(0)] internal readonly byte SByte;
[FieldOffset(0)] internal readonly ulong ULong;
[FieldOffset(0)] internal readonly long Long;
[FieldOffset(0)] internal readonly float Single;
[FieldOffset(0)] internal readonly double Double;
[FieldOffset(0)] internal readonly ushort UInt16Val;
[FieldOffset(0)] internal readonly uint UInt32Val;
[FieldOffset(0)] internal readonly ulong UInt64Val;
[FieldOffset(0)] internal readonly float SingleVal;
[FieldOffset(0)] internal readonly double DoubleVal;
[FieldOffset(0)] internal readonly ulong FileTimeVal;
[FieldOffset(0)] internal readonly nint SysTimeVal;
[FieldOffset(0)] internal readonly nint GuidVal;
[FieldOffset(0)] internal readonly nint StringVal;
[FieldOffset(0)] internal readonly nint AnsiString;
[FieldOffset(0)] internal readonly nint AnsiStringVal;
[FieldOffset(0)] internal readonly nint BinaryVal;
[FieldOffset(0)] internal readonly nint SidVal;
[FieldOffset(0)] internal readonly nint Binary;
[FieldOffset(0)] internal readonly nint Reference;
[FieldOffset(0)] internal readonly nint Handle;
[FieldOffset(0)] internal readonly nint GuidReference;
[FieldOffset(0)] internal readonly ulong FileTime;
[FieldOffset(0)] internal readonly nint SystemTime;
[FieldOffset(0)] internal readonly nint SizeT;
[FieldOffset(0)] internal readonly nuint SizeTVal;
[FieldOffset(0)] internal readonly nint BooleanArr;
[FieldOffset(0)] internal readonly nint SByteArr;
[FieldOffset(0)] internal readonly nint Int16Arr;
[FieldOffset(0)] internal readonly nint Int32Arr;
[FieldOffset(0)] internal readonly nint Int64Arr;
[FieldOffset(0)] internal readonly nint ByteArr;
[FieldOffset(0)] internal readonly nint UInt16Arr;
[FieldOffset(0)] internal readonly nint UInt32Arr;
[FieldOffset(0)] internal readonly nint UInt64Arr;
[FieldOffset(0)] internal readonly nint SingleArr;
[FieldOffset(0)] internal readonly nint DoubleArr;
[FieldOffset(0)] internal readonly nint FileTimeArr;
[FieldOffset(0)] internal readonly nint SysTimeArr;
[FieldOffset(0)] internal readonly nint GuidArr;
[FieldOffset(0)] internal readonly nint StringArr;
[FieldOffset(0)] internal readonly nint AnsiStringArr;
[FieldOffset(0)] internal readonly nint SidArr;
[FieldOffset(0)] internal readonly nint SizeTArr;
[FieldOffset(0)] internal readonly nint EvtHandleVal;
[FieldOffset(0)] internal readonly nint XmlVal;
[FieldOffset(0)] internal readonly nint XmlValArr;
[FieldOffset(8)] internal readonly uint Count;
[FieldOffset(12)] internal readonly uint Type;
}
280 changes: 178 additions & 102 deletions src/EventLogExpert.Eventing/Interop/NativeMethods.Evt.cs

Large diffs are not rendered by default.

3 changes: 3 additions & 0 deletions src/EventLogExpert.Eventing/Interop/NativeMethods.cs
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,9 @@ internal static partial LibraryHandle LoadLibraryExW(
[LibraryImport(Kernel32Api)]
internal static partial IntPtr LockResource(IntPtr hResData);

[LibraryImport(Kernel32Api, SetLastError = true)]
internal static partial uint SizeofResource(LibraryHandle hModule, IntPtr hResInfo);

private static string? FormatMessageFromModule(IntPtr moduleHandle, uint messageId) =>
FormatMessageWithRetry(
FORMAT_MESSAGE_FROM_HMODULE | FORMAT_MESSAGE_IGNORE_INSERTS,
Expand Down
Loading