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
- ExpandedProjectionNode.cs
- FocusManager.cs
- ObjectSpanRewriter.cs
- PersonalizationProviderHelper.cs
- HttpInputStream.cs
- SerialPinChanges.cs
- XmlComment.cs
- WebException.cs
- XmlSchemaComplexContentRestriction.cs
- Win32PrintDialog.cs
- ViewCellSlot.cs
- WorkflowMarkupSerializationManager.cs
- EventSinkHelperWriter.cs
- ImageCollectionEditor.cs
- IncrementalReadDecoders.cs
- CngKeyBlobFormat.cs
- DeclaredTypeValidator.cs
- WindowsFont.cs
- Literal.cs
- webproxy.cs
- BitmapData.cs
- MetadataProperty.cs
- PaginationProgressEventArgs.cs
- Rules.cs
- InputProcessorProfilesLoader.cs
- OutputCacheProfileCollection.cs
- ToolStripRenderer.cs
- TextBoxLine.cs
- SingleObjectCollection.cs
- SiteOfOriginContainer.cs
- VSDExceptions.cs
- ToolBar.cs
- securitymgrsite.cs
- EntityContainer.cs
- WindowsTooltip.cs
- RichTextBox.cs
- ToolStripProgressBar.cs
- ClientSettingsSection.cs
- WebPartsPersonalization.cs
- CompiledIdentityConstraint.cs
- GridViewColumn.cs
- WinFormsSecurity.cs
- COAUTHIDENTITY.cs
- SchemaImporter.cs
- XmlWriterSettings.cs
- CodeCatchClause.cs
- MailWebEventProvider.cs
- PreservationFileReader.cs
- HtmlControl.cs
- SamlDelegatingWriter.cs
- ClientScriptManager.cs
- BaseTemplateBuildProvider.cs
- Bold.cs
- IOException.cs
- DataGridViewCell.cs
- SerializationIncompleteException.cs
- PrintDialog.cs
- NativeMethods.cs
- ConfigXmlAttribute.cs
- ComContractElement.cs
- DataSourceHelper.cs
- DesignerLoader.cs
- ElementInit.cs
- ConfigPathUtility.cs
- DesignerTransaction.cs
- DashStyles.cs
- ApplyTemplatesAction.cs
- PerformanceCounterPermissionEntryCollection.cs
- xmlsaver.cs
- ToolStripArrowRenderEventArgs.cs
- SubclassTypeValidatorAttribute.cs
- EntityProviderServices.cs
- HMACSHA256.cs
- MarkupCompiler.cs
- IndexerNameAttribute.cs
- UnauthorizedWebPart.cs
- FormViewAutoFormat.cs
- BackgroundFormatInfo.cs
- RenderCapability.cs
- XmlSchemaComplexType.cs
- PersonalizationEntry.cs
- AspNetSynchronizationContext.cs
- RectAnimationUsingKeyFrames.cs
- CalendarData.cs
- FixedFlowMap.cs
- StyleTypedPropertyAttribute.cs
- RequestResponse.cs
- TextureBrush.cs
- ChannelBinding.cs
- HorizontalAlignConverter.cs
- WebScriptMetadataMessageEncoderFactory.cs
- ExpressionVisitorHelpers.cs
- GridViewEditEventArgs.cs
- IsolatedStorage.cs
- JavaScriptObjectDeserializer.cs
- ExpressionBindingsDialog.cs
- KeyGestureValueSerializer.cs
- CodeDelegateCreateExpression.cs
- EntityKeyElement.cs
- RoutedCommand.cs