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
11 #define WIN32_NO_STATUS
17 #define ROUND_UP(a,b) ((((a)+(b)-1)/(b))*(b))
18 #define ROUND_DOWN(a,b) (((a)/(b))*(b))
25 typedef PVOID (CMAPI
*PGET_CELL_ROUTINE
)(
29 typedef VOID (CMAPI
*PRELEASE_CELL_ROUTINE
)(
33 typedef PVOID (CMAPI
*PALLOCATE_ROUTINE
)(
37 typedef VOID (CMAPI
*PFREE_ROUTINE
)(
40 typedef BOOLEAN (CMAPI
*PFILE_READ_ROUTINE
)(
41 struct _HHIVE
*RegistryHive
,
47 typedef BOOLEAN (CMAPI
*PFILE_WRITE_ROUTINE
)(
48 struct _HHIVE
*RegistryHive
,
54 typedef BOOLEAN (CMAPI
*PFILE_SET_SIZE_ROUTINE
)(
55 struct _HHIVE
*RegistryHive
,
59 typedef BOOLEAN (CMAPI
*PFILE_FLUSH_ROUTINE
)(
60 struct _HHIVE
*RegistryHive
,
63 typedef struct _HMAP_ENTRY
67 PCM_VIEW_OF_FILE CmHive
;
69 } HMAP_ENTRY
, *PHMAP_ENTRY
;
71 typedef struct _HMAP_TABLE
73 HMAP_ENTRY Table
[512];
74 } HMAP_TABLE
, *PHMAP_TABLE
;
76 typedef struct _HMAP_DIRECTORY
78 PHMAP_TABLE Directory
[2048];
79 } HMAP_DIRECTORY
, *PHMAP_DIRECTORY
;
85 PHMAP_ENTRY BlockList
; // PHMAP_TABLE SmallDir;
87 HCELL_INDEX FreeDisplay
[24]; //FREE_DISPLAY FreeDisplay[24];
95 PGET_CELL_ROUTINE GetCellRoutine
;
96 PRELEASE_CELL_ROUTINE ReleaseCellRoutine
;
97 PALLOCATE_ROUTINE Allocate
;
99 PFILE_READ_ROUTINE FileRead
;
100 PFILE_WRITE_ROUTINE FileWrite
;
101 PFILE_SET_SIZE_ROUTINE FileSetSize
;
102 PFILE_FLUSH_ROUTINE FileFlush
;
103 PHBASE_BLOCK HiveHeader
;
104 RTL_BITMAP DirtyVector
;
107 ULONG BaseBlockAlloc
;
116 ULONG StorageTypeCount
;
118 DUAL Storage
[HvMaxStorageType
];
121 typedef struct _EREGISTRY_HIVE
125 UNICODE_STRING HiveFileName
;
126 UNICODE_STRING LogFileName
;
127 PCM_KEY_SECURITY RootSecurityCell
;
131 } EREGISTRY_HIVE
, *PEREGISTRY_HIVE
;
137 #define HV_OPERATION_CREATE_HIVE 0
138 #define HV_OPERATION_MEMORY 1
139 #define HV_OPERATION_MEMORY_INPLACE 3
145 ULONG_PTR HiveData OPTIONAL
,
146 ULONG Cluster OPTIONAL
,
147 PALLOCATE_ROUTINE Allocate
,
149 PFILE_READ_ROUTINE FileRead
,
150 PFILE_WRITE_ROUTINE FileWrite
,
151 PFILE_SET_SIZE_ROUTINE FileSetSize
,
152 PFILE_FLUSH_ROUTINE FileFlush
,
153 IN PUNICODE_STRING FileName
);
157 PHHIVE RegistryHive
);
162 HCELL_INDEX CellOffset
);
173 HV_STORAGE_TYPE Storage
);
178 HCELL_INDEX CellOffset
,
184 HCELL_INDEX CellOffset
);
189 HCELL_INDEX CellOffset
);
193 PHHIVE RegistryHive
);
197 PHHIVE RegistryHive
);
206 PHHIVE RegistryHive
);
216 HV_STORAGE_TYPE Storage
);
219 HvpCreateHiveFreeCellList(
223 HvpHiveHeaderChecksum(
224 PHBASE_BLOCK HiveHeader
);