Home
Discussion Forums
Tutorials & Source Code
Developer Blogs
Developer Events
Developer Jobs
Labs
We need you!
We're working hard on the next version of Developer Fusion -
Let us know
what you think we should be up to!
The Labs
\
Source Viewer
\
SSCLI
\
Microsoft.Win32.SafeHandles
\ SafeNativeMemoryHandle
Object Browser
Solution Explorer
SSCLI
Expand
Microsoft.Win32
Expand
Microsoft.Win32.SafeHandles
Expand
CriticalHandleMinusOneIsInvalid
Expand
CriticalHandleZeroOrMinusOneIsInvalid
Expand
SafeEventHandle
Expand
SafeFileHandle
Expand
SafeFileMappingHandle
Expand
SafeFileMappingHandle
Expand
SafeFileMapViewHandle
Expand
SafeFindHandle
Expand
SafeFusionHandle
Expand
SafeHandleMinusOneIsInvalid
Expand
SafeHandleZeroOrMinusOneIsInvalid
Expand
SafeLocalMemHandle
Expand
SafeNativeMemoryHandle
ReleaseHandle()
SafeNativeMemoryHandle()
SafeNativeMemoryHandle(IntPtr, bool)
Expand
SafePEFileHandle
Expand
SafeProcessHandle
Expand
SafeThreadHandle
Expand
SafeTimerHandle
Expand
SafeUserTokenHandle
Expand
SafeViewOfFileHandle
Expand
SafeWaitHandle
Expand
System
Expand
System.Runtime.Hosting
Expand
System.Runtime.InteropServices
Expand
System.Runtime.CompilerServices
Expand
System.Collections
Expand
System.Collections.Generic
Expand
System.Collections.ObjectModel
Expand
System.Configuration.Assemblies
Expand
System.Diagnostics
Expand
System.Diagnostics.CodeAnalysis
Expand
System.Diagnostics.SymbolStore
Expand
System.Globalization
Expand
System.IO
Expand
System.IO.IsolatedStorage
Expand
System.Reflection
Expand
System.Reflection.Cache
Expand
System.Reflection.Emit
Expand
System.Resources
Expand
System.Runtime
Expand
System.Runtime.InteropServices.Expando
Expand
System.Runtime.ConstrainedExecution
Expand
System.Runtime.Remoting.Activation
Expand
System.Runtime.Remoting.Messaging
Expand
System.Runtime.Remoting.Channels
Expand
System.Runtime.Remoting.Lifetime
Expand
System.Runtime.Remoting
Expand
System.Runtime.Remoting.Contexts
Expand
System.Runtime.Remoting.Proxies
Expand
System.Runtime.Remoting.Metadata
Expand
System.Runtime.Remoting.Metadata.W3cXsd2001
Expand
System.Runtime.Remoting.Services
Expand
System.Runtime.Serialization
Expand
System.Runtime.Serialization.Formatters
Expand
System.Runtime.Serialization.Formatters.Binary
Expand
System.Runtime.Versioning
Expand
System.Security
Expand
System.Security.Cryptography
Expand
System.Security.Cryptography.X509Certificates
Expand
System.Security.Permissions
Expand
System.Security.Policy
Expand
System.Security.Principal
Expand
System.Security.Util
Expand
System.Text
Expand
System.Threading
Expand
System.Runtime.Remoting.Channels.Http
Expand
System.Runtime.Remoting.Channels.Tcp
Expand
System.Runtime.Remoting.MetadataServices
Expand
System.Runtime.Serialization.Formatters.Soap.Xml
Expand
System.Runtime.Serialization.Formatters.Soap
Expand
Microsoft.Tools.Caspol
Expand
Microsoft.Tools.Build
Expand
Microsoft.CSharp
Expand
System.CodeDom
Expand
System.CodeDom.Compiler
Expand
System.Collections.Specialized
Expand
System.ComponentModel
Expand
System.ComponentModel.Design
Expand
System.ComponentModel.Design.Serialization
Expand
System.Configuration
Expand
System.Web
Expand
System.Configuration.Provider
Expand
System.Configuration.Internal
Expand
System.Internal
Expand
System.Windows.Forms
Expand
System.Net
Expand
System.Net.Sockets
Expand
System.Net.NetworkInformation
Expand
System.Net.ComImports
Expand
System.Net.Security
Expand
System.Net.Cache
Expand
System.Net.Configuration
Expand
System.Text.RegularExpressions
Expand
System.Tools
Expand
System.IO.Compression
Expand
System.IO.Ports
Expand
System.Security.AccessControl
Expand
System.Xml
Expand
System.Xml.XPath.DataBinding
Expand
System.Xml.Schema
Expand
System.Xml.Serialization
Expand
System.Xml.Serialization.Advanced
Expand
System.Xml.Serialization.Configuration
Expand
System.Xml.XPath
Expand
System.Xml.Xsl
Expand
System.Xml.Xsl.IlGen
Expand
System.Xml.Xsl.Qil
Expand
System.Xml.Xsl.Runtime
Expand
System.Xml.Xsl.XPath
Expand
System.Xml.Xsl.Xslt
Expand
System.Xml.Xsl.XsltOld
Expand
System.Xml.Xsl.XsltOld.Debugger
Expand
Microsoft.JScript
Expand
Microsoft.Vsa
Expand
Microsoft.JScript.Vsa
C#
VB.NET
// ==++==
//
//
// Copyright (c) 2006 Microsoft Corporation. All rights reserved.
//
// The use and distribution terms for this software are contained in the file
// named license.txt, which can be found in the root of this distribution.
// By using this software in any fashion, you are agreeing to be bound by the
// terms of this license.
//
// You must not remove this notice, or any other, from this software.
//
//
// ==--==
/*============================================================
**
** Class: SafeMemoryHandle
**
**
** This class is wrapper for native (unsafe) memory pointer
** allocated using Marshal.AllocHGlobal.
**
**
===========================================================*/
using
System
;
using
System.Security
;
using
System.Security.Permissions
;
using
System.Runtime.InteropServices
;
using
System.Runtime.CompilerServices
;
using
System.Runtime.ConstrainedExecution
;
using
Microsoft.Win32
;
using
Microsoft.Win32.SafeHandles
;
namespace
Microsoft.Win32.SafeHandles
{
[SuppressUnmanagedCodeSecurityAttribute()]
internal
sealed
class
SafeNativeMemoryHandle :
SafeHandleZeroOrMinusOneIsInvalid
{
[SecurityPermission(SecurityAction.LinkDemand, UnmanagedCode =
true
)]
internal
SafeNativeMemoryHandle() :
base
(
true
)
{
}
[SecurityPermission(SecurityAction.LinkDemand, UnmanagedCode =
true
)]
internal
SafeNativeMemoryHandle(
IntPtr
handle,
bool
ownsHandle) :
base
(ownsHandle)
{
SetHandle(handle);
}
protected
override
bool
ReleaseHandle()
{
if
(handle != IntPtr.Zero) {
Marshal.FreeHGlobal(handle);
handle = IntPtr.Zero;
return
true
;
}
return
false
;
}
}
}
Developer Fusion