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
- WindowsFormsHostAutomationPeer.cs
- SystemIPv4InterfaceProperties.cs
- ServiceDescriptionSerializer.cs
- SafeRightsManagementSessionHandle.cs
- ColumnCollection.cs
- ExtractorMetadata.cs
- ResourceSet.cs
- TemplatePropertyEntry.cs
- DefaultObjectMappingItemCollection.cs
- propertytag.cs
- ToolBarOverflowPanel.cs
- DataGridViewRowPrePaintEventArgs.cs
- NullEntityWrapper.cs
- TypeDependencyAttribute.cs
- XamlParser.cs
- GridViewPageEventArgs.cs
- DataException.cs
- Events.cs
- mediaeventshelper.cs
- CapabilitiesState.cs
- TextOnlyOutput.cs
- ContentType.cs
- SoundPlayerAction.cs
- RightsManagementInformation.cs
- CacheMemory.cs
- ICspAsymmetricAlgorithm.cs
- UIPropertyMetadata.cs
- SynchronizedReadOnlyCollection.cs
- XPathDocument.cs
- DispatcherProcessingDisabled.cs
- BooleanExpr.cs
- ElementProxy.cs
- DrawingServices.cs
- CommandBindingCollection.cs
- Duration.cs
- PrivateUnsafeNativeCompoundFileMethods.cs
- ValidationError.cs
- RadioButtonAutomationPeer.cs
- SerialReceived.cs
- Expression.cs
- TextElement.cs
- EmptyStringExpandableObjectConverter.cs
- InspectionWorker.cs
- EntityDataSource.cs
- ListViewDataItem.cs
- MailDefinition.cs
- Profiler.cs
- OpacityConverter.cs
- indexingfiltermarshaler.cs
- TextRunTypographyProperties.cs
- QilLoop.cs
- DataServiceEntityAttribute.cs
- BCLDebug.cs
- CollectionTraceRecord.cs
- MethodImplAttribute.cs
- EnterpriseServicesHelper.cs
- TrackingLocationCollection.cs
- WarningException.cs
- BCryptSafeHandles.cs
- SignatureDescription.cs
- SendReply.cs
- Matrix3D.cs
- ConstantExpression.cs
- HtmlControlAdapter.cs
- ZipIOExtraFieldZip64Element.cs
- ExpressionBindings.cs
- ToolBarOverflowPanel.cs
- FormViewInsertEventArgs.cs
- DataMember.cs
- PtsCache.cs
- InlinedAggregationOperator.cs
- CodeDomSerializerException.cs
- TCEAdapterGenerator.cs
- NamedPipeChannelFactory.cs
- path.cs
- HtmlCalendarAdapter.cs
- XPathQueryGenerator.cs
- SqlClientMetaDataCollectionNames.cs
- TextElementCollection.cs
- CoreSwitches.cs
- SafeFileHandle.cs
- ProcessModelInfo.cs
- Transform3DCollection.cs
- CodeCastExpression.cs
- BindingWorker.cs
- EnumMember.cs
- DataGridViewLinkCell.cs
- ProjectionPruner.cs
- NetworkAddressChange.cs
- DataTableClearEvent.cs
- OperationAbortedException.cs
- BehaviorService.cs
- ConstNode.cs
- EventPrivateKey.cs
- WebBrowserSiteBase.cs
- ModelUIElement3D.cs
- SecurityDocument.cs
- ToolboxService.cs
- ExpressionVisitor.cs
- Metadata.cs