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
- TextCharacters.cs
- PenThreadPool.cs
- RegionIterator.cs
- CodeCastExpression.cs
- PropertyItemInternal.cs
- WindowsFormsSectionHandler.cs
- DBPropSet.cs
- SurrogateEncoder.cs
- ListViewGroup.cs
- SendKeys.cs
- MatrixAnimationUsingPath.cs
- MessageBox.cs
- TypeConvertions.cs
- XXXInfos.cs
- ObjectTypeMapping.cs
- ResourcePermissionBaseEntry.cs
- HtmlInputRadioButton.cs
- MetadataItemSerializer.cs
- DetailsViewCommandEventArgs.cs
- CodeIdentifiers.cs
- FontStyle.cs
- PriorityRange.cs
- OneOf.cs
- ZipIOBlockManager.cs
- DbUpdateCommandTree.cs
- RepeatEnumerable.cs
- XmlSchemaObjectTable.cs
- HttpCookiesSection.cs
- PageBuildProvider.cs
- FileSystemInfo.cs
- ToolStripArrowRenderEventArgs.cs
- XmlUtf8RawTextWriter.cs
- KeyValueSerializer.cs
- RegexCharClass.cs
- MenuAutomationPeer.cs
- WebServiceEnumData.cs
- URLIdentityPermission.cs
- SizeAnimationBase.cs
- StyleHelper.cs
- WithStatement.cs
- DataGridViewHeaderCell.cs
- SubclassTypeValidator.cs
- CmsInterop.cs
- ToolboxItemAttribute.cs
- InvalidAsynchronousStateException.cs
- BitSet.cs
- BuildResult.cs
- ElementUtil.cs
- DataGridViewCellContextMenuStripNeededEventArgs.cs
- NavigatorInvalidBodyAccessException.cs
- SqlTypeConverter.cs
- CompiledQueryCacheKey.cs
- XPathNavigatorReader.cs
- WebPartDisplayModeCancelEventArgs.cs
- EvidenceBase.cs
- ResourceReader.cs
- PasswordRecoveryDesigner.cs
- DES.cs
- Storyboard.cs
- HwndPanningFeedback.cs
- ConnectionProviderAttribute.cs
- DataGridViewRowEventArgs.cs
- DesignTimeParseData.cs
- AspNetSynchronizationContext.cs
- WebPartEditorOkVerb.cs
- AttributeSetAction.cs
- Resources.Designer.cs
- SessionStateContainer.cs
- GeneralTransformGroup.cs
- OptimalTextSource.cs
- DataReaderContainer.cs
- ListViewUpdatedEventArgs.cs
- XmlSchemaParticle.cs
- CalendarDay.cs
- XmlValidatingReaderImpl.cs
- ResolveMatchesMessageCD1.cs
- ConfigXmlCDataSection.cs
- QilScopedVisitor.cs
- HMACSHA256.cs
- MultiSelector.cs
- UserInitiatedRoutedEventPermission.cs
- TrackingServices.cs
- BulletChrome.cs
- AmbientProperties.cs
- EntityDataSourceContextCreatingEventArgs.cs
- JoinSymbol.cs
- RegexMatchCollection.cs
- AppearanceEditorPart.cs
- TabletDevice.cs
- TableCell.cs
- BitmapEffectInput.cs
- DataFormats.cs
- WebBrowserContainer.cs
- MessageSecurityProtocolFactory.cs
- InitializerFacet.cs
- InternalConfigConfigurationFactory.cs
- GridViewSelectEventArgs.cs
- TerminateSequence.cs
- LineUtil.cs
- SQLInt64Storage.cs