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
- _WinHttpWebProxyDataBuilder.cs
- ObjectKeyFrameCollection.cs
- WhitespaceSignificantCollectionAttribute.cs
- WorkflowInstanceQuery.cs
- HashSet.cs
- ChangeToolStripParentVerb.cs
- ResourceDescriptionAttribute.cs
- SoapTypeAttribute.cs
- MultiDataTrigger.cs
- DashStyles.cs
- OletxTransactionManager.cs
- SplitterCancelEvent.cs
- XmlToDatasetMap.cs
- IMembershipProvider.cs
- HttpWebRequest.cs
- MsmqTransportSecurityElement.cs
- TemplatedWizardStep.cs
- RectangleGeometry.cs
- FileUpload.cs
- DoubleAnimation.cs
- DataChangedEventManager.cs
- SqlConnectionFactory.cs
- FormattedText.cs
- SqlWebEventProvider.cs
- FileLogRecordHeader.cs
- RefreshInfo.cs
- AdjustableArrowCap.cs
- TextCompositionManager.cs
- DocumentGridPage.cs
- LogWriteRestartAreaAsyncResult.cs
- DataObjectMethodAttribute.cs
- WebDisplayNameAttribute.cs
- SettingsPropertyWrongTypeException.cs
- TargetConverter.cs
- StylusPointProperty.cs
- WorkflowIdleBehavior.cs
- TreeViewImageKeyConverter.cs
- OleDbError.cs
- COAUTHIDENTITY.cs
- ResourceProviderFactory.cs
- DbParameterHelper.cs
- DllNotFoundException.cs
- ObjectContextServiceProvider.cs
- selecteditemcollection.cs
- ColorConvertedBitmapExtension.cs
- ProcessInfo.cs
- entityreference_tresulttype.cs
- AssociationSetEnd.cs
- ArgumentsParser.cs
- METAHEADER.cs
- ContextBase.cs
- PropertyGridEditorPart.cs
- SapiRecognizer.cs
- HttpRequestCacheValidator.cs
- StringAnimationBase.cs
- loginstatus.cs
- BasicKeyConstraint.cs
- StructuredTypeEmitter.cs
- Duration.cs
- ArgumentException.cs
- ManipulationVelocities.cs
- FullTextLine.cs
- RuntimeCompatibilityAttribute.cs
- FieldNameLookup.cs
- LookupNode.cs
- Evaluator.cs
- MaxSessionCountExceededException.cs
- PrivateFontCollection.cs
- Selection.cs
- WebPartEventArgs.cs
- ExtensionFile.cs
- DNS.cs
- WsatTransactionHeader.cs
- TreeViewBindingsEditorForm.cs
- ServiceModelSecurityTokenRequirement.cs
- CompoundFileStreamReference.cs
- ApplyImportsAction.cs
- NavigationFailedEventArgs.cs
- TaskCanceledException.cs
- HostingMessageProperty.cs
- Module.cs
- ScrollEvent.cs
- TextRenderer.cs
- EditorZoneDesigner.cs
- CallbackValidator.cs
- ObjectListCommand.cs
- WebPartConnectionsConnectVerb.cs
- ProtocolElement.cs
- LocatorManager.cs
- itemelement.cs
- ControlAdapter.cs
- SerializationAttributes.cs
- ExceptionNotification.cs
- ExtractedStateEntry.cs
- ApplicationException.cs
- DbParameterCollection.cs
- BitmapEffectGeneralTransform.cs
- MenuItemAutomationPeer.cs
- _ProxyRegBlob.cs
- SqlParameterCollection.cs