Code:
/ 4.0 / 4.0 / untmp / 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- SecurityException.cs
- BoundingRectTracker.cs
- ArraySegment.cs
- UInt64.cs
- RegexFCD.cs
- SurrogateEncoder.cs
- ProviderConnectionPointCollection.cs
- ApplicationId.cs
- Clause.cs
- Translator.cs
- DragEventArgs.cs
- QueryRewriter.cs
- LineSegment.cs
- AutomationPatternInfo.cs
- PrintDialog.cs
- Bind.cs
- DynamicQueryableWrapper.cs
- NonParentingControl.cs
- RectAnimationBase.cs
- Random.cs
- IISUnsafeMethods.cs
- XmlNode.cs
- AsyncSerializedWorker.cs
- ParameterBuilder.cs
- BrushValueSerializer.cs
- XmlObjectSerializerReadContextComplexJson.cs
- TemplateBindingExtensionConverter.cs
- PtsHost.cs
- DataColumnPropertyDescriptor.cs
- StringUtil.cs
- XmlAttributeCache.cs
- Transform3D.cs
- HttpListenerContext.cs
- BlobPersonalizationState.cs
- ContextStaticAttribute.cs
- GACMembershipCondition.cs
- CrossAppDomainChannel.cs
- ExternalException.cs
- AppearanceEditorPart.cs
- HttpInputStream.cs
- AutoCompleteStringCollection.cs
- DesignerActionGlyph.cs
- MeasurementDCInfo.cs
- TemplateXamlTreeBuilder.cs
- WebExceptionStatus.cs
- Models.cs
- NetworkCredential.cs
- MetadataFile.cs
- TrustManagerPromptUI.cs
- PointCollection.cs
- TargetInvocationException.cs
- LambdaCompiler.Expressions.cs
- SqlDataReaderSmi.cs
- ToolStripPanelRow.cs
- ToolstripProfessionalRenderer.cs
- FieldNameLookup.cs
- WindowsAuthenticationEventArgs.cs
- WsiProfilesElementCollection.cs
- IProvider.cs
- WebPartMenu.cs
- SafeFileMappingHandle.cs
- SimpleLine.cs
- OleTxTransaction.cs
- ModelProperty.cs
- _TLSstream.cs
- GridPatternIdentifiers.cs
- Zone.cs
- XPathParser.cs
- HttpPostedFile.cs
- ValueType.cs
- BamlTreeNode.cs
- SqlTriggerContext.cs
- CellConstant.cs
- Attributes.cs
- Literal.cs
- DrawingContextWalker.cs
- TextWriter.cs
- CodeExpressionStatement.cs
- SchemaTypeEmitter.cs
- NavigationProgressEventArgs.cs
- HashRepartitionStream.cs
- ImageMap.cs
- PointCollection.cs
- PathFigureCollectionConverter.cs
- Rules.cs
- DataGridViewCheckBoxColumn.cs
- ToolboxItemFilterAttribute.cs
- SocketPermission.cs
- GridViewPageEventArgs.cs
- Matrix3D.cs
- DataConnectionHelper.cs
- controlskin.cs
- DbConnectionStringBuilder.cs
- CategoryAttribute.cs
- ProgressBarHighlightConverter.cs
- PerformanceCounterManager.cs
- TextDecorationCollectionConverter.cs
- RangeBase.cs
- EntityContainerEntitySet.cs
- HttpHeaderCollection.cs