[MKHIVE] Implement and use RegCloseKey().
[reactos.git] / sdk / tools / mkhive / registry.h
1 /*
2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS hive maker
4 * FILE: tools/mkhive/registry.h
5 * PURPOSE: Registry code
6 */
7
8 #pragma once
9
10 typedef struct _REPARSE_POINT
11 {
12 LIST_ENTRY ListEntry;
13 PCMHIVE SourceHive;
14 HCELL_INDEX SourceKeyCellOffset;
15 PCMHIVE DestinationHive;
16 HCELL_INDEX DestinationKeyCellOffset;
17 } REPARSE_POINT, *PREPARSE_POINT;
18
19 typedef struct _MEMKEY
20 {
21 /* Information on hard disk structure */
22 HCELL_INDEX KeyCellOffset;
23 PCMHIVE RegistryHive;
24 } MEMKEY, *PMEMKEY;
25
26 #define HKEY_TO_MEMKEY(hKey) ((PMEMKEY)(hKey))
27 #define MEMKEY_TO_HKEY(memKey) ((HKEY)(memKey))
28
29 typedef struct _HIVE_LIST_ENTRY
30 {
31 PCSTR HiveName;
32 PCWSTR HiveRegistryPath;
33 PCMHIVE CmHive;
34 PUCHAR SecurityDescriptor;
35 ULONG SecurityDescriptorLength;
36 } HIVE_LIST_ENTRY, *PHIVE_LIST_ENTRY;
37
38 #define MAX_NUMBER_OF_REGISTRY_HIVES 7
39 extern HIVE_LIST_ENTRY RegistryHives[];
40
41 #define ERROR_SUCCESS 0L
42 #define ERROR_UNSUCCESSFUL 1L
43 #define ERROR_FILE_NOT_FOUND 2L
44 #define ERROR_OUTOFMEMORY 14L
45 #define ERROR_INVALID_PARAMETER 87L
46 #define ERROR_MORE_DATA 234L
47 #define ERROR_NO_MORE_ITEMS 259L
48
49 #define REG_NONE 0
50 #define REG_SZ 1
51 #define REG_EXPAND_SZ 2
52 #define REG_BINARY 3
53 #define REG_DWORD 4
54 #define REG_DWORD_LITTLE_ENDIAN 4
55 #define REG_DWORD_BIG_ENDIAN 5
56 #define REG_LINK 6
57 #define REG_MULTI_SZ 7
58 #define REG_RESOURCE_LIST 8
59 #define REG_FULL_RESOURCE_DESCRIPTOR 9
60 #define REG_RESOURCE_REQUIREMENTS_LIST 10
61 #define REG_QWORD 11
62 #define REG_QWORD_LITTLE_ENDIAN 11
63
64 VOID
65 RegInitializeRegistry(
66 IN PCSTR HiveList);
67
68 VOID
69 RegShutdownRegistry(VOID);
70
71 /* EOF */