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
13 #define CM_KEY_INDEX_ROOT 0x6972 // "ri"
14 #define CM_KEY_INDEX_LEAF 0x696C // "li"
15 #define CM_KEY_FAST_LEAF 0x666C // "lf"
16 #define CM_KEY_HASH_LEAF 0x686C // "lh"
21 #define CM_KEY_NODE_SIGNATURE 0x6B6E // "nk"
22 #define CM_LINK_NODE_SIGNATURE 0x6B6C // "lk"
23 #define CM_KEY_SECURITY_SIGNATURE 0x6B73 // "sk"
24 #define CM_KEY_VALUE_SIGNATURE 0x6B76 // "vk"
25 #define CM_BIG_DATA_SIGNATURE 0x6264 // "db"
30 #define KEY_IS_VOLATILE 0x0001
31 #define KEY_HIVE_EXIT 0x0002
32 #define KEY_HIVE_ENTRY 0x0004
33 #define KEY_NO_DELETE 0x0008
34 #define KEY_SYM_LINK 0x0010
35 #define KEY_COMP_NAME 0x0020
36 #define KEY_PREDEF_HANDLE 0x0040
37 #define KEY_VIRT_MIRRORED 0x0080
38 #define KEY_VIRT_TARGET 0x0100
39 #define KEY_VIRTUAL_STORE 0x0200
44 #define VALUE_COMP_NAME 0x0001
49 #define CM_KEY_VALUE_SMALL 0x4
50 #define CM_KEY_VALUE_BIG 0x3FD8
51 #define CM_KEY_VALUE_SPECIAL_SIZE 0x80000000
56 // For memory-mapped Hives
58 typedef struct _CM_VIEW_OF_FILE
60 LIST_ENTRY LRUViewList
;
61 LIST_ENTRY PinViewList
;
64 PULONG_PTR ViewAddress
;
67 } CM_VIEW_OF_FILE
, *PCM_VIEW_OF_FILE
;
70 // Children of Key Nodes
72 typedef struct _CHILD_LIST
76 } CHILD_LIST
, *PCHILD_LIST
;
79 // Node Key Reference to Parents
81 typedef struct _CM_KEY_REFERENCE
85 } CM_KEY_REFERENCE
, *PCM_KEY_REFERENCE
;
90 typedef struct _CM_KEY_NODE
94 LARGE_INTEGER LastWriteTime
;
97 ULONG SubKeyCounts
[HTYPE_COUNT
];
102 HCELL_INDEX SubKeyLists
[HTYPE_COUNT
];
103 CHILD_LIST ValueList
;
105 CM_KEY_REFERENCE ChildHiveReference
;
107 HCELL_INDEX Security
;
111 ULONG MaxValueNameLen
;
112 ULONG MaxValueDataLen
;
116 WCHAR Name
[ANYSIZE_ARRAY
];
117 } CM_KEY_NODE
, *PCM_KEY_NODE
;
122 typedef struct _CM_KEY_VALUE
131 WCHAR Name
[ANYSIZE_ARRAY
];
132 } CM_KEY_VALUE
, *PCM_KEY_VALUE
;
137 typedef struct _CM_KEY_SECURITY
143 ULONG ReferenceCount
;
144 ULONG DescriptorLength
;
145 SECURITY_DESCRIPTOR_RELATIVE Descriptor
;
146 } CM_KEY_SECURITY
, *PCM_KEY_SECURITY
;
151 typedef struct _CM_BIG_DATA
156 } CM_BIG_DATA
, *PCM_BIG_DATA
;
161 // Generic Index Entry
163 typedef struct _CM_INDEX
171 } CM_INDEX
, *PCM_INDEX
;
176 typedef struct _CM_KEY_INDEX
180 HCELL_INDEX List
[ANYSIZE_ARRAY
];
181 } CM_KEY_INDEX
, *PCM_KEY_INDEX
;
184 // Fast/Hash Key Index
186 typedef struct _CM_KEY_FAST_INDEX
190 CM_INDEX List
[ANYSIZE_ARRAY
];
191 } CM_KEY_FAST_INDEX
, *PCM_KEY_FAST_INDEX
;
196 typedef struct _CELL_DATA
201 CM_KEY_VALUE KeyValue
;
202 CM_KEY_SECURITY KeySecurity
;
203 CM_KEY_INDEX KeyIndex
;
204 CM_BIG_DATA ValueData
;
205 HCELL_INDEX KeyList
[ANYSIZE_ARRAY
];
206 WCHAR KeyString
[ANYSIZE_ARRAY
];
208 } CELL_DATA
, *PCELL_DATA
;