fix a typo
[tprouty/samba.git] / source / include / rpc_reg.h
index 59684a5b5e91c1ef5a7bc45621f9d40619d5bd9a..c454a1d6f949d3ff02fff095bb35de49e72b7953 100644 (file)
@@ -25,8 +25,6 @@
 #ifndef _RPC_REG_H /* _RPC_REG_H */
 #define _RPC_REG_H 
 
-#include "reg_objects.h"
-
 /* RPC opnum */
 
 #define REG_OPEN_HKCR          0x00
@@ -34,7 +32,7 @@
 #define REG_OPEN_HKPD          0x03
 #define REG_OPEN_HKU           0x04
 #define REG_CLOSE              0x05
-#define REG_CREATE_KEY         0x06
+#define REG_CREATE_KEY_EX      0x06
 #define REG_DELETE_KEY         0x07
 #define REG_DELETE_VALUE       0x08
 #define REG_ENUM_KEY           0x09
 #define REG_GET_KEY_SEC                0x0c
 #define REG_OPEN_ENTRY         0x0f
 #define REG_QUERY_KEY          0x10
-#define REG_INFO               0x11
+#define REG_QUERY_VALUE                0x11
 #define REG_RESTORE_KEY                0x13
 #define REG_SAVE_KEY           0x14
 #define REG_SET_KEY_SEC                0x15
 #define REG_SET_VALUE          0x16
 #define REG_SHUTDOWN           0x18
 #define REG_ABORT_SHUTDOWN     0x19
+#define REG_OPEN_HKPT          0x20
 #define REG_GETVERSION         0x1a
 #define REG_SHUTDOWN_EX                0x1e
 
 #define KEY_HKLM               "HKLM"
 #define KEY_HKU                        "HKU"
 #define KEY_HKCR               "HKCR"
+#define KEY_HKPD               "HKPD"
+#define KEY_HKPT               "HKPT"
+#define KEY_SERVICES           "HKLM\\SYSTEM\\CurrentControlSet\\Services"
 #define KEY_PRINTING           "HKLM\\SYSTEM\\CurrentControlSet\\Control\\Print"
-#define KEY_PRINTING_2K                "HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Print"
+#define KEY_PRINTING_2K                "HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Print\\Printers"
 #define KEY_PRINTING_PORTS     "HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Ports"
 #define KEY_EVENTLOG           "HKLM\\SYSTEM\\CurrentControlSet\\Services\\Eventlog"
 #define KEY_SHARES             "HKLM\\SYSTEM\\CurrentControlSet\\Services\\LanmanServer\\Shares"
 #define REG_FULL_RESOURCE_DESCRIPTOR   9
 #define REG_RESOURCE_REQUIREMENTS_LIST 10
 
