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
- NaturalLanguageHyphenator.cs
- Ticks.cs
- BaseCAMarshaler.cs
- EntityDataSourceSelectedEventArgs.cs
- SafeSecurityHelper.cs
- ImagingCache.cs
- DependencyObjectValidator.cs
- Buffer.cs
- DeferrableContent.cs
- BooleanToVisibilityConverter.cs
- SafeLibraryHandle.cs
- XmlSchemaDocumentation.cs
- XmlReturnReader.cs
- DetailsViewCommandEventArgs.cs
- NumberFormatter.cs
- WorkflowServiceHostFactory.cs
- CompareInfo.cs
- WebReferencesBuildProvider.cs
- ToolStripPanelSelectionGlyph.cs
- StaticResourceExtension.cs
- XPathScanner.cs
- TypeDescriptorContext.cs
- ButtonPopupAdapter.cs
- RelationshipManager.cs
- WebBrowserNavigatingEventHandler.cs
- BrowserCapabilitiesCompiler.cs
- ThreadAttributes.cs
- ExpandableObjectConverter.cs
- RegexWorker.cs
- GridViewRowEventArgs.cs
- SoapSchemaMember.cs
- BitStack.cs
- TemplatePropertyEntry.cs
- ListControl.cs
- OutputCacheSettingsSection.cs
- HasCopySemanticsAttribute.cs
- PrintPreviewControl.cs
- DataGridViewLayoutData.cs
- SoapExtensionTypeElement.cs
- ThreadNeutralSemaphore.cs
- DependencyPropertyKey.cs
- ColorAnimationBase.cs
- ReferenceSchema.cs
- DuplicateWaitObjectException.cs
- NativeWindow.cs
- AppDomainCompilerProxy.cs
- TypeDependencyAttribute.cs
- QueryContinueDragEvent.cs
- ClockController.cs
- ForEachAction.cs
- Separator.cs
- LazyTextWriterCreator.cs
- XmlNodeList.cs
- DoubleAnimationClockResource.cs
- ModelTypeConverter.cs
- ExpressionParser.cs
- HandlerWithFactory.cs
- DeferredTextReference.cs
- ListenerElementsCollection.cs
- ColumnResizeAdorner.cs
- FontFamily.cs
- PropertyEmitterBase.cs
- Timer.cs
- XmlAttributeProperties.cs
- HyperLink.cs
- ADMembershipUser.cs
- CompilerResults.cs
- DataGridViewCellFormattingEventArgs.cs
- DBBindings.cs
- QueryConverter.cs
- StatusBarAutomationPeer.cs
- BinarySerializer.cs
- ThicknessAnimationUsingKeyFrames.cs
- ColorInterpolationModeValidation.cs
- ToolStripDropDownClosedEventArgs.cs
- XPathNavigatorReader.cs
- MaterializeFromAtom.cs
- WebPartHeaderCloseVerb.cs
- ReadOnlyMetadataCollection.cs
- QilTypeChecker.cs
- ScriptingWebServicesSectionGroup.cs
- MetadataArtifactLoaderXmlReaderWrapper.cs
- DesignerVerbToolStripMenuItem.cs
- SchemaManager.cs
- UserControl.cs
- XmlDataSource.cs
- WebPartTransformer.cs
- WindowsContainer.cs
- Page.cs
- LoggedException.cs
- DesigntimeLicenseContextSerializer.cs
- BatchWriter.cs
- XmlNavigatorFilter.cs
- HwndHost.cs
- ScalarType.cs
- ProcessManager.cs
- CrossSiteScriptingValidation.cs
- InternalConfigSettingsFactory.cs
- EdmScalarPropertyAttribute.cs
- EventLog.cs