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
- WebPartZoneCollection.cs
- BatchWriter.cs
- ValidatorAttribute.cs
- TemplateKeyConverter.cs
- Keyboard.cs
- UDPClient.cs
- AVElementHelper.cs
- AutoGeneratedFieldProperties.cs
- StrokeNodeOperations.cs
- RoutedUICommand.cs
- EntityWithKeyStrategy.cs
- HierarchicalDataBoundControlAdapter.cs
- sitestring.cs
- DataTrigger.cs
- StringSource.cs
- LiteralText.cs
- HttpAsyncResult.cs
- DefaultEventAttribute.cs
- Exceptions.cs
- CachedTypeface.cs
- Constraint.cs
- Hashtable.cs
- Component.cs
- CroppedBitmap.cs
- EventRoute.cs
- validation.cs
- EntityDataSourceChangedEventArgs.cs
- ToolboxSnapDragDropEventArgs.cs
- MultiAsyncResult.cs
- ProviderException.cs
- TemplateBaseAction.cs
- DataGridViewRowEventArgs.cs
- NumberFormatInfo.cs
- ChannelCredentials.cs
- SingleResultAttribute.cs
- MetadataUtilsSmi.cs
- CodeFieldReferenceExpression.cs
- figurelengthconverter.cs
- EventLogEntryCollection.cs
- ManifestResourceInfo.cs
- TextSpanModifier.cs
- DataTablePropertyDescriptor.cs
- AddInEnvironment.cs
- RequiredFieldValidator.cs
- ToolStripTemplateNode.cs
- BoundField.cs
- QueryCorrelationInitializer.cs
- Compiler.cs
- documentsequencetextcontainer.cs
- TemplateParser.cs
- ItemsChangedEventArgs.cs
- RoutedCommand.cs
- MessageDecoder.cs
- SQLBoolean.cs
- Number.cs
- NullableConverter.cs
- TokenBasedSet.cs
- AjaxFrameworkAssemblyAttribute.cs
- PolyLineSegment.cs
- XmlSchemaSimpleContentExtension.cs
- TraceListener.cs
- LicenseException.cs
- complextypematerializer.cs
- PinnedBufferMemoryStream.cs
- SqlBooleanMismatchVisitor.cs
- FloatUtil.cs
- CatchBlock.cs
- ObjectDataSourceView.cs
- TextTreeText.cs
- OleDbException.cs
- DataKey.cs
- WhiteSpaceTrimStringConverter.cs
- DataTableReaderListener.cs
- SessionSwitchEventArgs.cs
- Line.cs
- ToolStripItemImageRenderEventArgs.cs
- DataControlReference.cs
- StreamMarshaler.cs
- ValueCollectionParameterReader.cs
- ExceptQueryOperator.cs
- AvTrace.cs
- RadioButtonList.cs
- HierarchicalDataSourceControl.cs
- ImageSourceValueSerializer.cs
- ChangeProcessor.cs
- DataGridViewComboBoxColumn.cs
- DataGridViewIntLinkedList.cs
- ItemsControl.cs
- HttpCapabilitiesBase.cs
- CompareValidator.cs
- dataSvcMapFileLoader.cs
- NewExpression.cs
- StreamSecurityUpgradeAcceptor.cs
- QilGeneratorEnv.cs
- SourceFileBuildProvider.cs
- SettingsProviderCollection.cs
- TypeConverter.cs
- FrameworkReadOnlyPropertyMetadata.cs
- ItemCheckedEvent.cs
- SafeFindHandle.cs