Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / 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
- MethodBody.cs
- X509CertificateRecipientServiceCredential.cs
- ToolStripPanelSelectionBehavior.cs
- EventKeyword.cs
- TextViewBase.cs
- BinaryMessageFormatter.cs
- _PooledStream.cs
- PointLight.cs
- IsolatedStorage.cs
- ListControlConvertEventArgs.cs
- DefaultCommandConverter.cs
- CodeVariableReferenceExpression.cs
- DateTimeConverter.cs
- DataGridViewToolTip.cs
- Rect.cs
- Utility.cs
- PreviewControlDesigner.cs
- CreateUserWizardDesigner.cs
- TextElementEditingBehaviorAttribute.cs
- StylusOverProperty.cs
- RecipientServiceModelSecurityTokenRequirement.cs
- UserControlFileEditor.cs
- XmlSchemaImporter.cs
- EntityProviderFactory.cs
- DummyDataSource.cs
- CodeTypeMemberCollection.cs
- GroupAggregateExpr.cs
- Cloud.cs
- ValidatedControlConverter.cs
- SqlProcedureAttribute.cs
- SafeEventLogWriteHandle.cs
- InfocardInteractiveChannelInitializer.cs
- EntityContainerEmitter.cs
- TextChangedEventArgs.cs
- EncoderNLS.cs
- InvokeMethodActivityDesigner.cs
- DefaultValueTypeConverter.cs
- TabItemAutomationPeer.cs
- SoapFormatter.cs
- ParameterElement.cs
- Constants.cs
- WebPartDisplayModeCollection.cs
- FormatStringEditor.cs
- HebrewCalendar.cs
- NotConverter.cs
- XmlEntityReference.cs
- ETagAttribute.cs
- ScrollProviderWrapper.cs
- ConnectionProviderAttribute.cs
- XmlAnyElementAttributes.cs
- SelectionRange.cs
- SqlDataSourceCustomCommandEditor.cs
- MetaTable.cs
- HttpListenerContext.cs
- ClientRuntimeConfig.cs
- XPathDocumentNavigator.cs
- DictionaryManager.cs
- HttpHandlerAction.cs
- DesignTimeTemplateParser.cs
- SqlDataSourceCustomCommandEditor.cs
- Or.cs
- ProfileSection.cs
- Point4D.cs
- ToolStripLocationCancelEventArgs.cs
- safex509handles.cs
- LongSumAggregationOperator.cs
- CloudCollection.cs
- VariableElement.cs
- SortAction.cs
- FieldAccessException.cs
- SchemaTypeEmitter.cs
- ViewStateModeByIdAttribute.cs
- BooleanAnimationBase.cs
- PageVisual.cs
- XmlAttributeProperties.cs
- HyperLinkField.cs
- ActiveXHelper.cs
- Transactions.cs
- translator.cs
- TempFiles.cs
- RadioButton.cs
- WebPartDescriptionCollection.cs
- XmlSchemaGroup.cs
- WindowsListViewSubItem.cs
- ClonableStack.cs
- Encoding.cs
- SectionInformation.cs
- PageContentCollection.cs
- AnnotationHighlightLayer.cs
- DictionarySectionHandler.cs
- RPIdentityRequirement.cs
- EventLogPropertySelector.cs
- WizardSideBarListControlItem.cs
- EventHandlersStore.cs
- OpenFileDialog.cs
- AutomationEvent.cs
- FilteredDataSetHelper.cs
- TextEvent.cs
- EventSinkHelperWriter.cs
- XmlNamespaceManager.cs