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
- SymbolTable.cs
- ScriptResourceDefinition.cs
- AttributeProviderAttribute.cs
- ParenthesizePropertyNameAttribute.cs
- HeaderedContentControl.cs
- ThreadPool.cs
- ZipIORawDataFileBlock.cs
- SqlClientWrapperSmiStream.cs
- Renderer.cs
- TextAction.cs
- EncoderParameters.cs
- SafeRegistryKey.cs
- ListBindingConverter.cs
- RuleEngine.cs
- OdbcCommandBuilder.cs
- HtmlTableCell.cs
- TaskCanceledException.cs
- ReachPrintTicketSerializerAsync.cs
- MenuRendererStandards.cs
- FormsAuthenticationUser.cs
- Visual3D.cs
- Deserializer.cs
- KeyManager.cs
- ImageFormat.cs
- SevenBitStream.cs
- XPathDescendantIterator.cs
- SortedSetDebugView.cs
- MappingException.cs
- RootBrowserWindow.cs
- GrammarBuilderWildcard.cs
- FormViewDeleteEventArgs.cs
- SqlDependency.cs
- StyleCollection.cs
- HtmlButton.cs
- EntityDesignerDataSourceView.cs
- DataServiceStreamProviderWrapper.cs
- ContentDisposition.cs
- GenericsInstances.cs
- MultilineStringConverter.cs
- ContextProperty.cs
- XpsS0ValidatingLoader.cs
- RelationshipType.cs
- CreateRefExpr.cs
- SelectorAutomationPeer.cs
- SctClaimDictionary.cs
- dbdatarecord.cs
- OdbcParameterCollection.cs
- ButtonBaseAutomationPeer.cs
- MergablePropertyAttribute.cs
- CommunicationException.cs
- ObjectNavigationPropertyMapping.cs
- InvalidDocumentContentsException.cs
- PropertyNames.cs
- WebPartConnectionsConnectVerb.cs
- XmlChildNodes.cs
- VerticalAlignConverter.cs
- HtmlInputControl.cs
- FunctionImportElement.cs
- SettingsSection.cs
- ACE.cs
- CompositeControl.cs
- CursorConverter.cs
- SafeCloseHandleCritical.cs
- TextRunProperties.cs
- DbParameterCollection.cs
- ManualWorkflowSchedulerService.cs
- FeatureManager.cs
- BindingGraph.cs
- InputLanguageCollection.cs
- CustomPopupPlacement.cs
- ValidatingReaderNodeData.cs
- TypeDescriptorContext.cs
- RegexParser.cs
- EdmSchemaAttribute.cs
- RetrieveVirtualItemEventArgs.cs
- ResourcePart.cs
- BooleanToVisibilityConverter.cs
- Focus.cs
- FrameworkElementAutomationPeer.cs
- ViewGenResults.cs
- ContourSegment.cs
- PaperSource.cs
- ProcessHostConfigUtils.cs
- TaskHelper.cs
- Hex.cs
- WorkflowDesigner.cs
- WebUtility.cs
- ParameterCollection.cs
- FormattedText.cs
- CompositeActivityTypeDescriptorProvider.cs
- ExtendedPropertyCollection.cs
- SslStream.cs
- Keyboard.cs
- ApplicationDirectory.cs
- IpcPort.cs
- BufferedWebEventProvider.cs
- CreateUserErrorEventArgs.cs
- Model3D.cs
- XmlCustomFormatter.cs
- _StreamFramer.cs