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
- DataControlImageButton.cs
- PerformanceCounter.cs
- NameSpaceExtractor.cs
- LOSFormatter.cs
- SqlMetaData.cs
- GradientSpreadMethodValidation.cs
- TCPClient.cs
- CollectionBuilder.cs
- OverrideMode.cs
- ReturnType.cs
- TemplateColumn.cs
- ServiceMemoryGates.cs
- ZipFileInfoCollection.cs
- Metafile.cs
- BlobPersonalizationState.cs
- DrawToolTipEventArgs.cs
- HyperLinkField.cs
- ToolStripTextBox.cs
- SQLCharsStorage.cs
- safesecurityhelperavalon.cs
- Trace.cs
- LinqMaximalSubtreeNominator.cs
- AssemblyUtil.cs
- DataGridHelper.cs
- XmlNodeChangedEventManager.cs
- IntellisenseTextBox.designer.cs
- BuiltInPermissionSets.cs
- XmlSchemaAttributeGroupRef.cs
- SiteMapNodeCollection.cs
- MessageDirection.cs
- querybuilder.cs
- Error.cs
- SrgsNameValueTag.cs
- DataGridViewRowStateChangedEventArgs.cs
- Evidence.cs
- ExpressionEditorAttribute.cs
- NamedPipeConnectionPool.cs
- ZoneButton.cs
- Compensate.cs
- ControlPropertyNameConverter.cs
- AttributeInfo.cs
- FontStyle.cs
- GeometryValueSerializer.cs
- SqlDependency.cs
- Component.cs
- PrivilegedConfigurationManager.cs
- ElementHostAutomationPeer.cs
- SelectedGridItemChangedEvent.cs
- EventMappingSettingsCollection.cs
- RemoteX509Token.cs
- QueryReaderSettings.cs
- StreamSecurityUpgradeAcceptorAsyncResult.cs
- DeferredReference.cs
- EventMap.cs
- DrawingGroup.cs
- FigureParaClient.cs
- ExpressionBinding.cs
- SizeF.cs
- DataGridViewBand.cs
- UnsafeNativeMethodsMilCoreApi.cs
- XamlFigureLengthSerializer.cs
- DescendantBaseQuery.cs
- LZCodec.cs
- WindowsRichEdit.cs
- QueueException.cs
- DllNotFoundException.cs
- RectAnimationUsingKeyFrames.cs
- PresentationSource.cs
- GetCardDetailsRequest.cs
- RoleManagerEventArgs.cs
- HttpListener.cs
- ReadOnlyDataSource.cs
- RemotingException.cs
- EUCJPEncoding.cs
- Membership.cs
- ToolStripSeparator.cs
- UndoUnit.cs
- documentsequencetextcontainer.cs
- XmlDocumentSchema.cs
- ProcessHostFactoryHelper.cs
- PopupRoot.cs
- Currency.cs
- GeometryDrawing.cs
- HttpServerUtilityWrapper.cs
- TypedAsyncResult.cs
- KeyedCollection.cs
- ProtocolsSection.cs
- OleDbDataAdapter.cs
- TemplateControlBuildProvider.cs
- BStrWrapper.cs
- AdCreatedEventArgs.cs
- ResetableIterator.cs
- ServiceSecurityContext.cs
- GridViewColumnHeaderAutomationPeer.cs
- PageRequestManager.cs
- DataBindEngine.cs
- PropertyGrid.cs
- FixedDocumentSequencePaginator.cs
- CharacterHit.cs
- EditCommandColumn.cs