Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / WCF / System.ServiceModel.Activation / System / ServiceModel / Activation / Interop / SafeHGlobalHandleCritical.cs / 1305376 / SafeHGlobalHandleCritical.cs
//------------------------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- namespace System.ServiceModel.Activation.Interop { using System; using System.Runtime; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Security; using System.Text; using Microsoft.Win32.SafeHandles; #pragma warning disable 618 // have not moved to the v4 security model yet [SecurityCritical(SecurityCriticalScope.Everything)] #pragma warning restore 618 sealed class SafeHGlobalHandleCritical : SafeHandleZeroOrMinusOneIsInvalid { SafeHGlobalHandleCritical() : base(true) { } // 0 is an Invalid Handle SafeHGlobalHandleCritical(IntPtr handle) : base(true) { Fx.Assert(handle == IntPtr.Zero, "SafeHGlobalHandleCritical constructor can only be called with IntPtr.Zero."); SetHandle(handle); } protected override bool ReleaseHandle() { Marshal.FreeHGlobal(handle); return true; } public static SafeHGlobalHandleCritical InvalidHandle { get { return new SafeHGlobalHandleCritical(IntPtr.Zero); } } public static SafeHGlobalHandleCritical AllocHGlobal(string s) { byte[] bytes = DiagnosticUtility.Utility.AllocateByteArray(checked((s.Length + 1) * 2)); Encoding.Unicode.GetBytes(s, 0, s.Length, bytes, 0); return AllocHGlobal(bytes); } public static SafeHGlobalHandleCritical AllocHGlobal(byte[] bytes) { SafeHGlobalHandleCritical result = AllocHGlobal(bytes.Length); Marshal.Copy(bytes, 0, result.DangerousGetHandle(), bytes.Length); return result; } public static SafeHGlobalHandleCritical AllocHGlobal(uint cb) { // The cast could overflow to minus. // Unfortunately, Marshal.AllocHGlobal only takes int. return AllocHGlobal((int)cb); } public static SafeHGlobalHandleCritical AllocHGlobal(int cb) { if (cb < 0) { throw FxTrace.Exception.ArgumentOutOfRange("cb", cb, SR.ValueMustBeNonNegative); } SafeHGlobalHandleCritical result = new SafeHGlobalHandleCritical(); // CER RuntimeHelpers.PrepareConstrainedRegions(); try { } finally { IntPtr ptr = Marshal.AllocHGlobal(cb); result.SetHandle(ptr); } return result; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- namespace System.ServiceModel.Activation.Interop { using System; using System.Runtime; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Security; using System.Text; using Microsoft.Win32.SafeHandles; #pragma warning disable 618 // have not moved to the v4 security model yet [SecurityCritical(SecurityCriticalScope.Everything)] #pragma warning restore 618 sealed class SafeHGlobalHandleCritical : SafeHandleZeroOrMinusOneIsInvalid { SafeHGlobalHandleCritical() : base(true) { } // 0 is an Invalid Handle SafeHGlobalHandleCritical(IntPtr handle) : base(true) { Fx.Assert(handle == IntPtr.Zero, "SafeHGlobalHandleCritical constructor can only be called with IntPtr.Zero."); SetHandle(handle); } protected override bool ReleaseHandle() { Marshal.FreeHGlobal(handle); return true; } public static SafeHGlobalHandleCritical InvalidHandle { get { return new SafeHGlobalHandleCritical(IntPtr.Zero); } } public static SafeHGlobalHandleCritical AllocHGlobal(string s) { byte[] bytes = DiagnosticUtility.Utility.AllocateByteArray(checked((s.Length + 1) * 2)); Encoding.Unicode.GetBytes(s, 0, s.Length, bytes, 0); return AllocHGlobal(bytes); } public static SafeHGlobalHandleCritical AllocHGlobal(byte[] bytes) { SafeHGlobalHandleCritical result = AllocHGlobal(bytes.Length); Marshal.Copy(bytes, 0, result.DangerousGetHandle(), bytes.Length); return result; } public static SafeHGlobalHandleCritical AllocHGlobal(uint cb) { // The cast could overflow to minus. // Unfortunately, Marshal.AllocHGlobal only takes int. return AllocHGlobal((int)cb); } public static SafeHGlobalHandleCritical AllocHGlobal(int cb) { if (cb < 0) { throw FxTrace.Exception.ArgumentOutOfRange("cb", cb, SR.ValueMustBeNonNegative); } SafeHGlobalHandleCritical result = new SafeHGlobalHandleCritical(); // CER RuntimeHelpers.PrepareConstrainedRegions(); try { } finally { IntPtr ptr = Marshal.AllocHGlobal(cb); result.SetHandle(ptr); } return result; } } } // 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
- SwitchLevelAttribute.cs
- UInt64Converter.cs
- LineSegment.cs
- CoTaskMemHandle.cs
- NCryptSafeHandles.cs
- Attributes.cs
- HtmlTableCell.cs
- ImplicitInputBrush.cs
- MDIWindowDialog.cs
- ToolStripLabel.cs
- PropertyGeneratedEventArgs.cs
- DNS.cs
- Panel.cs
- DrawTreeNodeEventArgs.cs
- EntityDataSourceMemberPath.cs
- PagerStyle.cs
- ListDataBindEventArgs.cs
- ThumbButtonInfoCollection.cs
- SelectionRangeConverter.cs
- DesignSurfaceServiceContainer.cs
- BindingValueChangedEventArgs.cs
- FontFamily.cs
- RadioButton.cs
- QueryableFilterRepeater.cs
- DataViewListener.cs
- ConnectionProviderAttribute.cs
- DecoderNLS.cs
- LZCodec.cs
- TypeUtil.cs
- ListenerConfig.cs
- TemplateBuilder.cs
- MarginCollapsingState.cs
- RectConverter.cs
- Tokenizer.cs
- PersonalizationStateInfoCollection.cs
- Int32Collection.cs
- RoutedEvent.cs
- SqlTransaction.cs
- cookie.cs
- CommunicationObject.cs
- VirtualPathUtility.cs
- HotCommands.cs
- BlurBitmapEffect.cs
- _BasicClient.cs
- PipeStream.cs
- ConfigXmlSignificantWhitespace.cs
- KoreanLunisolarCalendar.cs
- BooleanKeyFrameCollection.cs
- XPathNodeIterator.cs
- Scalars.cs
- CheckBox.cs
- documentsequencetextpointer.cs
- IntegerFacetDescriptionElement.cs
- FormViewUpdatedEventArgs.cs
- LinqDataSourceEditData.cs
- PolicyUtility.cs
- UInt32.cs
- Pens.cs
- odbcmetadatacollectionnames.cs
- AssemblyAttributesGoHere.cs
- GridViewDeleteEventArgs.cs
- Win32KeyboardDevice.cs
- SR.cs
- safex509handles.cs
- Roles.cs
- EndpointNameMessageFilter.cs
- WebServiceClientProxyGenerator.cs
- CommandTreeTypeHelper.cs
- ProfessionalColors.cs
- ParserExtension.cs
- NavigationEventArgs.cs
- ListenUriMode.cs
- RequestCacheEntry.cs
- cookiecollection.cs
- IChannel.cs
- PEFileReader.cs
- StatementContext.cs
- ReflectionHelper.cs
- NameSpaceExtractor.cs
- TextEditorCopyPaste.cs
- RelationshipFixer.cs
- TrackingMemoryStreamFactory.cs
- RequestCachePolicyConverter.cs
- DataControlCommands.cs
- Overlapped.cs
- UnsafeNativeMethods.cs
- UnsafeNetInfoNativeMethods.cs
- ReadContentAsBinaryHelper.cs
- SingleKeyFrameCollection.cs
- HtmlControlPersistable.cs
- UniqueSet.cs
- AuthenticationConfig.cs
- DocumentXPathNavigator.cs
- ContentOperations.cs
- AuthenticationModeHelper.cs
- Popup.cs
- DesignerProperties.cs
- ConnectionProviderAttribute.cs
- CodeDirectoryCompiler.cs
- ExpressionBindingCollection.cs