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
- OdbcConnectionHandle.cs
- GradientBrush.cs
- SynchronizedInputAdaptor.cs
- RawStylusActions.cs
- PrimitiveXmlSerializers.cs
- DataBindingCollection.cs
- ParameterBuilder.cs
- TableRow.cs
- XPathBuilder.cs
- _HeaderInfoTable.cs
- HttpVersion.cs
- Environment.cs
- HashUtility.cs
- _LocalDataStore.cs
- ContextStack.cs
- UnicastIPAddressInformationCollection.cs
- ExceptionHandlerDesigner.cs
- IOThreadScheduler.cs
- Filter.cs
- DataGridViewEditingControlShowingEventArgs.cs
- TagPrefixAttribute.cs
- BindingObserver.cs
- WebPartConnectionsEventArgs.cs
- WebPartEditorCancelVerb.cs
- EditorAttribute.cs
- ExpressionLink.cs
- DataBindingExpressionBuilder.cs
- BamlResourceDeserializer.cs
- DbConnectionPoolCounters.cs
- CompilerCollection.cs
- ScriptModule.cs
- ReflectionTypeLoadException.cs
- TableProvider.cs
- CodeParameterDeclarationExpressionCollection.cs
- ExtensionsSection.cs
- OdbcDataAdapter.cs
- MemberPath.cs
- BlobPersonalizationState.cs
- TagMapCollection.cs
- SocketInformation.cs
- AliasedExpr.cs
- Typography.cs
- DataTablePropertyDescriptor.cs
- TextModifierScope.cs
- ListBase.cs
- DefaultValueConverter.cs
- DataRelationPropertyDescriptor.cs
- Content.cs
- BitmapSourceSafeMILHandle.cs
- DefaultProxySection.cs
- ByteStream.cs
- LinqDataSourceEditData.cs
- ManagementObjectSearcher.cs
- securitycriticaldata.cs
- cache.cs
- XsdBuildProvider.cs
- SequenceQuery.cs
- DataRowChangeEvent.cs
- PointConverter.cs
- PageThemeCodeDomTreeGenerator.cs
- Control.cs
- SynchronizingStream.cs
- SafeBitVector32.cs
- TemplateField.cs
- HttpResponse.cs
- Tracking.cs
- xmlfixedPageInfo.cs
- StringInfo.cs
- RuleAction.cs
- Timer.cs
- XmlSerializerFactory.cs
- Query.cs
- Control.cs
- XmlSerializerImportOptions.cs
- MsmqIntegrationAppDomainProtocolHandler.cs
- CacheAxisQuery.cs
- HMACSHA256.cs
- VirtualizedItemProviderWrapper.cs
- MessageSecurityOverMsmqElement.cs
- AttachedPropertyDescriptor.cs
- AttachedAnnotation.cs
- FilterableAttribute.cs
- RuleSettingsCollection.cs
- EventData.cs
- GridViewDeletedEventArgs.cs
- TagElement.cs
- ColorInterpolationModeValidation.cs
- ColumnBinding.cs
- ValueExpressions.cs
- WasNotInstalledException.cs
- AbstractExpressions.cs
- DataGridColumn.cs
- XmlSchemaRedefine.cs
- ActivityExecutorSurrogate.cs
- ResXResourceSet.cs
- FixedStringLookup.cs
- DataGridViewTopLeftHeaderCell.cs
- SQLBinary.cs
- TcpWorkerProcess.cs
- WorkflowRequestContext.cs