Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / ndp / clr / src / BCL / Microsoft / Win32 / SafeHandles / SafeRegistryHandle.cs / 1 / SafeRegistryHandle.cs
// ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== /*============================================================ ** ** Class: SafeRegistryHandle ** ** ** A wrapper for registry handles ** ** ===========================================================*/ using System; using System.Security; using System.Security.Permissions; using System.Runtime.InteropServices; using System.Runtime.CompilerServices; using System.Runtime.ConstrainedExecution; namespace Microsoft.Win32.SafeHandles { internal sealed class SafeRegistryHandle : SafeHandleZeroOrMinusOneIsInvalid { // Note: Officially -1 is the recommended invalid handle value for // registry keys, but we'll also get back 0 as an invalid handle from // RegOpenKeyEx. [SecurityPermission(SecurityAction.LinkDemand, UnmanagedCode=true)] internal SafeRegistryHandle() : base(true) {} [SecurityPermission(SecurityAction.LinkDemand, UnmanagedCode=true)] internal SafeRegistryHandle(IntPtr preexistingHandle, bool ownsHandle) : base(ownsHandle) { SetHandle(preexistingHandle); } [DllImport(Win32Native.ADVAPI32), SuppressUnmanagedCodeSecurity, ReliabilityContract(Consistency.WillNotCorruptState, Cer.Success)] private static extern int RegCloseKey(IntPtr hKey); override protected bool ReleaseHandle() { // Returns a Win32 error code, 0 for success int r = RegCloseKey(handle); return r == 0; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== /*============================================================ ** ** Class: SafeRegistryHandle ** ** ** A wrapper for registry handles ** ** ===========================================================*/ using System; using System.Security; using System.Security.Permissions; using System.Runtime.InteropServices; using System.Runtime.CompilerServices; using System.Runtime.ConstrainedExecution; namespace Microsoft.Win32.SafeHandles { internal sealed class SafeRegistryHandle : SafeHandleZeroOrMinusOneIsInvalid { // Note: Officially -1 is the recommended invalid handle value for // registry keys, but we'll also get back 0 as an invalid handle from // RegOpenKeyEx. [SecurityPermission(SecurityAction.LinkDemand, UnmanagedCode=true)] internal SafeRegistryHandle() : base(true) {} [SecurityPermission(SecurityAction.LinkDemand, UnmanagedCode=true)] internal SafeRegistryHandle(IntPtr preexistingHandle, bool ownsHandle) : base(ownsHandle) { SetHandle(preexistingHandle); } [DllImport(Win32Native.ADVAPI32), SuppressUnmanagedCodeSecurity, ReliabilityContract(Consistency.WillNotCorruptState, Cer.Success)] private static extern int RegCloseKey(IntPtr hKey); override protected bool ReleaseHandle() { // Returns a Win32 error code, 0 for success int r = RegCloseKey(handle); return r == 0; } } } // 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
- RemoveFromCollection.cs
- ClaimComparer.cs
- BinaryNode.cs
- HyperlinkAutomationPeer.cs
- FormsAuthenticationConfiguration.cs
- EntityViewGenerationAttribute.cs
- ToolStripPanelRenderEventArgs.cs
- TransportContext.cs
- GridViewRowCollection.cs
- KeyedHashAlgorithm.cs
- DoubleUtil.cs
- MdiWindowListItemConverter.cs
- UnicastIPAddressInformationCollection.cs
- DataGridViewCellFormattingEventArgs.cs
- UnaryOperationBinder.cs
- ErrorWebPart.cs
- SupportsEventValidationAttribute.cs
- ListViewGroup.cs
- RadioButton.cs
- NameTable.cs
- CodeBlockBuilder.cs
- FilteredDataSetHelper.cs
- GeometryCombineModeValidation.cs
- EventManager.cs
- GroupBoxAutomationPeer.cs
- RectIndependentAnimationStorage.cs
- IdentityManager.cs
- LinkLabel.cs
- ObjectStorage.cs
- CacheMemory.cs
- ICollection.cs
- SizeFConverter.cs
- UIElementParagraph.cs
- WriteTimeStream.cs
- DataServiceConfiguration.cs
- HierarchicalDataBoundControlAdapter.cs
- ExtensionWindow.cs
- SchemaConstraints.cs
- StringConverter.cs
- SortedList.cs
- _AutoWebProxyScriptWrapper.cs
- PairComparer.cs
- ControlEvent.cs
- ContainerControl.cs
- DictionaryBase.cs
- RuleSettings.cs
- RemoteHelper.cs
- RC2.cs
- DataRelationCollection.cs
- DefaultEvaluationContext.cs
- SettingsSavedEventArgs.cs
- XamlNamespaceHelper.cs
- SiteMapNodeItem.cs
- securestring.cs
- ApplicationSecurityInfo.cs
- IDictionary.cs
- UniqueCodeIdentifierScope.cs
- IfAction.cs
- VoiceSynthesis.cs
- WebPartDisplayModeCancelEventArgs.cs
- CookielessHelper.cs
- Triangle.cs
- PersonalizationDictionary.cs
- FlowDocumentReaderAutomationPeer.cs
- XmlSiteMapProvider.cs
- XPathParser.cs
- BaseUriHelper.cs
- UnsafeNativeMethods.cs
- HttpListenerException.cs
- ValidationHelper.cs
- ContextMenuStripGroup.cs
- TextTrailingWordEllipsis.cs
- DefaultValidator.cs
- CallSiteHelpers.cs
- HiddenFieldPageStatePersister.cs
- XmlnsDictionary.cs
- PointCollectionConverter.cs
- CodeNamespace.cs
- DetailsViewDesigner.cs
- MailWriter.cs
- Single.cs
- SimpleBitVector32.cs
- InfoCardRSAPKCS1KeyExchangeDeformatter.cs
- DefaultSection.cs
- StylusButtonCollection.cs
- TreeWalkHelper.cs
- ContentElement.cs
- ToolBarButtonDesigner.cs
- PerformanceCounterPermissionEntryCollection.cs
- ValuePatternIdentifiers.cs
- XmlElement.cs
- HandlerBase.cs
- EdmProperty.cs
- GridItemCollection.cs
- __Filters.cs
- DataSetUtil.cs
- SubqueryRules.cs
- ObservableCollection.cs
- WebPartConnectionsEventArgs.cs
- ConfigurationValues.cs