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
16 #define ROUND_UP(a,b) ((((a)+(b)-1)/(b))*(b))
17 #define ROUND_DOWN(a,b) (((a)/(b))*(b))
24 typedef PVOID (CMAPI
*PGET_CELL_ROUTINE
)(
28 typedef VOID (CMAPI
*PRELEASE_CELL_ROUTINE
)(
32 typedef PVOID (CMAPI
*PALLOCATE_ROUTINE
)(
36 typedef VOID (CMAPI
*PFREE_ROUTINE
)(
39 typedef BOOLEAN (CMAPI
*PFILE_READ_ROUTINE
)(
40 struct _HHIVE
*RegistryHive
,
46 typedef BOOLEAN (CMAPI
*PFILE_WRITE_ROUTINE
)(
47 struct _HHIVE
*RegistryHive
,
53 typedef BOOLEAN (CMAPI
*PFILE_SET_SIZE_ROUTINE
)(
54 struct _HHIVE
*RegistryHive
,
58 typedef BOOLEAN (CMAPI
*PFILE_FLUSH_ROUTINE
)(
59 struct _HHIVE
*RegistryHive
,
62 typedef struct _HMAP_ENTRY
66 PCM_VIEW_OF_FILE CmHive
;
68 } HMAP_ENTRY
, *PHMAP_ENTRY
;
70 typedef struct _HMAP_TABLE
72 HMAP_ENTRY Table
[512];
73 } HMAP_TABLE
, *PHMAP_TABLE
;
75 typedef struct _HMAP_DIRECTORY
77 PHMAP_TABLE Directory
[2048];
78 } HMAP_DIRECTORY
, *PHMAP_DIRECTORY
;
84 PHMAP_ENTRY BlockList
; // PHMAP_TABLE SmallDir;
86 HCELL_INDEX FreeDisplay
[24]; //FREE_DISPLAY FreeDisplay[24];
94 PGET_CELL_ROUTINE GetCellRoutine
;
95 PRELEASE_CELL_ROUTINE ReleaseCellRoutine
;
96 PALLOCATE_ROUTINE Allocate
;
98 PFILE_READ_ROUTINE FileRead
;
99 PFILE_WRITE_ROUTINE FileWrite
;
100 PFILE_SET_SIZE_ROUTINE FileSetSize
;
101 PFILE_FLUSH_ROUTINE FileFlush
;
102 PHBASE_BLOCK HiveHeader
;
103 RTL_BITMAP DirtyVector
;
106 ULONG BaseBlockAlloc
;
115 ULONG StorageTypeCount
;
117 DUAL Storage
[HvMaxStorageType
];
118 PVOID Opaque
; // FIXME: KILL!
125 #define HV_OPERATION_CREATE_HIVE 0
126 #define HV_OPERATION_MEMORY 1
127 #define HV_OPERATION_MEMORY_INPLACE 3
131 PHHIVE
*RegistryHive
,
133 ULONG_PTR HiveData OPTIONAL
,
134 SIZE_T Cluster
, // HACK!!
135 PALLOCATE_ROUTINE Allocate
,
137 PFILE_READ_ROUTINE FileRead
,
138 PFILE_WRITE_ROUTINE FileWrite
,
139 PFILE_SET_SIZE_ROUTINE FileSetSize
,
140 PFILE_FLUSH_ROUTINE FileFlush
,
141 PVOID Opaque
, // HACK!!
142 IN PUNICODE_STRING FileName
);
146 PHHIVE RegistryHive
);
151 HCELL_INDEX CellOffset
);
162 HV_STORAGE_TYPE Storage
);
167 HCELL_INDEX CellOffset
,
173 HCELL_INDEX CellOffset
);
178 HCELL_INDEX CellOffset
);
182 PHHIVE RegistryHive
);
186 PHHIVE RegistryHive
);
195 PHHIVE RegistryHive
);
205 HV_STORAGE_TYPE Storage
);
208 HvpCreateHiveFreeCellList(
212 HvpHiveHeaderChecksum(
213 PHBASE_BLOCK HiveHeader
);