Fix warnings on FreeBSD-based platforms
[ira/wip.git] / source3 / librpc / idl / winreg.idl
index 3ddd71ad47d38b885cc9a7c5f65b1e2c763aaabb..2f02419af50e5ed5c105f1ce093420d65d1a417c 100644 (file)
@@ -2,19 +2,27 @@
   winreg interface definition
 */
 
+import "lsa.idl", "initshutdown.idl", "security.idl";
+
 [ 
   uuid("338cd001-2244-31f1-aaaa-900038001003"),
   version(1.0),
   endpoint("ncacn_np:[\\pipe\\winreg]","ncacn_ip_tcp:","ncalrpc:"),
   pointer_default(unique),
-  pointer_default_top(unique),
-  helpstring("Remote Registry Service"),
-  depends(lsa,initshutdown,security)
+  helpstring("Remote Registry Service")
 ] interface winreg
 {
-       declare bitmap security_secinfo;
+       typedef bitmap security_secinfo security_secinfo;
 
        typedef [bitmap32bit] bitmap {
+               KEY_QUERY_VALUE                 = 0x00001,
+               KEY_SET_VALUE                   = 0x00002,
+               KEY_CREATE_SUB_KEY              = 0x00004,
+               KEY_ENUMERATE_SUB_KEYS  = 0x00008,
+               KEY_NOTIFY                              = 0x00010,
+               KEY_CREATE_LINK                 = 0x00020,
+               KEY_WOW64_64KEY                 = 0x00100,
+               KEY_WOW64_32KEY                 = 0x00200
        } winreg_AccessMask;
 
        typedef [v1_enum] enum {
@@ -41,7 +49,7 @@
        /******************/
        /* Function: 0x00 */
        WERROR winreg_OpenHKCR(
-               [in]      uint16 *system_name,
+               [in,unique] uint16 *system_name,
                [in]      winreg_AccessMask access_mask,
                [out,ref] policy_handle *handle
        );
@@ -49,7 +57,7 @@
        /******************/
        /* Function: 0x01 */
        WERROR winreg_OpenHKCU(
-               [in]      uint16 *system_name,
+               [in,unique] uint16 *system_name,
                [in]      winreg_AccessMask access_mask,
                [out,ref] policy_handle *handle
        );
@@ -57,7 +65,7 @@
        /******************/
        /* Function: 0x02 */
        WERROR winreg_OpenHKLM(
-               [in]      uint16 *system_name,
+               [in,unique] uint16 *system_name,
                [in]      winreg_AccessMask access_mask,
                [out,ref] policy_handle *handle
        );
@@ -65,7 +73,7 @@
        /******************/
        /* Function: 0x03 */
        WERROR winreg_OpenHKPD(
-               [in]      uint16 *system_name,
+               [in,unique] uint16 *system_name,
                [in]      winreg_AccessMask access_mask,
                [out,ref] policy_handle *handle
        );
@@ -73,7 +81,7 @@
        /******************/
        /* Function: 0x04 */
        WERROR winreg_OpenHKU(
-               [in]      uint16 *system_name,
+               [in,unique] uint16 *system_name,
                [in]      winreg_AccessMask access_mask,
                [out,ref] policy_handle *handle
        );
        );
 
        typedef struct {
-               [value(strlen_m_term(name)*2)] uint16 length; 
+               [value(strlen_m_term_null(name)*2)] uint16 length; 
                /* size cannot be auto-set by value() as it is the
                   amount of space the server is allowed to use for this
                   string in the reply, not its current size */
                [size_is(size/2),length_is(length/2),charset(UTF16)] uint16 *name;
        } winreg_StringBuf;
 
+       /******************/
+       /* Function: 0x09 */
        WERROR winreg_EnumKey(
                [in,ref]        policy_handle    *handle,
                [in]            uint32           enum_index,
                [in,out,unique] NTTIME           *last_changed_time
        );
 
+       typedef struct {
+               [value(strlen_m_term(name)*2)] uint16 length; 
+               /* size cannot be auto-set by value() as it is the
+                  amount of space the server is allowed to use for this
+                  string in the reply, not its current size */
+               uint16 size;
+               [size_is(size/2),length_is(length/2),charset(UTF16)] uint16 *name;
+       } winreg_ValNameBuf;
+
        /******************/
        /* Function: 0x0a */
 
        WERROR winreg_EnumValue(
                [in,ref]        policy_handle *handle,
                [in]            uint32 enum_index,
-               [in,out,ref]    winreg_StringBuf *name,
+               [in,out,ref]    winreg_ValNameBuf *name,
                [in,out,unique] winreg_Type *type,
                [in,out,unique,size_is(*size),length_is(*length)] uint8 *value,
                [in,out,unique] uint32 *size,
        /* Function: 0x0d */
        WERROR winreg_LoadKey(
                [in,ref] policy_handle *handle,
-               [in] winreg_String *keyname,
-               [in] winreg_String *filename
+               [in,unique] winreg_String *keyname,
+               [in,unique] winreg_String *filename
        );
 
        /******************/
        /* Function: 0x10 */
        WERROR winreg_QueryInfoKey(
                [in,ref] policy_handle *handle,
-               [in] winreg_String class_in,
-               [out] winreg_String *class_out,
+               [in,out,ref] winreg_String *classname,
                [out,ref] uint32 *num_subkeys,
                [out,ref] uint32 *max_subkeylen,
-               [out,ref] uint32 *max_subkeysize,
+               [out,ref] uint32 *max_classlen,
                [out,ref] uint32 *num_values,
                [out,ref] uint32 *max_valnamelen,
                [out,ref] uint32 *max_valbufsize,
        /* Function: 0x11 */
        WERROR winreg_QueryValue(
                [in,ref] policy_handle *handle,
-               [in] winreg_String value_name,
-               [in,out] winreg_Type *type,
-               [in,out,size_is(*size),length_is(*length)] uint8 **data,
-               [in,out] uint32 *size,
-               [in,out] uint32 *length
+               [in,ref] winreg_String *value_name,
+               [in,out,unique] winreg_Type *type,
+               [in,out,unique,size_is(*data_size),length_is(*value_length)] uint8 *data,
+               [in,out,unique] uint32 *data_size,
+               [in,out,unique] uint32 *value_length
        );
 
        /******************/
        /******************/
        /* Function: 0x13 */
        WERROR winreg_RestoreKey(
+               [in,ref] policy_handle *handle,
+               [in,ref] winreg_String *filename,
+               [in]     uint32 flags 
        );
 
        /******************/
        /* Function: 0x14 */
+
+       typedef struct {
+               uint32 data_size;
+               KeySecurityData sec_data;
+               uint8 inherit;
+       } KeySecurityAttribute;
+
        WERROR winreg_SaveKey(
+               [in,ref] policy_handle *handle,
+               [in,ref] winreg_String *filename,
+               [in,unique] KeySecurityAttribute *sec_attrib
        );
 
        /******************/
        WERROR winreg_SetKeySecurity(
                [in,ref] policy_handle *handle,
                [in] winreg_AccessMask access_mask,
-               [in,out,ref] KeySecurityData *sd
+               [in,ref] KeySecurityData *sd
        );
 
        /******************/
        /******************/
        /* Function: 0x18 */
        WERROR winreg_InitiateSystemShutdown(
-               [in]    uint16 *hostname,
-               [in]    initshutdown_String *message,
+               [in,unique] uint16 *hostname,
+               [in,unique] initshutdown_String *message,
                [in]    uint32 timeout,
                [in]    uint8 force_apps,
-               [in]    uint8 reboot
+               [in]    uint8 do_reboot
        );
 
        /******************/
        /* Function: 0x19 */
        WERROR winreg_AbortSystemShutdown(
-               [in]    uint16 *server
+               [in,unique] uint16 *server
        );
 
        /******************/
        /******************/
        /* Function: 0x1b */
        WERROR winreg_OpenHKCC(
-               [in]      uint16 *system_name,
+               [in,unique] uint16 *system_name,
                [in]      winreg_AccessMask access_mask,
                [out,ref] policy_handle *handle
        );
        /******************/
        /* Function: 0x1c */
        WERROR winreg_OpenHKDD(
-               [in]      uint16 *system_name,
+               [in,unique] uint16 *system_name,
                [in]      winreg_AccessMask access_mask,
                [out,ref] policy_handle *handle
        );
                [in,ref] policy_handle *key_handle, 
                [in,out,ref,size_is(num_values),length_is(num_values)] QueryMultipleValue *values,
                [in] uint32 num_values,
-               [in,out,size_is(*buffer_size),length_is(*buffer_size)] uint8 *buffer,
+               [in,out,unique,size_is(*buffer_size),length_is(*buffer_size)] uint8 *buffer,
                [in,out,ref] uint32 *buffer_size
        );
 
        /******************/
        /* Function: 0x1e */
        WERROR winreg_InitiateSystemShutdownEx(
-               [in] uint16 *hostname,
-               [in] initshutdown_String *message,
+               [in,unique] uint16 *hostname,
+               [in,unique] initshutdown_String *message,
                [in] uint32 timeout,
                [in] uint8 force_apps,
-               [in] uint8 reboot,
+               [in] uint8 do_reboot,
                [in] uint32 reason
        );
 
        /******************/
        /* Function: 0x20 */
        WERROR winreg_OpenHKPT(
-               [in]      uint16 *system_name,
+               [in,unique] uint16 *system_name,
                [in]      winreg_AccessMask access_mask,
                [out,ref] policy_handle *handle
        );
        /******************/
        /* Function: 0x21 */
        WERROR winreg_OpenHKPN(
-               [in]      uint16 *system_name,
+               [in,unique] uint16 *system_name,
                [in]      winreg_AccessMask access_mask,
                [out,ref] policy_handle *handle
        );