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
- CollectionBuilder.cs
- BlobPersonalizationState.cs
- HierarchicalDataTemplate.cs
- DecimalFormatter.cs
- Int32Animation.cs
- XmlCustomFormatter.cs
- infer.cs
- MenuItemCollection.cs
- UnsafeNativeMethods.cs
- DataServiceException.cs
- ColumnProvider.cs
- EntityDataSourceContextCreatingEventArgs.cs
- dbenumerator.cs
- FlowPanelDesigner.cs
- Merger.cs
- StateInitializationDesigner.cs
- DropSource.cs
- HostedImpersonationContext.cs
- WorkItem.cs
- HttpHandlerActionCollection.cs
- XmlBinaryWriter.cs
- ExpandCollapsePattern.cs
- DataControlImageButton.cs
- AuthenticationManager.cs
- DPCustomTypeDescriptor.cs
- TaskCanceledException.cs
- GifBitmapEncoder.cs
- ConcurrentStack.cs
- selecteditemcollection.cs
- AnnotationStore.cs
- ContextBase.cs
- StyleBamlRecordReader.cs
- XPathNodeHelper.cs
- RelationshipSet.cs
- ClientConfigurationSystem.cs
- LocationEnvironment.cs
- ObjectDataSourceMethodEventArgs.cs
- EditorAttribute.cs
- ChineseLunisolarCalendar.cs
- DbDataRecord.cs
- HttpProcessUtility.cs
- ScrollProperties.cs
- TextEmbeddedObject.cs
- WebPartsSection.cs
- CertificateElement.cs
- CSharpCodeProvider.cs
- URI.cs
- Compiler.cs
- ControllableStoryboardAction.cs
- TimeSpanParse.cs
- StylusPoint.cs
- UTF7Encoding.cs
- XmlIlVisitor.cs
- Gdiplus.cs
- TransformValueSerializer.cs
- DataPagerCommandEventArgs.cs
- DesignerRegionMouseEventArgs.cs
- LightweightCodeGenerator.cs
- ResourceDescriptionAttribute.cs
- WmlValidatorAdapter.cs
- XmlNodeWriter.cs
- JournalEntryListConverter.cs
- storepermission.cs
- WindowsSspiNegotiation.cs
- XmlSerializationWriter.cs
- Rectangle.cs
- HttpListenerResponse.cs
- UICuesEvent.cs
- MetaType.cs
- PasswordRecovery.cs
- TimerExtension.cs
- NativeCompoundFileAPIs.cs
- ScrollItemPattern.cs
- ParseNumbers.cs
- ScrollPatternIdentifiers.cs
- SmtpNetworkElement.cs
- SystemFonts.cs
- Timeline.cs
- Propagator.Evaluator.cs
- CodeDefaultValueExpression.cs
- IndentTextWriter.cs
- GZipStream.cs
- InternalBufferManager.cs
- OverrideMode.cs
- SpellerHighlightLayer.cs
- ManualResetEventSlim.cs
- SqlDataSourceConfigureSelectPanel.cs
- StatusBarItemAutomationPeer.cs
- ResponseBodyWriter.cs
- fixedPageContentExtractor.cs
- _SafeNetHandles.cs
- WorkflowRuntimeBehavior.cs
- HttpAsyncResult.cs
- CompilationUtil.cs
- ImageSource.cs
- NamedServiceModelExtensionCollectionElement.cs
- ListItemCollection.cs
- wmiprovider.cs
- AttributeUsageAttribute.cs
- ImageAttributes.cs