File: System\IO\Log\SafeMarshalContext.cs
Project: ndp\cdf\src\NetFx35\System.IO.Log\System.IO.Log.csproj (System.IO.Log)
//-----------------------------------------------------------------------------
// Copyright (c) Microsoft Corporation.  All rights reserved.
//-----------------------------------------------------------------------------
namespace System.IO.Log
{
    using System;
    using System.Runtime.InteropServices;
    using System.Runtime.ConstrainedExecution;
    using System.Runtime.Versioning;
    using System.Security;
    
    internal sealed class SafeMarshalContext : SafeHandle
    {
        public SafeMarshalContext() : base(IntPtr.Zero, true)
        {
        }
 
        public override bool IsInvalid
        {
            get
            {
                return IsClosed || this.handle == IntPtr.Zero;
            }
        }
 
        [DllImport("clfsw32.dll"),
         SuppressUnmanagedCodeSecurity,
         ReliabilityContract(Consistency.WillNotCorruptState, Cer.Success)]
        [ResourceExposure(ResourceScope.None)]
        private static extern bool DeleteLogMarshallingArea(IntPtr ptr);
        
        override protected bool ReleaseHandle()
        {
            return DeleteLogMarshallingArea(this.handle);
        }
    }
}