{\r
PCM_KEY_NODE KeyCell;\r
HCELL_INDEX RootCellIndex;\r
- ULONG NameSize;\r
+ SIZE_T NameSize;\r
\r
NameSize = wcslen(Name) * sizeof(WCHAR);\r
RootCellIndex = HvAllocateCell(Hive, sizeof(CM_KEY_NODE) + NameSize, HvStable);\r
KeyCell->ValueList.List = HCELL_NULL;\r
KeyCell->SecurityKeyOffset = HCELL_NULL;\r
KeyCell->ClassNameOffset = HCELL_NULL; \r
- KeyCell->NameSize = NameSize;\r
+ KeyCell->NameSize = (USHORT)NameSize;\r
KeyCell->ClassSize = 0;\r
memcpy(KeyCell->Name, Name, NameSize);\r
\r
#ifndef CMLIB_H\r
#define CMLIB_H\r
\r
+#define WIN32_NO_STATUS\r
#include <ntddk.h>\r
#include "hivedata.h"\r
#include "cmdata.h"\r
HCELL_INDEX Cell);\r
\r
typedef PVOID (CMAPI *PALLOCATE_ROUTINE)(\r
- ULONG Size,\r
+ SIZE_T Size,\r
BOOLEAN Paged);\r
\r
typedef VOID (CMAPI *PFREE_ROUTINE)(\r
typedef BOOLEAN (CMAPI *PFILE_READ_ROUTINE)(\r
struct _HHIVE *RegistryHive,\r
ULONG FileType,\r
- ULONG FileOffset,\r
+ ULONGLONG FileOffset,\r
PVOID Buffer,\r
- ULONG BufferLength);\r
+ SIZE_T BufferLength);\r
\r
typedef BOOLEAN (CMAPI *PFILE_WRITE_ROUTINE)(\r
struct _HHIVE *RegistryHive,\r
ULONG FileType,\r
- ULONG FileOffset,\r
+ ULONGLONG FileOffset,\r
PVOID Buffer,\r
- ULONG BufferLength);\r
+ SIZE_T BufferLength);\r
\r
typedef BOOLEAN (CMAPI *PFILE_SET_SIZE_ROUTINE)(\r
struct _HHIVE *RegistryHive,\r
ULONG FileType,\r
- ULONG FileSize);\r
+ ULONGLONG FileSize);\r
\r
typedef BOOLEAN (CMAPI *PFILE_FLUSH_ROUTINE)(\r
struct _HHIVE *RegistryHive,\r
HCELL_INDEX CMAPI\r
HvAllocateCell(\r
PHHIVE RegistryHive,\r
- ULONG Size,\r
+ SIZE_T Size,\r
HV_STORAGE_TYPE Storage);\r
\r
HCELL_INDEX CMAPI\r
$(CMLIB_OUT)$(SEP)cmlib.a\r
\r
CMLIB_HOST_SOURCES = $(addprefix $(CMLIB_BASE_), \\r
+ cminit.c \\r
hivebin.c \\r
hivecell.c \\r
hiveinit.c \\r
+ hivesum.c \\r
+ hivewrt.c \\r
)\r
\r
CMLIB_HOST_OBJECTS = \\r
$(ECHO_AR)\r
$(host_ar) -r $@ $(CMLIB_HOST_OBJECTS)\r
\r
+$(CMLIB_INT_)cminit.o: $(CMLIB_BASE_)cminit.c | $(CMLIB_INT)\r
+ $(ECHO_CC)\r
+ ${host_gcc} $(CMLIB_HOST_CFLAGS) -c $< -o $@\r
+\r
$(CMLIB_INT_)hivebin.o: $(CMLIB_BASE_)hivebin.c | $(CMLIB_INT)\r
$(ECHO_CC)\r
${host_gcc} $(CMLIB_HOST_CFLAGS) -c $< -o $@\r
$(ECHO_CC)\r
${host_gcc} $(CMLIB_HOST_CFLAGS) -c $< -o $@\r
\r
+$(CMLIB_INT_)hivesum.o: $(CMLIB_BASE_)hivesum.c | $(CMLIB_INT)\r
+ $(ECHO_CC)\r
+ ${host_gcc} $(CMLIB_HOST_CFLAGS) -c $< -o $@\r
+\r
+$(CMLIB_INT_)hivewrt.o: $(CMLIB_BASE_)hivewrt.c | $(CMLIB_INT)\r
+ $(ECHO_CC)\r
+ ${host_gcc} $(CMLIB_HOST_CFLAGS) -c $< -o $@\r
+\r
.PHONY: cmlib_host\r
cmlib_host: $(CMLIB_HOST_TARGET)\r
\r
{\r
PHMAP_ENTRY BlockList;\r
PHBIN Bin;\r
- ULONG BinSize;\r
+ SIZE_T BinSize;\r
ULONG i;\r
ULONG BitmapSize;\r
ULONG BlockCount;\r
return HCELL_NULL;\r
\r
NewCell = HvGetCell(RegistryHive, NewCellIndex);\r
- RtlCopyMemory(NewCell, OldCell, -OldCellSize);\r
+ RtlCopyMemory(NewCell, OldCell, (SIZE_T)-OldCellSize);\r
\r
HvFreeCell(RegistryHive, CellIndex);\r
\r
//\r
ChunkSize = ((PHBASE_BLOCK)ChunkBase)->Length;\r
((PHBASE_BLOCK)ChunkBase)->Length = HV_BLOCK_SIZE;\r
- DPRINT1("ChunkSize: %lx\n", ChunkSize);\r
+ DPRINT("ChunkSize: %lx\n", ChunkSize);\r
\r
if (ChunkSize < sizeof(HBASE_BLOCK) ||\r
!HvpVerifyHiveHeader((PHBASE_BLOCK)ChunkBase))\r
* we go.\r
*/\r
\r
- Hive->Storage[HvStable].Length = (ChunkSize / HV_BLOCK_SIZE) - 1;\r
+ Hive->Storage[HvStable].Length = (ULONG)(ChunkSize / HV_BLOCK_SIZE) - 1;\r
Hive->Storage[HvStable].BlockList =\r
Hive->Allocate(Hive->Storage[HvStable].Length *\r
sizeof(HMAP_ENTRY), FALSE);\r
HvpWriteLog(\r
PHHIVE RegistryHive)\r
{\r
- ULONG FileOffset;\r
- ULONG BufferSize;\r
- ULONG BitmapSize;\r
+ ULONGLONG FileOffset;\r
+ SIZE_T BufferSize;\r
+ SIZE_T BitmapSize;\r
PUCHAR Buffer;\r
PUCHAR Ptr;\r
ULONG BlockIndex;\r
PHHIVE RegistryHive,\r
BOOLEAN OnlyDirty)\r
{\r
- ULONG FileOffset;\r
+ ULONGLONG FileOffset;\r
ULONG BlockIndex;\r
ULONG LastIndex;\r
PVOID BlockPtr;\r
CmpFileRead(
PHHIVE RegistryHive,
ULONG FileType,
- ULONG FileOffset,
+ ULONGLONG FileOffset,
PVOID Buffer,
- ULONG BufferLength)
+ SIZE_T BufferLength)
{
PEREGISTRY_HIVE CmHive = (PEREGISTRY_HIVE)RegistryHive;
HANDLE HiveHandle = FileType == HV_TYPE_PRIMARY ? CmHive->HiveHandle : CmHive->LogHandle;
CmpFileWrite(
PHHIVE RegistryHive,
ULONG FileType,
- ULONG FileOffset,
+ ULONGLONG FileOffset,
PVOID Buffer,
- ULONG BufferLength)
+ SIZE_T BufferLength)
{
PEREGISTRY_HIVE CmHive = (PEREGISTRY_HIVE)RegistryHive;
HANDLE HiveHandle = FileType == HV_TYPE_PRIMARY ? CmHive->HiveHandle : CmHive->LogHandle;
CmpFileSetSize(
PHHIVE RegistryHive,
ULONG FileType,
- ULONG FileSize)
+ ULONGLONG FileSize)
{
PEREGISTRY_HIVE CmHive = (PEREGISTRY_HIVE)RegistryHive;
HANDLE HiveHandle = FileType == HV_TYPE_PRIMARY ? CmHive->HiveHandle : CmHive->LogHandle;