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
- TypeUtil.cs
- CommandLineParser.cs
- ClonableStack.cs
- ServerValidateEventArgs.cs
- KeyConstraint.cs
- HtmlControl.cs
- DigestTraceRecordHelper.cs
- LocalizableAttribute.cs
- MailHeaderInfo.cs
- EdmProperty.cs
- DocumentApplication.cs
- Comparer.cs
- FastPropertyAccessor.cs
- XmlWriterTraceListener.cs
- RevocationPoint.cs
- TableColumn.cs
- OleDbTransaction.cs
- CultureInfo.cs
- ReadOnlyPropertyMetadata.cs
- SapiRecoContext.cs
- IntPtr.cs
- ClientBuildManager.cs
- IsolatedStorageException.cs
- QilList.cs
- AsymmetricSignatureDeformatter.cs
- DropShadowEffect.cs
- EmptyWorkItem.cs
- IndentedTextWriter.cs
- ItemsControlAutomationPeer.cs
- SynchronizedInputHelper.cs
- WmlObjectListAdapter.cs
- NumberSubstitution.cs
- DoubleAnimationUsingKeyFrames.cs
- StyleXamlTreeBuilder.cs
- WebMessageEncoderFactory.cs
- HostExecutionContextManager.cs
- ObjectSet.cs
- SqlDesignerDataSourceView.cs
- HttpCacheVary.cs
- TableRow.cs
- lengthconverter.cs
- HealthMonitoringSectionHelper.cs
- PreviewControlDesigner.cs
- ComboBoxAutomationPeer.cs
- IUnknownConstantAttribute.cs
- ScriptReference.cs
- KeyNotFoundException.cs
- MailMessage.cs
- SqlDataSourceFilteringEventArgs.cs
- ReflectionHelper.cs
- ArgumentNullException.cs
- ComponentCommands.cs
- SqlProviderUtilities.cs
- _LocalDataStore.cs
- XmlMemberMapping.cs
- Rfc4050KeyFormatter.cs
- AnimationException.cs
- WebPartDisplayModeCancelEventArgs.cs
- XmlEncodedRawTextWriter.cs
- PartitionResolver.cs
- AccessDataSourceDesigner.cs
- ViewStateException.cs
- StringUtil.cs
- ListBox.cs
- SmiRequestExecutor.cs
- XmlTypeAttribute.cs
- UTF32Encoding.cs
- StrokeNodeData.cs
- UnauthorizedAccessException.cs
- WebResourceAttribute.cs
- DataGridViewCellValueEventArgs.cs
- FastEncoderWindow.cs
- DesignerCatalogPartChrome.cs
- SessionStateModule.cs
- CodeTryCatchFinallyStatement.cs
- XmlDataSource.cs
- ParallelTimeline.cs
- EventLogPermissionAttribute.cs
- PageContentCollection.cs
- CodeExpressionStatement.cs
- CustomError.cs
- LoginDesigner.cs
- CngKey.cs
- MessageTraceRecord.cs
- TrackingProfile.cs
- LinqDataView.cs
- MetafileHeader.cs
- AnimationStorage.cs
- TextLineBreak.cs
- CrossContextChannel.cs
- KerberosReceiverSecurityToken.cs
- ContentTypeSettingClientMessageFormatter.cs
- DocumentGridContextMenu.cs
- DataRowCollection.cs
- ClientFormsIdentity.cs
- KnownColorTable.cs
- ResourceExpression.cs
- BitmapEffectDrawing.cs
- FontSourceCollection.cs
- ControlCachePolicy.cs