diff options
Diffstat (limited to 'src/mscorlib/src/Microsoft/Win32/SafeHandles/SafeRegistryHandle.cs')
-rw-r--r-- | src/mscorlib/src/Microsoft/Win32/SafeHandles/SafeRegistryHandle.cs | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/src/mscorlib/src/Microsoft/Win32/SafeHandles/SafeRegistryHandle.cs b/src/mscorlib/src/Microsoft/Win32/SafeHandles/SafeRegistryHandle.cs new file mode 100644 index 0000000000..d0e3f048f2 --- /dev/null +++ b/src/mscorlib/src/Microsoft/Win32/SafeHandles/SafeRegistryHandle.cs @@ -0,0 +1,41 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +// +// +// +// Implements Microsoft.Win32.SafeHandles.SafeRegistryHandle +// +// ====================================================================================== +namespace Microsoft.Win32.SafeHandles { + using System; + using System.Security; + using System.Security.Permissions; + using System.Runtime.InteropServices; + using System.Runtime.CompilerServices; + using System.Runtime.ConstrainedExecution; + using System.Runtime.Versioning; + + [System.Security.SecurityCritical] + public sealed class SafeRegistryHandle : SafeHandleZeroOrMinusOneIsInvalid { + [System.Security.SecurityCritical] + internal SafeRegistryHandle() : base(true) {} + + [System.Security.SecurityCritical] + public SafeRegistryHandle(IntPtr preexistingHandle, bool ownsHandle) : base(ownsHandle) { + SetHandle(preexistingHandle); + } + + [System.Security.SecurityCritical] + override protected bool ReleaseHandle() { + return (RegCloseKey(handle) == Win32Native.ERROR_SUCCESS); + } + + [DllImport(Win32Native.ADVAPI32)] + [SuppressUnmanagedCodeSecurity] + [ReliabilityContract(Consistency.WillNotCorruptState, Cer.Success)] + internal static extern int RegCloseKey(IntPtr hKey); + } +} + |