using System; using System.Diagnostics.CodeAnalysis; using System.Runtime.InteropServices; using System.Security; namespace Jellyfish.Library { public static class MarshalHelpers { [SecurityCritical] public static void FillMemory(IntPtr buffer, int bufferSize, byte value) { NativeMethods.FillMemory(buffer, (IntPtr)bufferSize, value); } [SecurityCritical] public static void ZeroMemory(IntPtr buffer, int bufferSize) { NativeMethods.ZeroMemory(buffer, (IntPtr)bufferSize); } [SecurityCritical] [SuppressUnmanagedCodeSecurity] private static class NativeMethods { [SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage")] [DllImport("kernel32.dll", SetLastError = true)] public static extern void FillMemory(IntPtr destination, IntPtr length, byte fill); [SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage")] [DllImport("kernel32.dll", SetLastError = true)] public static extern void ZeroMemory(IntPtr destination, IntPtr length); } } }