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
- TableSectionStyle.cs
- DataGridLengthConverter.cs
- HwndMouseInputProvider.cs
- BindingList.cs
- ColorAnimationUsingKeyFrames.cs
- ObsoleteAttribute.cs
- DataGridViewElement.cs
- CheckBoxBaseAdapter.cs
- FileLevelControlBuilderAttribute.cs
- COM2PropertyDescriptor.cs
- ConstantProjectedSlot.cs
- XmlSchemaComplexContentExtension.cs
- CodeTypeParameterCollection.cs
- WebPartRestoreVerb.cs
- AmbientLight.cs
- UInt64Converter.cs
- MasterPage.cs
- MailWriter.cs
- LocalizationComments.cs
- Attributes.cs
- ImageInfo.cs
- Rfc2898DeriveBytes.cs
- designeractionbehavior.cs
- DataReaderContainer.cs
- ButtonField.cs
- RegionData.cs
- TextBox.cs
- SmtpMail.cs
- BitmapEffectInput.cs
- HtmlInputSubmit.cs
- FileDialogCustomPlacesCollection.cs
- XXXInfos.cs
- ConfigurationSectionCollection.cs
- DaylightTime.cs
- FormViewDeleteEventArgs.cs
- Path.cs
- FloaterParagraph.cs
- ToolZone.cs
- ProfilePropertyNameValidator.cs
- WsdlImporterElement.cs
- PaintValueEventArgs.cs
- DocumentApplicationJournalEntry.cs
- ListParagraph.cs
- latinshape.cs
- InstanceContextManager.cs
- HandleTable.cs
- TrackingConditionCollection.cs
- IsolatedStorageFileStream.cs
- GraphicsContainer.cs
- NetStream.cs
- DataPagerFieldCollection.cs
- Operators.cs
- CallSiteBinder.cs
- GridViewDeleteEventArgs.cs
- NamedElement.cs
- PersianCalendar.cs
- ArrayConverter.cs
- ADMembershipUser.cs
- SafeArrayRankMismatchException.cs
- SchemaTableColumn.cs
- TripleDESCryptoServiceProvider.cs
- DesignerAutoFormatStyle.cs
- CodeNamespaceImportCollection.cs
- ColorContextHelper.cs
- EditorPart.cs
- Thread.cs
- XslNumber.cs
- XmlParserContext.cs
- Rect3DConverter.cs
- DocumentViewerBase.cs
- TcpProcessProtocolHandler.cs
- DataControlPagerLinkButton.cs
- MimeFormImporter.cs
- RectValueSerializer.cs
- CodeIdentifier.cs
- ContractComponent.cs
- SchemaElementLookUpTableEnumerator.cs
- GPStream.cs
- URLMembershipCondition.cs
- ProbeMatchesApril2005.cs
- TargetConverter.cs
- Roles.cs
- CodeValidator.cs
- Error.cs
- WebPartsPersonalization.cs
- ObjectManager.cs
- CodePropertyReferenceExpression.cs
- OdbcTransaction.cs
- EditorZone.cs
- ArithmeticException.cs
- GenericRootAutomationPeer.cs
- ToolStripSystemRenderer.cs
- Int16.cs
- DocumentSchemaValidator.cs
- Stylus.cs
- ClassHandlersStore.cs
- List.cs
- SimpleTextLine.cs
- ColorEditor.cs
- OleDbParameterCollection.cs