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
- XpsSerializerWriter.cs
- ArgumentNullException.cs
- CheckPair.cs
- SplitterCancelEvent.cs
- IntegerValidatorAttribute.cs
- NonSerializedAttribute.cs
- XmlSerializerOperationFormatter.cs
- SharedPerformanceCounter.cs
- CopyCodeAction.cs
- LoginName.cs
- RowBinding.cs
- ExitEventArgs.cs
- DataControlFieldHeaderCell.cs
- SizeConverter.cs
- XComponentModel.cs
- EncodedStreamFactory.cs
- SystemInfo.cs
- XmlText.cs
- MediaSystem.cs
- SchemaNamespaceManager.cs
- ReadonlyMessageFilter.cs
- DataGridState.cs
- mediaeventshelper.cs
- HtmlPhoneCallAdapter.cs
- KoreanCalendar.cs
- HttpGetClientProtocol.cs
- HttpConfigurationContext.cs
- ListSurrogate.cs
- XPathExpr.cs
- GC.cs
- DataGridTable.cs
- RegistryKey.cs
- XsltInput.cs
- ModuleConfigurationInfo.cs
- MeasurementDCInfo.cs
- StateChangeEvent.cs
- InputDevice.cs
- SqlFlattener.cs
- EntityRecordInfo.cs
- Update.cs
- BindingSource.cs
- PackagePartCollection.cs
- FilteredDataSetHelper.cs
- SQLInt32.cs
- MembershipSection.cs
- DeploymentSection.cs
- WebPartRestoreVerb.cs
- XmlNode.cs
- SessionParameter.cs
- LassoSelectionBehavior.cs
- SystemWebExtensionsSectionGroup.cs
- ActivityTypeResolver.xaml.cs
- ProcessHost.cs
- MsmqEncryptionAlgorithm.cs
- FileSystemWatcher.cs
- CodeCastExpression.cs
- PropertyGridEditorPart.cs
- TextRangeProviderWrapper.cs
- ScaleTransform3D.cs
- assemblycache.cs
- PrintingPermission.cs
- GridErrorDlg.cs
- StructuralObject.cs
- __Error.cs
- MessageRpc.cs
- TraceSection.cs
- DesignerObject.cs
- ObjectDataProvider.cs
- Directory.cs
- SynchronizationFilter.cs
- Site.cs
- SafeBitVector32.cs
- DbFunctionCommandTree.cs
- RuleSettingsCollection.cs
- Visual3DCollection.cs
- CodeExpressionStatement.cs
- ToolStripGripRenderEventArgs.cs
- Graphics.cs
- SettingsContext.cs
- XamlReader.cs
- SID.cs
- InputProcessorProfilesLoader.cs
- DirectoryLocalQuery.cs
- DataGridViewComboBoxCell.cs
- Opcode.cs
- WhiteSpaceTrimStringConverter.cs
- PageEventArgs.cs
- UnsafeNetInfoNativeMethods.cs
- CapabilitiesState.cs
- SimpleExpression.cs
- DbParameterCollection.cs
- AsymmetricCryptoHandle.cs
- PublisherIdentityPermission.cs
- LabelAutomationPeer.cs
- EntitySqlQueryBuilder.cs
- PersonalizationDictionary.cs
- RuntimeConfigurationRecord.cs
- FlatButtonAppearance.cs
- Buffer.cs
- TreeNodeStyleCollection.cs