SafeNativeHandle.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / infocard / Service / managed / Microsoft / InfoCards / SafeNativeHandle.cs / 1 / SafeNativeHandle.cs

                            //------------------------------------------------------------------------------ 
// Copyright (c) Microsoft Corporation.  All rights reserved.
//-----------------------------------------------------------------------------
//
// Presharp uses the c# pragma mechanism to supress its warnings. 
// These are not recognised by the base compiler so we need to explictly
// disable the following warnings. See http://winweb/cse/Tools/PREsharp/userguide/default.asp 
// for details. 
//
#pragma warning disable 1634, 1691      // unknown message, unknown pragma 



namespace Microsoft.InfoCards 
{
    using System; 
    using System.Security; 
    using System.Security.Permissions;
    using System.Runtime.InteropServices; 
    using System.Runtime.CompilerServices;
    using System.Runtime.ConstrainedExecution;
    using Microsoft.Win32.SafeHandles;
 
    //
    // Summary: 
    // This is a wrapper for Native handles that ensures that they get closed and that the handle 
    // held by this object isn't recycled.
    // 
    internal sealed class SafeNativeHandle : SafeHandleZeroOrMinusOneIsInvalid
    {

        // Called by P/Invoke marshaler 
        private SafeNativeHandle() : base(  true )
        { 
        } 

        // 
        // Summary:
        // Creates a new SafeNativeHandle.
        //
        // Parameters: 
        // existingHandle  - A pointer to an existing native handle.
        // ownsHandle      - Indicates whether this object owns the handle and should clean it up. 
        // 
        public SafeNativeHandle( IntPtr existingHandle, bool ownsHandle ) : base( ownsHandle )
        { 
           SetHandle( existingHandle );
        }

 

        override protected bool ReleaseHandle() 
        { 
            //
            // Presharp: we want to return even in the case of failure.  Useless to examine return error. 
            //
#pragma warning suppress 56523
            return NativeMethods.SafeHandleOnlyMethods.CloseHandle( handle );
        } 
    }
} 

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
                        

Link Menu

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK