Merge pull request #697 from linquize/atom-bug
[mono.git] / mcs / class / corlib / Microsoft.Win32 / IRegistryApi.cs
index 070c3a02f649f86e244800fbc58aaa9cdaba6621..31a4dc681400e7d48ea4c16bb79ae5fa992f3153 100644 (file)
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
+#if !NET_2_1
+
 using System;
 using System.Text;
 using System.Runtime.InteropServices;
+using Microsoft.Win32.SafeHandles;
 
 namespace Microsoft.Win32 {
 
        internal interface IRegistryApi {
+               RegistryKey CreateSubKey (RegistryKey rkey, string keyname);
+               RegistryKey OpenRemoteBaseKey (RegistryHive hKey, string machineName);
+               RegistryKey OpenSubKey (RegistryKey rkey, string keyname, bool writtable);
+               void Flush (RegistryKey rkey);
+               void Close (RegistryKey rkey);
+
+               object GetValue (RegistryKey rkey, string name, object default_value, RegistryValueOptions options);
+               RegistryValueKind GetValueKind (RegistryKey rkey, string name);
+               void SetValue (RegistryKey rkey, string name, object value);
+
+               int SubKeyCount (RegistryKey rkey);
+               int ValueCount (RegistryKey rkey);
                
-               int OpenRegKeyRead { get; }
-               int OpenRegKeyWrite { get; }
-
-               
-               // type values for registry value data
-               int RegStringType { get; }
-               int RegEnvironmentString { get; }
-               int RegBinaryType { get; }
-               int RegDwordType { get; }
-               int RegStringArrayType { get; } 
-
-               int RegCreateKey (IntPtr keyBase,
-                               string keyName, out IntPtr keyHandle);          
-
-               int RegCloseKey (IntPtr keyHandle);
-
-               int RegFlushKey (IntPtr keyHandle);
-
-               int RegOpenKeyEx (IntPtr keyBase,
-                               string keyName, IntPtr reserved, int access,
-                               out IntPtr keyHandle);
-
-               int RegDeleteKey (IntPtr keyHandle, 
-                               string valueName);
-
-               int RegDeleteValue (IntPtr keyHandle, 
-                               string valueName);
-
-               int RegEnumKey (IntPtr keyBase, int index,
-                               [Out] byte[] nameBuffer, int bufferLength);
-       
-               int RegEnumValue (IntPtr keyBase, 
-                               int index, StringBuilder nameBuffer, 
-                               ref int nameLength, IntPtr reserved, 
-                               ref int type, IntPtr data, IntPtr dataLength);
-
-               int RegSetValueEx (IntPtr keyBase, 
-                               string valueName, IntPtr reserved, int type,
-                               StringBuilder data, int rawDataLength);
-
-               int RegSetValueEx (IntPtr keyBase, 
-                               string valueName, IntPtr reserved, int type,
-                               string data, int rawDataLength);
-
-               int RegSetValueEx (IntPtr keyBase, 
-                               string valueName, IntPtr reserved, int type,
-                               byte[] rawData, int rawDataLength);
-
-               int RegSetValueEx (IntPtr keyBase, 
-                               string valueName, IntPtr reserved, int type,
-                               ref int data, int rawDataLength);
-
-               int RegQueryValueEx (IntPtr keyBase,
-                               string valueName, IntPtr reserved, ref int type,
-                               IntPtr zero, ref int dataSize);
-               
-               int RegQueryValueEx (IntPtr keyBase,
-                               string valueName, IntPtr reserved, ref int type,
-                               [Out] byte[] data, ref int dataSize);
-
-               int RegQueryValueEx (IntPtr keyBase,
-                               string valueName, IntPtr reserved, ref int type,
-                               ref int data, ref int dataSize);
+               void DeleteValue (RegistryKey rkey, string value, bool throw_if_missing);
+               void DeleteKey (RegistryKey rkey, string keyName, bool throw_if_missing);
+               string [] GetSubKeyNames (RegistryKey rkey);
+               string [] GetValueNames (RegistryKey rkey);
+               string ToString (RegistryKey rkey);
+
+               void SetValue (RegistryKey rkey, string name, object value, RegistryValueKind valueKind);
+
+#if NET_4_0
+               RegistryKey CreateSubKey (RegistryKey rkey, string keyname, RegistryOptions options);
+               RegistryKey FromHandle (SafeRegistryHandle handle);
+               IntPtr GetHandle (RegistryKey key);
+#endif
        }
 }
 
+#endif // NET_2_1
+