[SHELL32]
[reactos.git] / reactos / tools / mkhive / registry.h
1 /* COPYRIGHT: See COPYING in the top level directory
2 * PROJECT: ReactOS hive maker
3 * FILE: tools/mkhive/registry.h
4 * PURPOSE: Registry code
5 */
6
7 #pragma once
8
9 typedef struct _REG_VALUE
10 {
11 LIST_ENTRY ValueList;
12
13 /* value name */
14 ULONG NameSize;
15 PCHAR Name;
16
17 /* value data */
18 ULONG DataType;
19 ULONG DataSize;
20 PCHAR Data;
21 } VALUE, *PVALUE;
22
23 typedef struct _REG_KEY
24 {
25 LIST_ENTRY KeyList;
26 LIST_ENTRY SubKeyList;
27 LIST_ENTRY ValueList;
28
29 ULONG SubKeyCount;
30 ULONG ValueCount;
31
32 ULONG NameSize;
33 PWCHAR Name;
34
35 /* default data */
36 ULONG DataType;
37 ULONG DataSize;
38 PCHAR Data;
39
40 /* Information on hard disk structure */
41 HCELL_INDEX KeyCellOffset;
42 PCM_KEY_NODE KeyCell;
43 PCMHIVE RegistryHive;
44
45 /* Used when linking to another key */
46 struct _REG_KEY* LinkedKey;
47 } KEY, *FRLDRHKEY, **PFRLDRHKEY, *MEMKEY, **PMEMKEY;
48
49 #define HKEY_TO_MEMKEY(hKey) ((MEMKEY)(hKey))
50 #define MEMKEY_TO_HKEY(memKey) ((HKEY)(memKey))
51
52 extern CMHIVE DefaultHive; /* \Registry\User\.DEFAULT */
53 extern CMHIVE SamHive; /* \Registry\Machine\SAM */
54 extern CMHIVE SecurityHive; /* \Registry\Machine\SECURITY */
55 extern CMHIVE SoftwareHive; /* \Registry\Machine\SOFTWARE */
56 extern CMHIVE SystemHive; /* \Registry\Machine\SYSTEM */
57
58 #define ERROR_SUCCESS 0L
59 #define ERROR_UNSUCCESSFUL 1L
60 #define ERROR_OUTOFMEMORY 14L
61 #define ERROR_INVALID_PARAMETER 87L
62 #define ERROR_MORE_DATA 234L
63 #define ERROR_NO_MORE_ITEMS 259L
64
65 #define REG_NONE 0
66 #define REG_SZ 1
67 #define REG_EXPAND_SZ 2
68 #define REG_BINARY 3
69 #define REG_DWORD 4
70 #define REG_DWORD_BIG_ENDIAN 5
71 #define REG_DWORD_LITTLE_ENDIAN 4
72 #define REG_LINK 6
73 #define REG_MULTI_SZ 7
74 #define REG_RESOURCE_LIST 8
75 #define REG_FULL_RESOURCE_DESCRIPTOR 9
76 #define REG_RESOURCE_REQUIREMENTS_LIST 10
77
78 LONG WINAPI
79 RegCreateKeyA(
80 IN HKEY hKey,
81 IN LPCSTR lpSubKey,
82 OUT PHKEY phkResult);
83
84 LONG WINAPI
85 RegOpenKeyA(
86 IN HKEY hKey,
87 IN LPCSTR lpSubKey,
88 OUT PHKEY phkResult);
89
90 LONG WINAPI
91 RegQueryValueExA(HKEY Key,
92 LPCSTR ValueName,
93 PULONG Reserved,
94 PULONG Type,
95 PUCHAR Data,
96 PSIZE_T DataSize);
97
98 LONG WINAPI
99 RegSetValueExA(
100 IN HKEY hKey,
101 IN LPCSTR lpValueName OPTIONAL,
102 ULONG Reserved,
103 IN ULONG dwType,
104 IN const UCHAR* lpData,
105 IN ULONG cbData);
106
107 LONG WINAPI
108 RegDeleteValueA(HKEY Key,
109 LPCSTR ValueName);
110
111 LONG WINAPI
112 RegDeleteKeyA(HKEY Key,
113 LPCSTR Name);
114
115 USHORT
116 RegGetSubKeyCount (HKEY Key);
117
118 ULONG
119 RegGetValueCount (HKEY Key);
120
121 VOID
122 RegInitializeRegistry(VOID);
123
124 VOID
125 RegShutdownRegistry(VOID);
126
127 /* EOF */