Code:
/ 4.0 / 4.0 / untmp / 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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- SettingsAttributeDictionary.cs
- MergeFailedEvent.cs
- HttpMethodAttribute.cs
- FileRecordSequenceCompletedAsyncResult.cs
- StringSource.cs
- ContainerControl.cs
- Material.cs
- ByteStreamBufferedMessageData.cs
- FirstMatchCodeGroup.cs
- AttributeSetAction.cs
- RMEnrollmentPage3.cs
- Oid.cs
- DataBoundLiteralControl.cs
- FlowNode.cs
- RequestTimeoutManager.cs
- ViewBox.cs
- DataGridViewRowEventArgs.cs
- FormViewInsertedEventArgs.cs
- XMLSyntaxException.cs
- WindowsGraphicsCacheManager.cs
- BindableTemplateBuilder.cs
- ArrayTypeMismatchException.cs
- GatewayDefinition.cs
- StateMachineDesignerPaint.cs
- HtmlEmptyTagControlBuilder.cs
- ComponentResourceKeyConverter.cs
- ItemsControlAutomationPeer.cs
- Vector3DKeyFrameCollection.cs
- NegotiateStream.cs
- JobInputBins.cs
- listitem.cs
- ImmutableAssemblyCacheEntry.cs
- XmlSerializerOperationGenerator.cs
- ZipIOExtraFieldPaddingElement.cs
- DescendentsWalker.cs
- AlphaSortedEnumConverter.cs
- FlowDocumentPage.cs
- XmlSchemaElement.cs
- TraceSection.cs
- BaseCollection.cs
- ViewManager.cs
- ResourceLoader.cs
- ISFTagAndGuidCache.cs
- RequiredAttributeAttribute.cs
- ComponentResourceKeyConverter.cs
- ToolZone.cs
- SecurityIdentifierConverter.cs
- PartialTrustVisibleAssembliesSection.cs
- Ref.cs
- XPathNavigatorKeyComparer.cs
- HMACSHA256.cs
- DivideByZeroException.cs
- TableLayout.cs
- TabletDeviceInfo.cs
- ReflectionUtil.cs
- OpenFileDialog.cs
- DataGridViewImageCell.cs
- CodeGeneratorOptions.cs
- Point4DConverter.cs
- WebPartCollection.cs
- ActivityExecutionFilter.cs
- DocumentEventArgs.cs
- ReadOnlyDataSource.cs
- ListControl.cs
- CustomExpressionEventArgs.cs
- ExceptionUtility.cs
- TypedReference.cs
- XmlSchemaSet.cs
- HttpUnhandledOperationInvoker.cs
- ConnectionPointCookie.cs
- CookieParameter.cs
- StringAnimationUsingKeyFrames.cs
- RuleSet.cs
- PropertyGridCommands.cs
- BitConverter.cs
- WindowsAuthenticationModule.cs
- ComponentChangedEvent.cs
- AssociationProvider.cs
- TableLayoutPanel.cs
- ButtonField.cs
- BitmapVisualManager.cs
- ZipIOExtraFieldElement.cs
- OrderedDictionary.cs
- Substitution.cs
- CompModSwitches.cs
- HtmlLink.cs
- BamlRecordWriter.cs
- InputBuffer.cs
- ProfileEventArgs.cs
- ParserStreamGeometryContext.cs
- EditorZone.cs
- MultiViewDesigner.cs
- FontWeight.cs
- XPathAxisIterator.cs
- DataListItem.cs
- ResourcePropertyMemberCodeDomSerializer.cs
- XmlCharCheckingReader.cs
- Int64Animation.cs
- WhitespaceSignificantCollectionAttribute.cs
- Crypto.cs