Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Services / Messaging / System / Messaging / Interop / SafeHandles.cs / 1305376 / SafeHandles.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Messaging.Interop { using System; using System.Runtime.InteropServices; using Microsoft.Win32.SafeHandles; internal class MessageQueueHandle : SafeHandleZeroOrMinusOneIsInvalid { public static readonly MessageQueueHandle InvalidHandle = new InvalidMessageQueueHandle(); MessageQueueHandle() : base(true) {} protected override bool ReleaseHandle() { SafeNativeMethods.MQCloseQueue(this.handle); return true; } public override bool IsInvalid { get { return base.IsInvalid || IsClosed; } } // A subclass needed to express InvalidHandle. The reason is that CLR notices that // ReleaseHandle requires a call to MQRT.DLL, and throws in the ctor if MQRT.DLL is not available, // even though CTOR ITSELF DOES NOT REQUIRE MQRT.DLL. // We address this by defining a NOOP ReleaseHandle sealed class InvalidMessageQueueHandle : MessageQueueHandle { protected override bool ReleaseHandle() { return true; } } } internal class CursorHandle : SafeHandleZeroOrMinusOneIsInvalid { public static readonly CursorHandle NullHandle = new InvalidCursorHandle(); protected CursorHandle() : base(true) {} protected override bool ReleaseHandle() { SafeNativeMethods.MQCloseCursor(this.handle); return true; } public override bool IsInvalid { get { return base.IsInvalid || IsClosed; } } // A subclass needed to express InvalidHandle. The reason is that CLR notices that // ReleaseHandle requires a call to MQRT.DLL, and throws in the ctor if MQRT.DLL is not available, // even though CTOR ITSELF DOES NOT REQUIRE MQRT.DLL. // We address this by defining a NOOP ReleaseHandle sealed class InvalidCursorHandle : CursorHandle { protected override bool ReleaseHandle() { return true; } } } internal class LocatorHandle : SafeHandleZeroOrMinusOneIsInvalid { public static readonly LocatorHandle InvalidHandle = new InvalidLocatorHandle(); protected LocatorHandle() : base(true) {} protected override bool ReleaseHandle() { SafeNativeMethods.MQLocateEnd(this.handle); return true; } public override bool IsInvalid { get { return base.IsInvalid || IsClosed; } } // A subclass needed to express InvalidHandle. The reason is that CLR notices that // ReleaseHandle requires a call to MQRT.DLL, and throws in the ctor if MQRT.DLL is not available, // even though CTOR ITSELF DOES NOT REQUIRE MQRT.DLL. // We address this by defining a NOOP ReleaseHandle sealed class InvalidLocatorHandle : LocatorHandle { protected override bool ReleaseHandle() { return true; } } } internal sealed class SecurityContextHandle : SafeHandleZeroOrMinusOneIsInvalid { internal SecurityContextHandle(IntPtr existingHandle) : base(true) { SetHandle(existingHandle); } protected override bool ReleaseHandle() { SafeNativeMethods.MQFreeSecurityContext(this.handle); return true; } public override bool IsInvalid { get { return base.IsInvalid || IsClosed; } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Messaging.Interop { using System; using System.Runtime.InteropServices; using Microsoft.Win32.SafeHandles; internal class MessageQueueHandle : SafeHandleZeroOrMinusOneIsInvalid { public static readonly MessageQueueHandle InvalidHandle = new InvalidMessageQueueHandle(); MessageQueueHandle() : base(true) {} protected override bool ReleaseHandle() { SafeNativeMethods.MQCloseQueue(this.handle); return true; } public override bool IsInvalid { get { return base.IsInvalid || IsClosed; } } // A subclass needed to express InvalidHandle. The reason is that CLR notices that // ReleaseHandle requires a call to MQRT.DLL, and throws in the ctor if MQRT.DLL is not available, // even though CTOR ITSELF DOES NOT REQUIRE MQRT.DLL. // We address this by defining a NOOP ReleaseHandle sealed class InvalidMessageQueueHandle : MessageQueueHandle { protected override bool ReleaseHandle() { return true; } } } internal class CursorHandle : SafeHandleZeroOrMinusOneIsInvalid { public static readonly CursorHandle NullHandle = new InvalidCursorHandle(); protected CursorHandle() : base(true) {} protected override bool ReleaseHandle() { SafeNativeMethods.MQCloseCursor(this.handle); return true; } public override bool IsInvalid { get { return base.IsInvalid || IsClosed; } } // A subclass needed to express InvalidHandle. The reason is that CLR notices that // ReleaseHandle requires a call to MQRT.DLL, and throws in the ctor if MQRT.DLL is not available, // even though CTOR ITSELF DOES NOT REQUIRE MQRT.DLL. // We address this by defining a NOOP ReleaseHandle sealed class InvalidCursorHandle : CursorHandle { protected override bool ReleaseHandle() { return true; } } } internal class LocatorHandle : SafeHandleZeroOrMinusOneIsInvalid { public static readonly LocatorHandle InvalidHandle = new InvalidLocatorHandle(); protected LocatorHandle() : base(true) {} protected override bool ReleaseHandle() { SafeNativeMethods.MQLocateEnd(this.handle); return true; } public override bool IsInvalid { get { return base.IsInvalid || IsClosed; } } // A subclass needed to express InvalidHandle. The reason is that CLR notices that // ReleaseHandle requires a call to MQRT.DLL, and throws in the ctor if MQRT.DLL is not available, // even though CTOR ITSELF DOES NOT REQUIRE MQRT.DLL. // We address this by defining a NOOP ReleaseHandle sealed class InvalidLocatorHandle : LocatorHandle { protected override bool ReleaseHandle() { return true; } } } internal sealed class SecurityContextHandle : SafeHandleZeroOrMinusOneIsInvalid { internal SecurityContextHandle(IntPtr existingHandle) : base(true) { SetHandle(existingHandle); } protected override bool ReleaseHandle() { SafeNativeMethods.MQFreeSecurityContext(this.handle); return true; } public override bool IsInvalid { get { return base.IsInvalid || IsClosed; } } } } // 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
- DocumentEventArgs.cs
- SqlGatherProducedAliases.cs
- NativeActivityAbortContext.cs
- ListBindingConverter.cs
- HttpProfileBase.cs
- CollectionChangedEventManager.cs
- MTConfigUtil.cs
- TextBlockAutomationPeer.cs
- AccessViolationException.cs
- ChannelPoolSettingsElement.cs
- DataListItemCollection.cs
- WeakReferenceEnumerator.cs
- ThemeInfoAttribute.cs
- ExpanderAutomationPeer.cs
- Codec.cs
- StrictModeSecurityHeaderElementInferenceEngine.cs
- CodeGenerator.cs
- StateChangeEvent.cs
- AutomationPeer.cs
- ValidatorCollection.cs
- SchemaObjectWriter.cs
- UnsafeNativeMethods.cs
- SafeRightsManagementHandle.cs
- CompositeControl.cs
- MsmqInputMessage.cs
- SelectManyQueryOperator.cs
- SelectionList.cs
- ReferentialConstraint.cs
- ResXFileRef.cs
- SuppressMessageAttribute.cs
- DataFormats.cs
- FormsAuthenticationCredentials.cs
- BackgroundFormatInfo.cs
- ExpressionBinding.cs
- TypeHelper.cs
- LogWriteRestartAreaAsyncResult.cs
- ListCollectionView.cs
- InputGestureCollection.cs
- WorkflowExecutor.cs
- _LazyAsyncResult.cs
- TraceXPathNavigator.cs
- RectangleF.cs
- TypeCodeDomSerializer.cs
- DownloadProgressEventArgs.cs
- HitTestParameters.cs
- OneWayElement.cs
- SymbolEqualComparer.cs
- CodeBlockBuilder.cs
- WrapperEqualityComparer.cs
- DataServiceHost.cs
- SerialErrors.cs
- AutomationPatternInfo.cs
- ContainerControl.cs
- RegionIterator.cs
- SqlGatherConsumedAliases.cs
- ExtendedPropertyDescriptor.cs
- RectAnimationBase.cs
- PropertyGridEditorPart.cs
- DesignBindingPicker.cs
- EntityConnectionStringBuilderItem.cs
- ActivityDesignerAccessibleObject.cs
- Stacktrace.cs
- LinqDataSourceDisposeEventArgs.cs
- HtmlInputSubmit.cs
- _RequestCacheProtocol.cs
- ListView.cs
- ReachDocumentReferenceCollectionSerializerAsync.cs
- SymLanguageVendor.cs
- HttpResponse.cs
- ValidatedControlConverter.cs
- XhtmlBasicPanelAdapter.cs
- formatstringdialog.cs
- OuterGlowBitmapEffect.cs
- MatrixTransform3D.cs
- ImageIndexEditor.cs
- ConnectionManagementElementCollection.cs
- SchemaConstraints.cs
- StringPropertyBuilder.cs
- RegistrationServices.cs
- FormParameter.cs
- PriorityBindingExpression.cs
- TabControl.cs
- XmlObjectSerializerContext.cs
- WindowsRichEdit.cs
- EventLogTraceListener.cs
- OutputScopeManager.cs
- ContractMapping.cs
- Point3DAnimationBase.cs
- ScaleTransform.cs
- FormParameter.cs
- DetailsViewModeEventArgs.cs
- MultipartIdentifier.cs
- InvalidProgramException.cs
- StrokeNodeEnumerator.cs
- SqlBuilder.cs
- Base64Decoder.cs
- Point3DValueSerializer.cs
- WebEventCodes.cs
- Stack.cs
- DataReaderContainer.cs