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
- CollectionCodeDomSerializer.cs
- Visual3DCollection.cs
- DetailsViewPagerRow.cs
- CompilationSection.cs
- OdbcCommandBuilder.cs
- PointConverter.cs
- CommandID.cs
- UiaCoreApi.cs
- DataKeyCollection.cs
- XmlSchemaAttributeGroup.cs
- MetadataUtilsSmi.cs
- ZipIOBlockManager.cs
- OpenTypeLayout.cs
- RoleBoolean.cs
- TransportConfigurationTypeElement.cs
- GridItemPatternIdentifiers.cs
- TdsParserSafeHandles.cs
- WebScriptMetadataInstanceContextProvider.cs
- InkCanvasFeedbackAdorner.cs
- SoapWriter.cs
- PerformanceCounterManager.cs
- EventItfInfo.cs
- HandlerBase.cs
- GraphicsState.cs
- WebColorConverter.cs
- XmlSerializationWriter.cs
- arclist.cs
- Int16KeyFrameCollection.cs
- ExpressionBuilderCollection.cs
- RootNamespaceAttribute.cs
- _StreamFramer.cs
- AttributeEmitter.cs
- MenuDesigner.cs
- SafeWaitHandle.cs
- ControllableStoryboardAction.cs
- GridViewRowPresenterBase.cs
- CategoryNameCollection.cs
- WebRequestModuleElement.cs
- UnsafeNativeMethods.cs
- SoapTypeAttribute.cs
- GridViewRowPresenterBase.cs
- FontUnit.cs
- TableLayoutPanelDesigner.cs
- LocatorPartList.cs
- SecondaryViewProvider.cs
- MissingManifestResourceException.cs
- ScriptReference.cs
- SafeSerializationManager.cs
- GeometryModel3D.cs
- IDictionary.cs
- TcpProcessProtocolHandler.cs
- ScrollItemPattern.cs
- Keywords.cs
- SafeFreeMibTable.cs
- ChangePassword.cs
- TreeIterator.cs
- SynchronizedDispatch.cs
- ArgumentException.cs
- HttpRawResponse.cs
- SqlMethodCallConverter.cs
- ChannelDispatcherCollection.cs
- SynchronizationValidator.cs
- SocketInformation.cs
- WeakReferenceEnumerator.cs
- MexHttpsBindingCollectionElement.cs
- SortQuery.cs
- TextPointerBase.cs
- QuadraticBezierSegment.cs
- ConfigurationCollectionAttribute.cs
- MatrixAnimationUsingPath.cs
- Resources.Designer.cs
- Parser.cs
- StateItem.cs
- Object.cs
- AndCondition.cs
- ToolStripItemEventArgs.cs
- DbModificationCommandTree.cs
- ButtonPopupAdapter.cs
- AuthenticationException.cs
- _Events.cs
- FixedSOMPageConstructor.cs
- XmlSchemaSimpleType.cs
- StateManagedCollection.cs
- ExistsInCollection.cs
- TextBlock.cs
- LassoHelper.cs
- XsltFunctions.cs
- RangeContentEnumerator.cs
- HtmlInputHidden.cs
- PanelStyle.cs
- XPathSelectionIterator.cs
- EntityDataSourceContainerNameConverter.cs
- MultiPropertyDescriptorGridEntry.cs
- FrameworkTemplate.cs
- DataTable.cs
- SQLDecimal.cs
- NameValuePermission.cs
- TextRangeEdit.cs
- AutoResizedEvent.cs
- XPathException.cs