Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / WCF / infocard / Client / System / IdentityModel / Selectors / SafeLibraryHandle.cs / 1305376 / SafeLibraryHandle.cs
//------------------------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- namespace System.IdentityModel.Selectors { using System; using System.IO; using System.Collections.Generic; using System.Collections.ObjectModel; using System.ComponentModel; using System.Runtime.InteropServices; using System.Runtime.ConstrainedExecution; using System.Runtime.CompilerServices; using Microsoft.InfoCards.Diagnostics; using Microsoft.Win32; using System.Security.Permissions; using Microsoft.Win32.SafeHandles; // // Summary: // A class to wrap a library handle for reliability. // When LoadLibrary returns, the runtime stores the resulting IntPtr // into the already created SafeLibraryHandle. The runtime guarantees that // this operation is atomic, meaning that if the P/Invoke method successfully returns, // the IntPtr will be stored safely inside the SafeHandle. Once inside the SafeHandle, // even if an asynchronous exception occurs and prevents LoadLibrary's SafeLibraryHandle return // value from being stored, the relevant IntPtr is already stored within a managed object // whose critical finalizer will ensure its proper release. // [ SecurityPermission( SecurityAction.LinkDemand, UnmanagedCode=true ) ] class SafeLibraryHandle : SafeHandleZeroOrMinusOneIsInvalid { private SafeLibraryHandle() : base( true ) { } protected override bool ReleaseHandle() { #pragma warning suppress 56523 return FreeLibrary( handle ); } [DllImport( "kernel32.dll", CharSet = CharSet.Unicode, ExactSpelling = true, SetLastError = true, CallingConvention = CallingConvention.StdCall )] internal static extern SafeLibraryHandle LoadLibraryW( [MarshalAs( UnmanagedType.LPWStr )] string dllname ); [DllImport( "kernel32.dll", CharSet = CharSet.Unicode, ExactSpelling = true, SetLastError = true, CallingConvention = CallingConvention.StdCall )] internal static extern bool FreeLibrary( IntPtr hModule ); } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- namespace System.IdentityModel.Selectors { using System; using System.IO; using System.Collections.Generic; using System.Collections.ObjectModel; using System.ComponentModel; using System.Runtime.InteropServices; using System.Runtime.ConstrainedExecution; using System.Runtime.CompilerServices; using Microsoft.InfoCards.Diagnostics; using Microsoft.Win32; using System.Security.Permissions; using Microsoft.Win32.SafeHandles; // // Summary: // A class to wrap a library handle for reliability. // When LoadLibrary returns, the runtime stores the resulting IntPtr // into the already created SafeLibraryHandle. The runtime guarantees that // this operation is atomic, meaning that if the P/Invoke method successfully returns, // the IntPtr will be stored safely inside the SafeHandle. Once inside the SafeHandle, // even if an asynchronous exception occurs and prevents LoadLibrary's SafeLibraryHandle return // value from being stored, the relevant IntPtr is already stored within a managed object // whose critical finalizer will ensure its proper release. // [ SecurityPermission( SecurityAction.LinkDemand, UnmanagedCode=true ) ] class SafeLibraryHandle : SafeHandleZeroOrMinusOneIsInvalid { private SafeLibraryHandle() : base( true ) { } protected override bool ReleaseHandle() { #pragma warning suppress 56523 return FreeLibrary( handle ); } [DllImport( "kernel32.dll", CharSet = CharSet.Unicode, ExactSpelling = true, SetLastError = true, CallingConvention = CallingConvention.StdCall )] internal static extern SafeLibraryHandle LoadLibraryW( [MarshalAs( UnmanagedType.LPWStr )] string dllname ); [DllImport( "kernel32.dll", CharSet = CharSet.Unicode, ExactSpelling = true, SetLastError = true, CallingConvention = CallingConvention.StdCall )] internal static extern bool FreeLibrary( IntPtr hModule ); } } // 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
- unitconverter.cs
- DataGridViewLinkColumn.cs
- InputLanguageSource.cs
- ManagedCodeMarkers.cs
- FontSizeConverter.cs
- ImageCollectionCodeDomSerializer.cs
- DispatcherTimer.cs
- VectorCollectionValueSerializer.cs
- AnnotationResourceCollection.cs
- StoryFragments.cs
- BaseEntityWrapper.cs
- DataGrid.cs
- CompressionTracing.cs
- HtmlHead.cs
- ValidationEventArgs.cs
- HTMLTagNameToTypeMapper.cs
- UriTemplateMatchException.cs
- Operand.cs
- VerticalAlignConverter.cs
- XmlExtensionFunction.cs
- Delay.cs
- TextSerializer.cs
- Validator.cs
- AuthenticationException.cs
- BaseCodeDomTreeGenerator.cs
- DetailsViewPagerRow.cs
- DataBoundControl.cs
- ButtonStandardAdapter.cs
- InputReportEventArgs.cs
- ChannelManager.cs
- InvalidEnumArgumentException.cs
- WebPartsSection.cs
- NGCSerializationManagerAsync.cs
- StyleModeStack.cs
- MessageQueueAccessControlEntry.cs
- TextRenderer.cs
- Part.cs
- MsmqHostedTransportManager.cs
- TypedDataSourceCodeGenerator.cs
- StaticFileHandler.cs
- TopClause.cs
- DispatcherTimer.cs
- ScriptComponentDescriptor.cs
- tabpagecollectioneditor.cs
- XsltSettings.cs
- Query.cs
- StylusEditingBehavior.cs
- figurelength.cs
- MenuItem.cs
- WindowsFormsHost.cs
- RawContentTypeMapper.cs
- SendMailErrorEventArgs.cs
- ServerProtocol.cs
- EntityDataSourceValidationException.cs
- XmlNodeList.cs
- Console.cs
- ClientWindowsAuthenticationMembershipProvider.cs
- Baml2006KeyRecord.cs
- SymmetricSecurityBindingElement.cs
- GridView.cs
- FontDialog.cs
- ImageSource.cs
- Bitmap.cs
- ComponentResourceManager.cs
- LinkedDataMemberFieldEditor.cs
- GeneralTransform3DCollection.cs
- HostAdapter.cs
- XmlEncoding.cs
- FieldTemplateUserControl.cs
- PathGeometry.cs
- DataListItemCollection.cs
- UnaryNode.cs
- LowerCaseStringConverter.cs
- WithStatement.cs
- InstancePersistenceCommandException.cs
- SwitchAttribute.cs
- PropertyCollection.cs
- FrameworkElementAutomationPeer.cs
- InputScopeConverter.cs
- ServiceDurableInstanceContextProvider.cs
- ListItemCollection.cs
- HostProtectionException.cs
- BindingMAnagerBase.cs
- AssemblyInfo.cs
- VectorAnimation.cs
- ItemCheckEvent.cs
- SystemResources.cs
- ServiceDiscoveryElement.cs
- ComponentChangingEvent.cs
- ObjectSecurity.cs
- AmbientLight.cs
- ListItemCollection.cs
- CorrelationScope.cs
- HTTPNotFoundHandler.cs
- VectorAnimation.cs
- RtfFormatStack.cs
- StringValidator.cs
- EncoderFallback.cs
- ContainerTracking.cs
- SqlUtil.cs