Code:
/ 4.0 / 4.0 / untmp / 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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ColorAnimation.cs
- TrailingSpaceComparer.cs
- MulticastIPAddressInformationCollection.cs
- DiagnosticsConfigurationHandler.cs
- assertwrapper.cs
- WebPartTransformerAttribute.cs
- CacheChildrenQuery.cs
- Util.cs
- ErrorWebPart.cs
- dsa.cs
- StreamSecurityUpgradeInitiator.cs
- IdentityModelStringsVersion1.cs
- PersonalizationAdministration.cs
- CustomErrorCollection.cs
- configsystem.cs
- VerificationAttribute.cs
- GridViewDeletedEventArgs.cs
- LazyTextWriterCreator.cs
- TextSearch.cs
- UnsafeNativeMethods.cs
- SplashScreen.cs
- QualifiedId.cs
- ListDictionaryInternal.cs
- Compiler.cs
- ListViewInsertedEventArgs.cs
- Context.cs
- FunctionMappingTranslator.cs
- TextEditorSelection.cs
- XmlDictionaryReaderQuotas.cs
- ControlType.cs
- SiteMapDataSource.cs
- XmlFormatExtensionAttribute.cs
- CodeDelegateCreateExpression.cs
- ChtmlImageAdapter.cs
- ConnectionManagementSection.cs
- HttpPostProtocolImporter.cs
- StaticResourceExtension.cs
- DataFormats.cs
- SmiRecordBuffer.cs
- KeyInterop.cs
- OdbcErrorCollection.cs
- GroupBoxAutomationPeer.cs
- RtfNavigator.cs
- Listbox.cs
- counter.cs
- TraceUtils.cs
- CatalogPartCollection.cs
- GridItemPatternIdentifiers.cs
- OleDbTransaction.cs
- OutputWindow.cs
- XhtmlBasicListAdapter.cs
- DataSvcMapFileSerializer.cs
- TextBoxAutomationPeer.cs
- UnsafeNativeMethods.cs
- RawStylusInputCustomDataList.cs
- PageWrapper.cs
- __ComObject.cs
- SoapServerProtocol.cs
- ProgressBarRenderer.cs
- XmlException.cs
- SerializationBinder.cs
- Converter.cs
- HtmlListAdapter.cs
- ProviderManager.cs
- DefaultPrintController.cs
- _ListenerRequestStream.cs
- ResXResourceReader.cs
- SqlBuffer.cs
- TransformPattern.cs
- ScriptingProfileServiceSection.cs
- XmlArrayItemAttribute.cs
- SByteConverter.cs
- StringReader.cs
- clipboard.cs
- Substitution.cs
- OdbcDataReader.cs
- ArcSegment.cs
- Rules.cs
- MachineKeySection.cs
- ContractHandle.cs
- CapabilitiesPattern.cs
- DisplayNameAttribute.cs
- ResolveCompletedEventArgs.cs
- SafeBitVector32.cs
- basecomparevalidator.cs
- AdornerHitTestResult.cs
- EventListenerClientSide.cs
- EventDescriptor.cs
- Path.cs
- Int32Storage.cs
- ResolvedKeyFrameEntry.cs
- VariableBinder.cs
- ThicknessKeyFrameCollection.cs
- ToolStripLocationCancelEventArgs.cs
- DynamicDocumentPaginator.cs
- xml.cs
- TextShapeableCharacters.cs
- ProviderBase.cs
- SystemPens.cs
- ObjectListCommandsPage.cs