Skip to content

Commit

Permalink
Fixed bug with POLICY_AUDIT_EVENTS_INFO when using 64-bit builds.
Browse files Browse the repository at this point in the history
  • Loading branch information
dahall committed Nov 26, 2019
1 parent 61fe0f3 commit 54ea0cf
Showing 1 changed file with 11 additions and 14 deletions.
25 changes: 11 additions & 14 deletions PInvoke/Security/AdvApi32/NTSecApi.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
using System;
using System.Linq;
using System.Runtime.InteropServices;
using Vanara.Extensions;
using Vanara.InteropServices;
using FILETIME = System.Runtime.InteropServices.ComTypes.FILETIME;

Expand Down Expand Up @@ -545,7 +546,6 @@ public struct POLICY_ACCOUNT_DOMAIN_INFO
// _POLICY_AUDIT_EVENTS_INFO { BOOLEAN AuditingMode; PPOLICY_AUDIT_EVENT_OPTIONS EventAuditingOptions; ULONG MaximumAuditEventCount;
// } POLICY_AUDIT_EVENTS_INFO, *PPOLICY_AUDIT_EVENTS_INFO;
[PInvokeData("ntsecapi.h", MSDNShortId = "3442e5e5-78cf-4bda-ba11-0f51ee40df16")]
[StructLayout(LayoutKind.Sequential)]
public struct POLICY_AUDIT_EVENTS_INFO : IVanaraMarshaler
{
/// <summary>
Expand All @@ -559,7 +559,7 @@ public struct POLICY_AUDIT_EVENTS_INFO : IVanaraMarshaler
/// auditing options as specified in the <c>EventAuditingOptions</c> member even when <c>AuditingMode</c> is <c>FALSE</c>.
/// </para>
/// </summary>
public BOOLEAN AuditingMode;
public bool AuditingMode;

/// <summary>
/// <para>
Expand Down Expand Up @@ -611,33 +611,30 @@ public struct POLICY_AUDIT_EVENTS_INFO : IVanaraMarshaler
/// </summary>
public int MaximumAuditEventCount => EventAuditingOptions?.Length ?? 0;

SizeT IVanaraMarshaler.GetNativeSize() => 8 + IntPtr.Size;
SizeT IVanaraMarshaler.GetNativeSize() => IntPtr.Size * 3 + 36;

SafeAllocatedMemoryHandle IVanaraMarshaler.MarshalManagedToNative(object obj)
{
var i = (POLICY_AUDIT_EVENTS_INFO)obj;
var mem = new SafeHGlobalHandle(64);
using (var ret = new NativeMemoryStream(mem))
{
ret.Write(i.AuditingMode);
ret.Position = 4;
ret.Write(i.EventAuditingOptions, true);
ret.Write(i.MaximumAuditEventCount);
}
var mem = new SafeHGlobalHandle(IntPtr.Size * 3 + 36);
mem.Write((BOOLEAN)i.AuditingMode);
mem.Write(mem.DangerousGetHandle().Offset(IntPtr.Size * 3), false, IntPtr.Size);
mem.Write(i.MaximumAuditEventCount, false, IntPtr.Size * 2);
mem.Write(i.EventAuditingOptions, false, IntPtr.Size * 3);
return mem;
}

object IVanaraMarshaler.MarshalNativeToManaged(IntPtr ptr, SizeT size)
{
using var str = new NativeMemoryStream(ptr, size);
var mode = str.Read<BOOLEAN>();
str.Position = 4 + IntPtr.Size;
str.Position = IntPtr.Size * 2;
var cnt = str.Read<int>();
str.Position = 4;
str.Position = IntPtr.Size;
return new POLICY_AUDIT_EVENTS_INFO
{
AuditingMode = mode,
EventAuditingOptions = str.ReadArray<POLICY_AUDIT_EVENT_OPTIONS>(cnt, true).ToArray()
EventAuditingOptions = str.Read<IntPtr>().ToArray<POLICY_AUDIT_EVENT_OPTIONS>(cnt).ToArray()
};
}
}
Expand Down

0 comments on commit 54ea0cf

Please sign in to comment.