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
- FormsAuthentication.cs
- HttpModuleActionCollection.cs
- BufferModesCollection.cs
- SqlGatherConsumedAliases.cs
- BaseDataList.cs
- ModuleConfigurationInfo.cs
- SBCSCodePageEncoding.cs
- NonBatchDirectoryCompiler.cs
- InstancePersistenceCommandException.cs
- DecoderFallbackWithFailureFlag.cs
- SqlCommandSet.cs
- PixelFormats.cs
- PropertyConverter.cs
- MenuEventArgs.cs
- BamlLocalizer.cs
- ProbeDuplexAsyncResult.cs
- BufferedGraphicsManager.cs
- BamlRecordReader.cs
- CodeTypeDelegate.cs
- SafeArrayRankMismatchException.cs
- MexTcpBindingCollectionElement.cs
- EndpointDispatcher.cs
- DataGridViewAutoSizeColumnModeEventArgs.cs
- CursorInteropHelper.cs
- IntSecurity.cs
- HttpModuleCollection.cs
- SmtpTransport.cs
- UnescapedXmlDiagnosticData.cs
- ToolboxBitmapAttribute.cs
- SystemException.cs
- DefaultSettingsSection.cs
- DataGridItem.cs
- CompositeKey.cs
- TypeElement.cs
- Dictionary.cs
- InkSerializer.cs
- DataControlLinkButton.cs
- Shape.cs
- ReadOnlyTernaryTree.cs
- RegisteredScript.cs
- MenuAutomationPeer.cs
- ToolStripDesigner.cs
- WindowsFormsSectionHandler.cs
- TreeViewDesigner.cs
- AxHostDesigner.cs
- NumberFormatter.cs
- ThemeInfoAttribute.cs
- LabelDesigner.cs
- SendKeys.cs
- SoapCodeExporter.cs
- ProviderIncompatibleException.cs
- _IPv6Address.cs
- BezierSegment.cs
- EncryptedType.cs
- NumericUpDownAccelerationCollection.cs
- WebExceptionStatus.cs
- ServiceContractDetailViewControl.cs
- DataControlFieldCollection.cs
- ExpressionNode.cs
- ToolStripRenderEventArgs.cs
- ContentOperations.cs
- _HeaderInfo.cs
- IisTraceListener.cs
- _AcceptOverlappedAsyncResult.cs
- XmlSchemaGroup.cs
- LabelTarget.cs
- ResourcePart.cs
- CompiledAction.cs
- ExceptionAggregator.cs
- PenThread.cs
- SerializationFieldInfo.cs
- TextEditorThreadLocalStore.cs
- RegisteredDisposeScript.cs
- AutomationEventArgs.cs
- TraceSwitch.cs
- RuleEngine.cs
- _AuthenticationState.cs
- ComponentResourceManager.cs
- CounterSample.cs
- XmlCountingReader.cs
- MappedMetaModel.cs
- Soap11ServerProtocol.cs
- WindowHideOrCloseTracker.cs
- Simplifier.cs
- AppDomainFactory.cs
- InvalidStoreProtectionKeyException.cs
- SeparatorAutomationPeer.cs
- CaseInsensitiveComparer.cs
- TypeNameHelper.cs
- MailAddressCollection.cs
- HttpAsyncResult.cs
- WindowsAuthenticationEventArgs.cs
- PrintDialog.cs
- DataFormats.cs
- Pair.cs
- Compiler.cs
- Statements.cs
- DirectoryNotFoundException.cs
- ADConnectionHelper.cs
- PackageStore.cs