File: SafeRegistryHandle.cs

package info (click to toggle)
mono 6.12.0.199%2Bdfsg-6
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 1,296,836 kB
  • sloc: cs: 11,181,803; xml: 2,850,076; ansic: 699,709; cpp: 123,344; perl: 59,361; javascript: 30,841; asm: 21,853; makefile: 20,405; sh: 15,009; python: 4,839; pascal: 925; sql: 859; sed: 16; php: 1
file content (32 lines) | stat: -rw-r--r-- 1,062 bytes parent folder | download | duplicates (7)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
// <copyright file="SafeRegistryHandle.cs" company="Microsoft">
//   Copyright (c) 2009 Microsoft Corporation.  All rights reserved.
// </copyright>
using Microsoft.Win32;
using Microsoft.Win32.SafeHandles;
using System;
using System.Security;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;

namespace System.Runtime.Caching {
    [SecurityCritical]
    internal 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.
        
        [ResourceExposure(ResourceScope.Machine)]
        internal SafeRegistryHandle() : base(true) {}
        
        [SecurityCritical]
        protected override bool ReleaseHandle() {
            // Returns a Win32 error code, 0 for success
#if MONO
            throw new NotImplementedException ();
#else
            int r = UnsafeNativeMethods.RegCloseKey(handle);
            return r == 0;
#endif
        }
    }
}