RegQueryValueEx() private méthode

private RegQueryValueEx ( IntPtr keyBase, string valueName, IntPtr reserved, RegistryValueKind &type, IntPtr zero, int &dataSize ) : int
keyBase System.IntPtr
valueName string
reserved System.IntPtr
type RegistryValueKind
zero System.IntPtr
dataSize int
Résultat int
        private int GetBinaryValue(RegistryKey rkey, string name, RegistryValueKind type, out byte[] data, int size)
        {
            byte[] array  = new byte[size];
            IntPtr handle = Win32RegistryApi.GetHandle(rkey);
            int    result = Win32RegistryApi.RegQueryValueEx(handle, name, IntPtr.Zero, ref type, array, ref size);

            data = array;
            return(result);
        }
        public object GetValue(RegistryKey rkey, string name, object defaultValue, RegistryValueOptions options)
        {
            RegistryValueKind registryValueKind = RegistryValueKind.Unknown;
            int    size   = 0;
            IntPtr handle = Win32RegistryApi.GetHandle(rkey);
            int    num    = Win32RegistryApi.RegQueryValueEx(handle, name, IntPtr.Zero, ref registryValueKind, IntPtr.Zero, ref size);

            if (num == 2 || num == 1018)
            {
                return(defaultValue);
            }
            if (num != 234 && num != 0)
            {
                this.GenerateException(num);
            }
            object obj;

            if (registryValueKind == RegistryValueKind.String)
            {
                byte[] data;
                num = this.GetBinaryValue(rkey, name, registryValueKind, out data, size);
                obj = RegistryKey.DecodeString(data);
            }
            else if (registryValueKind == RegistryValueKind.ExpandString)
            {
                byte[] data2;
                num = this.GetBinaryValue(rkey, name, registryValueKind, out data2, size);
                obj = RegistryKey.DecodeString(data2);
                if ((options & RegistryValueOptions.DoNotExpandEnvironmentNames) == RegistryValueOptions.None)
                {
                    obj = Environment.ExpandEnvironmentVariables((string)obj);
                }
            }
            else if (registryValueKind == RegistryValueKind.DWord)
            {
                int num2 = 0;
                num = Win32RegistryApi.RegQueryValueEx(handle, name, IntPtr.Zero, ref registryValueKind, ref num2, ref size);
                obj = num2;
            }
            else if (registryValueKind == RegistryValueKind.Binary)
            {
                byte[] array;
                num = this.GetBinaryValue(rkey, name, registryValueKind, out array, size);
                obj = array;
            }
            else
            {
                if (registryValueKind != RegistryValueKind.MultiString)
                {
                    throw new SystemException();
                }
                obj = null;
                byte[] data3;
                num = this.GetBinaryValue(rkey, name, registryValueKind, out data3, size);
                if (num == 0)
                {
                    obj = RegistryKey.DecodeString(data3).Split(new char[1]);
                }
            }
            if (num != 0)
            {
                this.GenerateException(num);
            }
            return(obj);
        }