2 * PROJECT: registry manipulation library
3 * LICENSE: GPL - See COPYING in the top level directory
4 * COPYRIGHT: Copyright 2005 Filip Navara <navaraf@reactos.org>
5 * Copyright 2001 - 2005 Eric Kohl
10 #define REG_INIT_BLOCK_LIST_SIZE 32
11 #define REG_INIT_HASH_TABLE_SIZE 3
12 #define REG_EXTEND_HASH_TABLE_SIZE 4
13 #define REG_VALUE_LIST_CELL_MULTIPLE 4
14 #define REG_DATA_SIZE_MASK 0x7FFFFFFF
15 #define REG_DATA_IN_OFFSET 0x80000000
20 #define CM_KEY_INDEX_ROOT 0x6972
21 #define CM_KEY_INDEX_LEAF 0x696c
22 #define CM_KEY_FAST_LEAF 0x666c
23 #define CM_KEY_HASH_LEAF 0x686c
28 #define CM_KEY_NODE_SIGNATURE 0x6B6E
29 #define CM_LINK_NODE_SIGNATURE 0x6B6C
30 #define CM_KEY_VALUE_SIGNATURE 0x6B76
35 #define KEY_IS_VOLATILE 0x01
36 #define KEY_HIVE_EXIT 0x02
37 #define KEY_HIVE_ENTRY 0x04
38 #define KEY_NO_DELETE 0x08
39 #define KEY_SYM_LINK 0x10
40 #define KEY_COMP_NAME 0x20
41 #define KEY_PREFEF_HANDLE 0x40
42 #define KEY_VIRT_MIRRORED 0x80
43 #define KEY_VIRT_TARGET 0x100
44 #define KEY_VIRTUAL_STORE 0x200
49 #define VALUE_COMP_NAME 0x0001
54 // For memory-mapped Hives
56 typedef struct _CM_VIEW_OF_FILE
58 LIST_ENTRY LRUViewList
;
59 LIST_ENTRY PinViewList
;
62 PULONG_PTR ViewAddress
;
65 } CM_VIEW_OF_FILE
, *PCM_VIEW_OF_FILE
;
68 // Children of Key Notes
70 typedef struct _CHILD_LIST
74 } CHILD_LIST
, *PCHILD_LIST
;
77 // Node Key Reference to Parents
79 typedef struct _CM_KEY_REFERENCE
83 } CM_KEY_REFERENCE
, *PCM_KEY_REFERENCE
;
88 typedef struct _CM_KEY_NODE
92 LARGE_INTEGER LastWriteTime
;
95 ULONG SubKeyCounts
[HTYPE_COUNT
];
100 HCELL_INDEX SubKeyLists
[HTYPE_COUNT
];
101 CHILD_LIST ValueList
;
103 CM_KEY_REFERENCE ChildHiveReference
;
105 HCELL_INDEX Security
;
109 ULONG MaxValueNameLen
;
110 ULONG MaxValueDataLen
;
114 WCHAR Name
[ANYSIZE_ARRAY
];
115 } CM_KEY_NODE
, *PCM_KEY_NODE
;
120 typedef struct _VALUE_LIST_CELL
122 HCELL_INDEX ValueOffset
[ANYSIZE_ARRAY
];
123 } VALUE_LIST_CELL
, *PVALUE_LIST_CELL
;
128 typedef struct _CM_KEY_VALUE
137 WCHAR Name
[ANYSIZE_ARRAY
];
138 } CM_KEY_VALUE
, *PCM_KEY_VALUE
;
143 typedef struct _CM_KEY_SECURITY
149 ULONG ReferenceCount
;
150 ULONG DescriptorLength
;
151 //SECURITY_DESCRIPTOR_RELATIVE Descriptor;
152 UCHAR Data
[ANYSIZE_ARRAY
];
153 } CM_KEY_SECURITY
, *PCM_KEY_SECURITY
;
158 // Generic Index Entry
160 typedef struct _CM_INDEX
168 } CM_INDEX
, *PCM_INDEX
;
173 typedef struct _CM_KEY_INDEX
177 HCELL_INDEX List
[ANYSIZE_ARRAY
];
178 } CM_KEY_INDEX
, *PCM_KEY_INDEX
;
181 // Fast/Hash Key Index
183 typedef struct _CM_KEY_FAST_INDEX
187 CM_INDEX List
[ANYSIZE_ARRAY
];
188 } CM_KEY_FAST_INDEX
, *PCM_KEY_FAST_INDEX
;
193 typedef struct _CELL_DATA
198 CM_KEY_VALUE KeyValue
;
199 CM_KEY_SECURITY KeySecurity
;
200 CM_KEY_INDEX KeyIndex
;
201 HCELL_INDEX KeyList
[ANYSIZE_ARRAY
];
202 WCHAR KeyString
[ANYSIZE_ARRAY
];
204 } CELL_DATA
, *PCELL_DATA
;