+/*
+ * Registry key types
+ *     Most keys are going to be GENERIC -- may need a better name?
+ *     HKPD and HKPT are used by reg_perfcount.c
+ *             they are special keys that contain performance data
+ */
+#define REG_KEY_GENERIC                0
+#define REG_KEY_HKPD           1
+#define REG_KEY_HKPT           2
+
 /* 
  * container for function pointers to enumeration routines
- * for vitural registry view 
+ * for virtual registry view 
  */ 
  
 typedef struct {
        /* functions for enumerating subkeys and values */      
-       int     (*subkey_fn)( char *key, REGSUBKEY_CTR *subkeys);
-       int     (*value_fn) ( char *key, REGVAL_CTR *val );
-       BOOL    (*store_subkeys_fn)( char *key, REGSUBKEY_CTR *subkeys );
-       BOOL    (*store_values_fn)( char *key, REGVAL_CTR *val );
+       int     (*fetch_subkeys)( const char *key, REGSUBKEY_CTR *subkeys);
+       int     (*fetch_values) ( const char *key, REGVAL_CTR *val );
+       BOOL    (*store_subkeys)( const char *key, REGSUBKEY_CTR *subkeys );
+       BOOL    (*store_values)( const char *key, REGVAL_CTR *val );
+       BOOL    (*reg_access_check)( const char *keyname, uint32 requested, uint32 *granted, NT_USER_TOKEN *token );
 } REGISTRY_OPS;
 
 typedef struct {
@@ -107,13 +120,10 @@ typedef struct {
 /* structure to store the registry handles */
 
 typedef struct _RegistryKey {
-
-       struct _RegistryKey *prev, *next;
-
-       /* POLICY_HND   hnd; */
-       pstring         name;   /* full name of registry key */
-       REGISTRY_HOOK   *hook;
-       
+       uint32          type;
+       char            *name;          /* full name of registry key */
+       uint32          access_granted;
+       REGISTRY_HOOK   *hook;  
 } REGISTRY_KEY;
 
 /*
@@ -147,7 +157,7 @@ typedef struct {
 /***********************************************/
 
 typedef struct {
-       POLICY_HND pol;
+       POLICY_HND handle;
        uint32 sec_info;
        uint32 ptr; 
        BUFHDR hdr_sec;
@@ -162,7 +172,7 @@ typedef struct {
 /***********************************************/
 
 typedef struct {
-       POLICY_HND pol;
+       POLICY_HND handle;
        uint32 sec_info;
        uint32 ptr; 
        BUFHDR hdr_sec; 
@@ -180,7 +190,7 @@ typedef struct {
 /***********************************************/
 
 typedef struct {
-       POLICY_HND pol;   
+       POLICY_HND handle;   
        UNISTR4 name;           
        uint32 type;  
        RPC_DATA_BLOB value; 
@@ -215,46 +225,47 @@ typedef struct {
 /***********************************************/
 
 typedef struct {
-       POLICY_HND pnt_pol;
+       POLICY_HND handle;
        UNISTR4 name;
-       UNISTR4 class;
-       uint32 reserved;
+       UNISTR4 key_class;
+       uint32 options;
        uint32 access;
+       
+       /* FIXME!  collapse all this into one structure */
        uint32 *sec_info;
        uint32 ptr2;
        BUFHDR hdr_sec;
        uint32 ptr3;
        SEC_DESC_BUF *data;
-       uint32 unknown_2; /* 0x0000 0000 */
-} REG_Q_CREATE_KEY;
+
+       uint32 *disposition; 
+} REG_Q_CREATE_KEY_EX;
 
 typedef struct {
-       POLICY_HND key_pol;
-       uint32 unknown;
+       POLICY_HND handle;
+       uint32 disposition;
        WERROR status; 
-} REG_R_CREATE_KEY;
+} REG_R_CREATE_KEY_EX;
 
 /***********************************************/
 
 typedef struct {
-       POLICY_HND pnt_pol;
+       POLICY_HND handle;
        UNISTR4 name;
 } REG_Q_DELETE_KEY;
 
 typedef struct {
-       POLICY_HND key_pol;
        WERROR status; 
 } REG_R_DELETE_KEY;
 
 /***********************************************/
 
 typedef struct {
-       POLICY_HND pnt_pol;
+       POLICY_HND handle;
        UNISTR4 name;
 } REG_Q_DELETE_VALUE;
 
 typedef struct {
-       POLICY_HND key_pol;
        WERROR status;
 } REG_R_DELETE_VALUE;
 
@@ -262,11 +273,11 @@ typedef struct {
 
 typedef struct {
        POLICY_HND pol;
-       UNISTR4 class;
+       UNISTR4 key_class;
 } REG_Q_QUERY_KEY;
 
 typedef struct {
-       UNISTR4 class;
+       UNISTR4 key_class;
        uint32 num_subkeys;
        uint32 max_subkeylen;
        uint32 reserved;        /* 0x0000 0000 - according to MSDN (max_subkeysize?) */
@@ -282,12 +293,12 @@ typedef struct {
 /***********************************************/
 
 typedef struct {
-       POLICY_HND pol;       /* policy handle */
+       POLICY_HND pol;
 } REG_Q_GETVERSION;
 
 typedef struct {
-       uint32 unknown;         /* 0x0500 0000 */
-       WERROR status;         /* return status */
+       uint32 win_version;
+       WERROR status;
 } REG_R_GETVERSION;
 
 
@@ -390,7 +401,7 @@ typedef struct {
        uint32 ptr_buflen2;
        uint32 buflen2;
 
-} REG_Q_INFO;
+} REG_Q_QUERY_VALUE;
 
 typedef struct { 
        uint32 *type;
@@ -398,7 +409,7 @@ typedef struct {
        uint32 *buf_max_len;
        uint32 *buf_len;
        WERROR status;  /* return status */
-} REG_R_INFO;
+} REG_R_QUERY_VALUE;
 
 
 /***********************************************/
@@ -411,7 +422,7 @@ typedef struct {
 } REG_Q_OPEN_ENTRY;
 
 typedef struct {
-       POLICY_HND pol;
+       POLICY_HND handle;
        WERROR status;
 } REG_R_OPEN_ENTRY;