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
- WeakReference.cs
- AssemblyAttributes.cs
- FilterQueryOptionExpression.cs
- _AcceptOverlappedAsyncResult.cs
- WmlSelectionListAdapter.cs
- Unit.cs
- HttpClientCertificate.cs
- RegisteredHiddenField.cs
- StrokeIntersection.cs
- LiteralTextParser.cs
- XPathNodeInfoAtom.cs
- PermissionSetEnumerator.cs
- Stack.cs
- CommonGetThemePartSize.cs
- ClientFormsIdentity.cs
- EntityViewGenerator.cs
- NullableBoolConverter.cs
- CodeDomConfigurationHandler.cs
- Int16Converter.cs
- recordstate.cs
- EtwTrace.cs
- DataStorage.cs
- BlurEffect.cs
- UserControlDocumentDesigner.cs
- DataPagerFieldCommandEventArgs.cs
- XmlSchemaValidationException.cs
- EventlogProvider.cs
- RuleCache.cs
- UrlPath.cs
- Facet.cs
- CharacterHit.cs
- Hex.cs
- RequestUriProcessor.cs
- WindowsTab.cs
- ObservableDictionary.cs
- WizardPanel.cs
- ForeignConstraint.cs
- RoamingStoreFile.cs
- TextContainerHelper.cs
- DataMemberConverter.cs
- XmlQuerySequence.cs
- FilterableAttribute.cs
- Rectangle.cs
- WebPageTraceListener.cs
- PipelineModuleStepContainer.cs
- CompositionCommandSet.cs
- IResourceProvider.cs
- FontInfo.cs
- NavigationPropertyEmitter.cs
- ListenerUnsafeNativeMethods.cs
- XXXOnTypeBuilderInstantiation.cs
- SelectionItemProviderWrapper.cs
- _FtpControlStream.cs
- ToolBarTray.cs
- sqlser.cs
- Restrictions.cs
- PrivateFontCollection.cs
- ModifiableIteratorCollection.cs
- EntityTypeEmitter.cs
- TerminatorSinks.cs
- Transform.cs
- ValidationRuleCollection.cs
- ReadOnlyState.cs
- ListViewTableCell.cs
- ProxyAssemblyNotLoadedException.cs
- DbSetClause.cs
- uribuilder.cs
- ImpersonateTokenRef.cs
- DefaultTextStore.cs
- ExceptionUtil.cs
- XmlRawWriterWrapper.cs
- ItemsChangedEventArgs.cs
- RedistVersionInfo.cs
- DrawingContextWalker.cs
- PointCollection.cs
- PolyQuadraticBezierSegment.cs
- DBBindings.cs
- BitmapEffectGeneralTransform.cs
- SystemNetworkInterface.cs
- DrawingGroupDrawingContext.cs
- BidOverLoads.cs
- SubMenuStyle.cs
- InputScopeAttribute.cs
- RefType.cs
- DES.cs
- OracleEncoding.cs
- ConditionChanges.cs
- XmlSchemaImport.cs
- ObjectListDataBindEventArgs.cs
- BaseCAMarshaler.cs
- PerformanceCounterManager.cs
- initElementDictionary.cs
- ListBox.cs
- TypeSemantics.cs
- __Error.cs
- GeneratedCodeAttribute.cs
- Message.cs
- ContentValidator.cs
- ToolboxItem.cs
- MembershipUser.cs