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
- QueryProcessor.cs
- CodeDomConfigurationHandler.cs
- ConfigurationLoaderException.cs
- BooleanFunctions.cs
- ToolTipService.cs
- WebConfigurationFileMap.cs
- CommandEventArgs.cs
- FlatButtonAppearance.cs
- XslAstAnalyzer.cs
- ItemContainerGenerator.cs
- TextTreeNode.cs
- DataContractSet.cs
- serverconfig.cs
- LoginCancelEventArgs.cs
- XmlElement.cs
- FormsIdentity.cs
- LinkedResourceCollection.cs
- CancellationHandlerDesigner.cs
- GrammarBuilder.cs
- UriSchemeKeyedCollection.cs
- RayHitTestParameters.cs
- AuthenticatedStream.cs
- DataContractSet.cs
- FreezableOperations.cs
- DatePickerAutomationPeer.cs
- Border.cs
- MdImport.cs
- DesignerForm.cs
- Intellisense.cs
- PolicyStatement.cs
- PlaceHolder.cs
- ImageList.cs
- CodeDOMProvider.cs
- AuthorizationRuleCollection.cs
- SourceInterpreter.cs
- TreeNodeStyleCollection.cs
- ConfigurationSectionCollection.cs
- SqlReorderer.cs
- DataBinder.cs
- DataTemplate.cs
- ManagementException.cs
- GeneralTransform3DGroup.cs
- FilterQuery.cs
- SqlException.cs
- QuotedPrintableStream.cs
- DBDataPermission.cs
- TextPattern.cs
- PropertyEmitter.cs
- WebBrowserUriTypeConverter.cs
- SchemaAttDef.cs
- XPathSelectionIterator.cs
- DataContractSerializer.cs
- WSFederationHttpSecurity.cs
- LayoutExceptionEventArgs.cs
- ExpressionCopier.cs
- basevalidator.cs
- safex509handles.cs
- GeneralTransform.cs
- Image.cs
- UriTemplateHelpers.cs
- TextFindEngine.cs
- DataServiceQueryException.cs
- SpellerInterop.cs
- WebPartConnectionsConfigureVerb.cs
- SpellerError.cs
- SizeF.cs
- PropertiesTab.cs
- FileDetails.cs
- SiteMembershipCondition.cs
- Keywords.cs
- Vector3dCollection.cs
- PinProtectionHelper.cs
- ThreadAttributes.cs
- InternalConfigSettingsFactory.cs
- InstanceData.cs
- StackBuilderSink.cs
- SynchronizationContext.cs
- PerformanceCounter.cs
- DelimitedListTraceListener.cs
- PathFigureCollection.cs
- ToolStripArrowRenderEventArgs.cs
- ParameterCollection.cs
- ResXResourceSet.cs
- SafeProcessHandle.cs
- ChangesetResponse.cs
- OutputCacheSettingsSection.cs
- ReferentialConstraint.cs
- ClientRoleProvider.cs
- ConfigurationManagerInternal.cs
- AnimatedTypeHelpers.cs
- ExeContext.cs
- AxParameterData.cs
- DataPager.cs
- httpserverutility.cs
- PersonalizablePropertyEntry.cs
- ScrollBar.cs
- MimeTypeMapper.cs
- ControlCollection.cs
- DesignObjectWrapper.cs
- ColorTransform.cs