Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Configuration / Microsoft / Win32 / SafeNativeMemoryHandle.cs / 1305376 / SafeNativeMemoryHandle.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
namespace Microsoft.Win32 {
using System.Runtime.InteropServices;
using System;
using System.Security.Permissions;
using Microsoft.Win32.SafeHandles;
using System.Configuration;
// Safehandle for memory handles
[System.Security.SuppressUnmanagedCodeSecurityAttribute()]
internal sealed class SafeNativeMemoryHandle : SafeHandleZeroOrMinusOneIsInvalid {
private bool _useLocalFree = false;
[SecurityPermission(SecurityAction.LinkDemand, UnmanagedCode = true)]
internal SafeNativeMemoryHandle()
: this(false) {
}
internal SafeNativeMemoryHandle(bool useLocalFree)
: base(true) {
_useLocalFree = useLocalFree;
}
[SecurityPermission(SecurityAction.LinkDemand, UnmanagedCode = true)]
internal SafeNativeMemoryHandle(IntPtr handle, bool ownsHandle)
: base(ownsHandle) {
SetHandle(handle);
}
internal void SetDataHandle(IntPtr handle) {
SetHandle(handle);
}
override protected bool ReleaseHandle() {
if (handle != IntPtr.Zero) {
if (_useLocalFree == true)
UnsafeNativeMethods.LocalFree(handle);
else
Marshal.FreeHGlobal(handle);
handle = IntPtr.Zero;
return true;
}
return false;
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
namespace Microsoft.Win32 {
using System.Runtime.InteropServices;
using System;
using System.Security.Permissions;
using Microsoft.Win32.SafeHandles;
using System.Configuration;
// Safehandle for memory handles
[System.Security.SuppressUnmanagedCodeSecurityAttribute()]
internal sealed class SafeNativeMemoryHandle : SafeHandleZeroOrMinusOneIsInvalid {
private bool _useLocalFree = false;
[SecurityPermission(SecurityAction.LinkDemand, UnmanagedCode = true)]
internal SafeNativeMemoryHandle()
: this(false) {
}
internal SafeNativeMemoryHandle(bool useLocalFree)
: base(true) {
_useLocalFree = useLocalFree;
}
[SecurityPermission(SecurityAction.LinkDemand, UnmanagedCode = true)]
internal SafeNativeMemoryHandle(IntPtr handle, bool ownsHandle)
: base(ownsHandle) {
SetHandle(handle);
}
internal void SetDataHandle(IntPtr handle) {
SetHandle(handle);
}
override protected bool ReleaseHandle() {
if (handle != IntPtr.Zero) {
if (_useLocalFree == true)
UnsafeNativeMethods.LocalFree(handle);
else
Marshal.FreeHGlobal(handle);
handle = IntPtr.Zero;
return true;
}
return false;
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- DropShadowEffect.cs
- BypassElementCollection.cs
- SystemFonts.cs
- CommandBinding.cs
- namescope.cs
- ProviderConnectionPoint.cs
- Region.cs
- SystemColors.cs
- HyperlinkAutomationPeer.cs
- DeviceContexts.cs
- DataServiceHostFactory.cs
- MetadataCollection.cs
- RegisteredExpandoAttribute.cs
- QueryExtender.cs
- HideDisabledControlAdapter.cs
- MsmqHostedTransportManager.cs
- RestHandlerFactory.cs
- TreeSet.cs
- ShaderEffect.cs
- ToolStripHighContrastRenderer.cs
- ProcessRequestAsyncResult.cs
- TCPClient.cs
- ThreadPool.cs
- Int32RectValueSerializer.cs
- EncryptedXml.cs
- SmiGettersStream.cs
- WebWorkflowRole.cs
- SortQuery.cs
- EntityDataSource.cs
- PriorityRange.cs
- ModelTreeEnumerator.cs
- PointHitTestParameters.cs
- VectorAnimationUsingKeyFrames.cs
- ResourceDescriptionAttribute.cs
- ListBindingHelper.cs
- CaseDesigner.xaml.cs
- Policy.cs
- ProjectionPathBuilder.cs
- BaseValidator.cs
- HwndSource.cs
- Camera.cs
- TextTreePropertyUndoUnit.cs
- ResizingMessageFilter.cs
- GradientStopCollection.cs
- ManipulationBoundaryFeedbackEventArgs.cs
- ToolStripOverflow.cs
- GPPOINT.cs
- WebServiceHost.cs
- BaseResourcesBuildProvider.cs
- TraceHelpers.cs
- TransportSecurityProtocolFactory.cs
- MonthCalendar.cs
- SmtpNetworkElement.cs
- TextEditorMouse.cs
- PrintDialogDesigner.cs
- OdbcUtils.cs
- COM2Enum.cs
- RadioButtonPopupAdapter.cs
- ResizeGrip.cs
- TypeDependencyAttribute.cs
- DataGridBoolColumn.cs
- PropertyToken.cs
- CreateUserWizard.cs
- WorkflowServiceHostFactory.cs
- RegistryKey.cs
- FixedSOMPageConstructor.cs
- XmlTextWriter.cs
- FlowDocumentPaginator.cs
- BindingSourceDesigner.cs
- TextStore.cs
- RowToFieldTransformer.cs
- ResponseBodyWriter.cs
- XPathCompiler.cs
- UInt64Converter.cs
- ContextBase.cs
- TextLine.cs
- RenderContext.cs
- ZipIOModeEnforcingStream.cs
- PaintEvent.cs
- ExtractedStateEntry.cs
- NativeObjectSecurity.cs
- MsmqIntegrationChannelListener.cs
- CompositeFontInfo.cs
- PersonalizationState.cs
- StringFunctions.cs
- WorkflowTimerService.cs
- HtmlSelect.cs
- XhtmlBasicCalendarAdapter.cs
- ConfigXmlAttribute.cs
- AtlasWeb.Designer.cs
- DataGridItemCollection.cs
- BamlLocalizableResource.cs
- Transform3DGroup.cs
- GlyphInfoList.cs
- ParserOptions.cs
- ResXResourceReader.cs
- DiagnosticTraceSource.cs
- SendSecurityHeader.cs
- SelectedPathEditor.cs
- ElapsedEventArgs.cs