Author: ion Date: Mon Aug 14 18:16:00 2006 New Revision: 23578
URL: http://svn.reactos.org/svn/reactos?rev=23578&view=rev Log: - Make HHIVE part of EREGISTRY_HIVE, similarly to NT. - Get rid of Opaque member and paramter..
Modified: trunk/reactos/boot/freeldr/freeldr/reactos/binhive.c trunk/reactos/lib/cmlib/cmlib.h trunk/reactos/lib/cmlib/hiveinit.c trunk/reactos/ntoskrnl/cm/cm.h trunk/reactos/ntoskrnl/cm/import.c trunk/reactos/ntoskrnl/cm/ntfunc.c trunk/reactos/ntoskrnl/cm/regfile.c trunk/reactos/ntoskrnl/cm/registry.c trunk/reactos/ntoskrnl/cm/regobj.c
Modified: trunk/reactos/boot/freeldr/freeldr/reactos/binhive.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/boot/freeldr/freeldr/reacto... ============================================================================== --- trunk/reactos/boot/freeldr/freeldr/reactos/binhive.c (original) +++ trunk/reactos/boot/freeldr/freeldr/reactos/binhive.c Mon Aug 14 18:16:00 2006 @@ -707,21 +707,24 @@ FRLDRHKEY SystemKey; ULONG i; LONG Error; + PEREGISTRY_HIVE CmHive; PHHIVE Hive; NTSTATUS Status;
DbgPrint((DPRINT_REGISTRY, "RegImportBinaryHive(%x, %u) called\n",ChunkBase,ChunkSize));
- Status = HvInitialize (&Hive, HV_OPERATION_MEMORY_INPLACE, + CmHive = CmpAllocate(sizeof(EREGISTRY_HIVE), TRUE); + Status = HvInitialize (&CmHive->Hive, HV_OPERATION_MEMORY_INPLACE, (ULONG_PTR)ChunkBase, ChunkSize, CmpAllocate, CmpFree, - NULL, NULL, NULL, NULL, NULL, NULL); + NULL, NULL, NULL, NULL, NULL); if (!NT_SUCCESS(Status)) { DbgPrint((DPRINT_REGISTRY, "Invalid hive id!\n")); return FALSE; }
+ Hive = &CmHive->Hive; KeyCell = HvGetCell (Hive, Hive->HiveHeader->RootCell); DbgPrint((DPRINT_REGISTRY, "KeyCell: %x\n", KeyCell)); DbgPrint((DPRINT_REGISTRY, "KeyCell->Id: %x\n", KeyCell->Id)); @@ -803,14 +806,17 @@ PCHAR ChunkBase, ULONG* ChunkSize) { + PEREGISTRY_HIVE CmHive; PHHIVE Hive; NTSTATUS Status;
DbgPrint((DPRINT_REGISTRY, "Creating binary hardware hive\n"));
- Status = HvInitialize (&Hive, HV_OPERATION_CREATE_HIVE, 0, 0, + CmHive = CmpAllocate(sizeof(EREGISTRY_HIVE), TRUE); + Status = HvInitialize (&CmHive->Hive, HV_OPERATION_CREATE_HIVE, 0, 0, CmpAllocate, CmpFree, - NULL, NULL, NULL, NULL, NULL, NULL); + NULL, NULL, NULL, NULL, NULL); + Hive = &CmHive->Hive; if (!NT_SUCCESS(Status)) { return FALSE;
Modified: trunk/reactos/lib/cmlib/cmlib.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/lib/cmlib/cmlib.h?rev=23578... ============================================================================== --- trunk/reactos/lib/cmlib/cmlib.h (original) +++ trunk/reactos/lib/cmlib/cmlib.h Mon Aug 14 18:16:00 2006 @@ -115,8 +115,19 @@ ULONG StorageTypeCount; ULONG Version; DUAL Storage[HvMaxStorageType]; - PVOID Opaque; // FIXME: KILL! } HHIVE, *PHHIVE; + +typedef struct _EREGISTRY_HIVE +{ + HHIVE Hive; + LIST_ENTRY HiveList; + UNICODE_STRING HiveFileName; + UNICODE_STRING LogFileName; + PCM_KEY_SECURITY RootSecurityCell; + ULONG Flags; + HANDLE HiveHandle; + HANDLE LogHandle; +} EREGISTRY_HIVE, *PEREGISTRY_HIVE;
/* * Public functions. @@ -128,7 +139,7 @@
NTSTATUS CMAPI HvInitialize( - PHHIVE *RegistryHive, + PHHIVE RegistryHive, ULONG Operation, ULONG_PTR HiveData OPTIONAL, SIZE_T Cluster, // HACK!! @@ -138,7 +149,6 @@ PFILE_WRITE_ROUTINE FileWrite, PFILE_SET_SIZE_ROUTINE FileSetSize, PFILE_FLUSH_ROUTINE FileFlush, - PVOID Opaque, // HACK!! IN PUNICODE_STRING FileName);
VOID CMAPI
Modified: trunk/reactos/lib/cmlib/hiveinit.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/lib/cmlib/hiveinit.c?rev=23... ============================================================================== --- trunk/reactos/lib/cmlib/hiveinit.c (original) +++ trunk/reactos/lib/cmlib/hiveinit.c Mon Aug 14 18:16:00 2006 @@ -299,7 +299,7 @@
NTSTATUS CMAPI HvInitialize( - PHHIVE *RegistryHive, + PHHIVE RegistryHive, ULONG Operation, ULONG_PTR ChunkBase, SIZE_T ChunkSize, @@ -309,19 +309,15 @@ PFILE_WRITE_ROUTINE FileWrite, PFILE_SET_SIZE_ROUTINE FileSetSize, PFILE_FLUSH_ROUTINE FileFlush, - PVOID Opaque, IN PUNICODE_STRING FileName) { NTSTATUS Status; - PHHIVE Hive; + PHHIVE Hive = RegistryHive;
/* * Create a new hive structure that will hold all the maintenance data. */
- Hive = Allocate(sizeof(HHIVE), TRUE); - if (Hive == NULL) - return STATUS_NO_MEMORY; RtlZeroMemory(Hive, sizeof(HHIVE));
Hive->Allocate = Allocate; @@ -330,7 +326,6 @@ Hive->FileWrite = FileWrite; Hive->FileSetSize = FileSetSize; Hive->FileFlush = FileFlush; - Hive->Opaque = Opaque;
switch (Operation) { @@ -358,8 +353,6 @@ return Status; }
- *RegistryHive = Hive; - return Status; }
Modified: trunk/reactos/ntoskrnl/cm/cm.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/cm/cm.h?rev=23578&... ============================================================================== --- trunk/reactos/ntoskrnl/cm/cm.h (original) +++ trunk/reactos/ntoskrnl/cm/cm.h Mon Aug 14 18:16:00 2006 @@ -37,18 +37,6 @@ #define REG_SAM_FILE_NAME L"\sam" #define REG_SEC_FILE_NAME L"\security"
-typedef struct _EREGISTRY_HIVE -{ - LIST_ENTRY HiveList; - PHHIVE Hive; - UNICODE_STRING HiveFileName; - UNICODE_STRING LogFileName; - PCM_KEY_SECURITY RootSecurityCell; - ULONG Flags; - HANDLE HiveHandle; - HANDLE LogHandle; -} EREGISTRY_HIVE, *PEREGISTRY_HIVE; - /* When set, the hive is not backed by a file. Therefore, it can not be flushed to disk. */ #define HIVE_NO_FILE 0x00000002
Modified: trunk/reactos/ntoskrnl/cm/import.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/cm/import.c?rev=23... ============================================================================== --- trunk/reactos/ntoskrnl/cm/import.c (original) +++ trunk/reactos/ntoskrnl/cm/import.c Mon Aug 14 18:16:00 2006 @@ -55,7 +55,7 @@ (ULONG_PTR)ChunkBase, ChunkSize, CmpAllocate, CmpFree, CmpFileRead, CmpFileWrite, CmpFileSetSize, - CmpFileFlush, Hive, NULL); + CmpFileFlush, NULL); if (!NT_SUCCESS(Status)) { DPRINT1 ("Opening hive failed (%x)\n", Status); @@ -63,7 +63,7 @@ return FALSE; }
- CmPrepareHive(Hive->Hive); + CmPrepareHive(&Hive->Hive);
/* Acquire hive list lock exclusively */ KeEnterCriticalRegion();
Modified: trunk/reactos/ntoskrnl/cm/ntfunc.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/cm/ntfunc.c?rev=23... ============================================================================== --- trunk/reactos/ntoskrnl/cm/ntfunc.c (original) +++ trunk/reactos/ntoskrnl/cm/ntfunc.c Mon Aug 14 18:16:00 2006 @@ -781,7 +781,7 @@ }
ASSERT(KeyCell->SubKeyLists[Storage] != HCELL_NULL); - HashTableBlock = HvGetCell (RegistryHive->Hive, KeyCell->SubKeyLists[Storage]); + HashTableBlock = HvGetCell (&RegistryHive->Hive, KeyCell->SubKeyLists[Storage]);
SubKeyCell = CmiGetKeyFromHashByIndex(RegistryHive, HashTableBlock, @@ -899,7 +899,7 @@
if (ClassSize != 0) { - ClassCell = HvGetCell (KeyObject->RegistryHive->Hive, + ClassCell = HvGetCell (&KeyObject->RegistryHive->Hive, SubKeyCell->ClassNameOffset); RtlCopyMemory (NodeInformation->Name + SubKeyCell->NameSize, ClassCell, @@ -947,7 +947,7 @@
if (ClassSize != 0) { - ClassCell = HvGetCell (KeyObject->RegistryHive->Hive, + ClassCell = HvGetCell (&KeyObject->RegistryHive->Hive, SubKeyCell->ClassNameOffset); RtlCopyMemory (FullInformation->Class, ClassCell, @@ -1117,7 +1117,7 @@
if (!(ValueCell->DataSize & REG_DATA_IN_OFFSET)) { - DataCell = HvGetCell (RegistryHive->Hive, ValueCell->DataOffset); + DataCell = HvGetCell (&RegistryHive->Hive, ValueCell->DataOffset); RtlCopyMemory(ValuePartialInformation->Data, DataCell, DataSize); @@ -1190,7 +1190,7 @@
if (!(ValueCell->DataSize & REG_DATA_IN_OFFSET)) { - DataCell = HvGetCell (RegistryHive->Hive, ValueCell->DataOffset); + DataCell = HvGetCell (&RegistryHive->Hive, ValueCell->DataOffset); RtlCopyMemory((PCHAR) ValueFullInformation + ValueFullInformation->DataOffset, DataCell, DataSize); @@ -1574,7 +1574,7 @@
if (ClassSize != 0) { - ClassCell = HvGetCell (KeyObject->RegistryHive->Hive, + ClassCell = HvGetCell (&KeyObject->RegistryHive->Hive, KeyCell->ClassNameOffset); RtlCopyMemory (NodeInformation->Name + KeyObject->Name.Length, ClassCell, @@ -1621,7 +1621,7 @@
if (ClassSize) { - ClassCell = HvGetCell (KeyObject->RegistryHive->Hive, + ClassCell = HvGetCell (&KeyObject->RegistryHive->Hive, KeyCell->ClassNameOffset); RtlCopyMemory (FullInformation->Class, ClassCell, ClassSize); @@ -1806,7 +1806,7 @@
if (!(ValueCell->DataSize & REG_DATA_IN_OFFSET)) { - DataCell = HvGetCell (RegistryHive->Hive, ValueCell->DataOffset); + DataCell = HvGetCell (&RegistryHive->Hive, ValueCell->DataOffset); RtlCopyMemory(ValuePartialInformation->Data, DataCell, DataSize); @@ -1881,7 +1881,7 @@ } if (!(ValueCell->DataSize & REG_DATA_IN_OFFSET)) { - DataCell = HvGetCell (RegistryHive->Hive, ValueCell->DataOffset); + DataCell = HvGetCell (&RegistryHive->Hive, ValueCell->DataOffset); RtlCopyMemory((PCHAR) ValueFullInformation + ValueFullInformation->DataOffset, DataCell, @@ -2010,8 +2010,8 @@ if (!(ValueCell->DataSize & REG_DATA_IN_OFFSET) && (ValueCell->DataSize & REG_DATA_SIZE_MASK) != 0) { - DataCell = HvGetCell (RegistryHive->Hive, ValueCell->DataOffset); - DataCellSize = -HvGetCellSize (RegistryHive->Hive, DataCell); + DataCell = HvGetCell (&RegistryHive->Hive, ValueCell->DataOffset); + DataCellSize = -HvGetCellSize (&RegistryHive->Hive, DataCell); } else { @@ -2026,13 +2026,13 @@ DPRINT("ValueCell->DataSize %lu\n", ValueCell->DataSize); if (DataCell) { - HvFreeCell(RegistryHive->Hive, ValueCell->DataOffset); + HvFreeCell(&RegistryHive->Hive, ValueCell->DataOffset); }
RtlCopyMemory(&ValueCell->DataOffset, Data, DataSize); ValueCell->DataSize = DataSize | REG_DATA_IN_OFFSET; ValueCell->DataType = Type; - HvMarkCellDirty(RegistryHive->Hive, ValueCellOffset); + HvMarkCellDirty(&RegistryHive->Hive, ValueCellOffset); } else { @@ -2046,7 +2046,7 @@
DPRINT("ValueCell->DataSize %lu\n", ValueCell->DataSize);
- NewOffset = HvAllocateCell (RegistryHive->Hive, DataSize, HvStable); + NewOffset = HvAllocateCell (&RegistryHive->Hive, DataSize, HvStable); if (NewOffset == HCELL_NULL) { DPRINT("CmiAllocateBlock() failed (Status %lx)\n", Status); @@ -2062,18 +2062,18 @@
if (DataCell) { - HvFreeCell(RegistryHive->Hive, ValueCell->DataOffset); + HvFreeCell(&RegistryHive->Hive, ValueCell->DataOffset); }
ValueCell->DataOffset = NewOffset; - DataCell = HvGetCell(RegistryHive->Hive, NewOffset); + DataCell = HvGetCell(&RegistryHive->Hive, NewOffset); }
RtlCopyMemory(DataCell, Data, DataSize); ValueCell->DataSize = DataSize & REG_DATA_SIZE_MASK; ValueCell->DataType = Type; - HvMarkCellDirty(RegistryHive->Hive, ValueCell->DataOffset); - HvMarkCellDirty(RegistryHive->Hive, ValueCellOffset); + HvMarkCellDirty(&RegistryHive->Hive, ValueCell->DataOffset); + HvMarkCellDirty(&RegistryHive->Hive, ValueCellOffset); }
/* Mark link key */ @@ -2084,7 +2084,7 @@ }
KeQuerySystemTime (&KeyCell->LastWriteTime); - HvMarkCellDirty (RegistryHive->Hive, KeyObject->KeyCellOffset); + HvMarkCellDirty (&RegistryHive->Hive, KeyObject->KeyCellOffset);
ExReleaseResourceLite(&CmiRegistryLock); KeLeaveCriticalRegion(); @@ -2160,7 +2160,7 @@ ValueName);
KeQuerySystemTime (&KeyObject->KeyCell->LastWriteTime); - HvMarkCellDirty (KeyObject->RegistryHive->Hive, KeyObject->KeyCellOffset); + HvMarkCellDirty (&KeyObject->RegistryHive->Hive, KeyObject->KeyCellOffset);
/* Release hive lock */ ExReleaseResourceLite(&CmiRegistryLock); @@ -2461,7 +2461,7 @@
if (!(ValueCell->DataSize & REG_DATA_IN_OFFSET)) { - DataCell = HvGetCell (RegistryHive->Hive, + DataCell = HvGetCell (&RegistryHive->Hive, ValueCell->DataOffset); RtlCopyMemory(DataPtr, DataCell, ValueCell->DataSize & REG_DATA_SIZE_MASK); @@ -2685,7 +2685,7 @@ KeyObject->KeyCell->LastWriteTime.QuadPart = ((PKEY_WRITE_TIME_INFORMATION)KeyInformation)->LastWriteTime.QuadPart;
- HvMarkCellDirty (KeyObject->RegistryHive->Hive, + HvMarkCellDirty (&KeyObject->RegistryHive->Hive, KeyObject->KeyCellOffset);
/* Release hive lock */
Modified: trunk/reactos/ntoskrnl/cm/regfile.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/cm/regfile.c?rev=2... ============================================================================== --- trunk/reactos/ntoskrnl/cm/regfile.c (original) +++ trunk/reactos/ntoskrnl/cm/regfile.c Mon Aug 14 18:16:00 2006 @@ -50,7 +50,7 @@ PVOID Buffer, ULONG BufferLength) { - PEREGISTRY_HIVE CmHive = RegistryHive->Opaque; + PEREGISTRY_HIVE CmHive = (PEREGISTRY_HIVE)RegistryHive; HANDLE HiveHandle = FileType == HV_TYPE_PRIMARY ? CmHive->HiveHandle : CmHive->LogHandle; LARGE_INTEGER _FileOffset; IO_STATUS_BLOCK IoStatusBlock; @@ -71,7 +71,7 @@ PVOID Buffer, ULONG BufferLength) { - PEREGISTRY_HIVE CmHive = RegistryHive->Opaque; + PEREGISTRY_HIVE CmHive = (PEREGISTRY_HIVE)RegistryHive; HANDLE HiveHandle = FileType == HV_TYPE_PRIMARY ? CmHive->HiveHandle : CmHive->LogHandle; LARGE_INTEGER _FileOffset; IO_STATUS_BLOCK IoStatusBlock; @@ -90,7 +90,7 @@ ULONG FileType, ULONG FileSize) { - PEREGISTRY_HIVE CmHive = RegistryHive->Opaque; + PEREGISTRY_HIVE CmHive = (PEREGISTRY_HIVE)RegistryHive; HANDLE HiveHandle = FileType == HV_TYPE_PRIMARY ? CmHive->HiveHandle : CmHive->LogHandle; FILE_END_OF_FILE_INFORMATION EndOfFileInfo; FILE_ALLOCATION_INFORMATION FileAllocationInfo; @@ -122,7 +122,7 @@ PHHIVE RegistryHive, ULONG FileType) { - PEREGISTRY_HIVE CmHive = RegistryHive->Opaque; + PEREGISTRY_HIVE CmHive = (PEREGISTRY_HIVE)RegistryHive; HANDLE HiveHandle = FileType == HV_TYPE_PRIMARY ? CmHive->HiveHandle : CmHive->LogHandle; IO_STATUS_BLOCK IoStatusBlock; NTSTATUS Status; @@ -135,21 +135,23 @@ static NTSTATUS CmiCreateNewRegFile(HANDLE FileHandle) { - EREGISTRY_HIVE CmHive; + PEREGISTRY_HIVE CmHive; PHHIVE Hive; NTSTATUS Status;
- CmHive.HiveHandle = FileHandle; - Status = HvInitialize(&Hive, HV_OPERATION_CREATE_HIVE, 0, 0, + CmHive = CmpAllocate(sizeof(EREGISTRY_HIVE), TRUE); + CmHive->HiveHandle = FileHandle; + Status = HvInitialize(&CmHive->Hive, HV_OPERATION_CREATE_HIVE, 0, 0, CmpAllocate, CmpFree, CmpFileRead, CmpFileWrite, CmpFileSetSize, - CmpFileFlush, &CmHive, NULL); + CmpFileFlush, NULL); if (!NT_SUCCESS(Status)) { return FALSE; }
/* Init root key cell */ + Hive = &CmHive->Hive; if (!CmCreateRootNode(Hive, L"")) { HvFree (Hive); @@ -571,7 +573,7 @@ (ULONG_PTR)ViewBase, ViewSize, CmpAllocate, CmpFree, CmpFileRead, CmpFileWrite, CmpFileSetSize, - CmpFileFlush, RegistryHive, NULL); + CmpFileFlush, NULL); if (!NT_SUCCESS(Status)) { DPRINT1("Failed to open hive\n"); @@ -584,7 +586,7 @@ return Status; }
- CmPrepareHive(RegistryHive->Hive); + CmPrepareHive(&RegistryHive->Hive);
/* Unmap and dereference the hive section */ MmUnmapViewOfSection(PsGetCurrentProcess(), @@ -622,16 +624,16 @@ Status = HvInitialize(&Hive->Hive, HV_OPERATION_CREATE_HIVE, 0, 0, CmpAllocate, CmpFree, CmpFileRead, CmpFileWrite, CmpFileSetSize, - CmpFileFlush, Hive, NULL); + CmpFileFlush, NULL); if (!NT_SUCCESS(Status)) { ExFreePool (Hive); return Status; }
- if (!CmCreateRootNode (Hive->Hive, L"")) - { - HvFree (Hive->Hive); + if (!CmCreateRootNode (&Hive->Hive, L"")) + { + HvFree (&Hive->Hive); ExFreePool (Hive); return STATUS_INSUFFICIENT_RESOURCES; } @@ -732,7 +734,7 @@ RtlFreeUnicodeString (&RegistryHive->LogFileName);
/* Release hive */ - HvFree (RegistryHive->Hive); + HvFree (&RegistryHive->Hive);
return STATUS_SUCCESS; } @@ -810,7 +812,7 @@
ASSERT(!IsNoFileHive(RegistryHive));
- if (RtlFindSetBits(&RegistryHive->Hive->DirtyVector, 1, 0) == ~0) + if (RtlFindSetBits(&RegistryHive->Hive.DirtyVector, 1, 0) == ~0) { return(STATUS_SUCCESS); } @@ -821,7 +823,7 @@ return Status; }
- Success = HvSyncHive(RegistryHive->Hive); + Success = HvSyncHive(&RegistryHive->Hive);
CmCloseHiveFiles(RegistryHive);
@@ -869,12 +871,12 @@ { if (KeyCell->SubKeyLists[Storage] != HCELL_NULL) { - HashBlock = HvGetCell (KeyObject->RegistryHive->Hive, KeyCell->SubKeyLists[Storage]); + HashBlock = HvGetCell (&KeyObject->RegistryHive->Hive, KeyCell->SubKeyLists[Storage]); ASSERT(HashBlock->Id == REG_HASH_TABLE_CELL_ID);
for (i = 0; i < KeyCell->SubKeyCounts[Storage]; i++) { - CurSubKeyCell = HvGetCell (KeyObject->RegistryHive->Hive, + CurSubKeyCell = HvGetCell (&KeyObject->RegistryHive->Hive, HashBlock->Table[i].KeyOffset); NameSize = CurSubKeyCell->NameSize; if (CurSubKeyCell->Flags & REG_KEY_NAME_PACKED) @@ -911,13 +913,13 @@ { if (KeyCell->SubKeyLists[Storage] != HCELL_NULL) { - HashBlock = HvGetCell (KeyObject->RegistryHive->Hive, + HashBlock = HvGetCell (&KeyObject->RegistryHive->Hive, KeyCell->SubKeyLists[Storage]); ASSERT(HashBlock->Id == REG_HASH_TABLE_CELL_ID);
for (i = 0; i < KeyCell->SubKeyCounts[Storage]; i++) { - CurSubKeyCell = HvGetCell (KeyObject->RegistryHive->Hive, + CurSubKeyCell = HvGetCell (&KeyObject->RegistryHive->Hive, HashBlock->Table[i].KeyOffset);
if (MaxClass < CurSubKeyCell->ClassSize) @@ -950,12 +952,12 @@ }
MaxValueName = 0; - ValueListCell = HvGetCell (RegistryHive->Hive, + ValueListCell = HvGetCell (&RegistryHive->Hive, KeyCell->ValueList.List);
for (i = 0; i < KeyCell->ValueList.Count; i++) { - CurValueCell = HvGetCell (RegistryHive->Hive, + CurValueCell = HvGetCell (&RegistryHive->Hive, ValueListCell->ValueOffset[i]); if (CurValueCell == NULL) { @@ -997,11 +999,11 @@ }
MaxValueData = 0; - ValueListCell = HvGetCell (RegistryHive->Hive, KeyCell->ValueList.List); + ValueListCell = HvGetCell (&RegistryHive->Hive, KeyCell->ValueList.List);
for (i = 0; i < KeyCell->ValueList.Count; i++) { - CurValueCell = HvGetCell (RegistryHive->Hive, + CurValueCell = HvGetCell (&RegistryHive->Hive, ValueListCell->ValueOffset[i]); if ((MaxValueData < (LONG)(CurValueCell->DataSize & REG_DATA_SIZE_MASK))) { @@ -1044,7 +1046,7 @@ }
/* Get hash table */ - HashBlock = HvGetCell (RegistryHive->Hive, KeyCell->SubKeyLists[Storage]); + HashBlock = HvGetCell (&RegistryHive->Hive, KeyCell->SubKeyLists[Storage]); ASSERT(HashBlock->Id == REG_HASH_TABLE_CELL_ID);
for (i = 0; i < KeyCell->SubKeyCounts[Storage]; i++) @@ -1054,7 +1056,7 @@ if ((HashBlock->Table[i].HashValue == 0 || CmiCompareHashI(KeyName, (PCHAR)&HashBlock->Table[i].HashValue))) { - CurSubKeyCell = HvGetCell (RegistryHive->Hive, + CurSubKeyCell = HvGetCell (&RegistryHive->Hive, HashBlock->Table[i].KeyOffset);
if (CmiCompareKeyNamesI(KeyName, CurSubKeyCell)) @@ -1070,7 +1072,7 @@ if ((HashBlock->Table[i].HashValue == 0 || CmiCompareHash(KeyName, (PCHAR)&HashBlock->Table[i].HashValue))) { - CurSubKeyCell = HvGetCell (RegistryHive->Hive, + CurSubKeyCell = HvGetCell (&RegistryHive->Hive, HashBlock->Table[i].KeyOffset);
if (CmiCompareKeyNames(KeyName, CurSubKeyCell)) @@ -1149,14 +1151,14 @@
Storage = (CreateOptions & REG_OPTION_VOLATILE) ? HvVolatile : HvStable; NewBlockSize = sizeof(CM_KEY_NODE) + NameSize; - NKBOffset = HvAllocateCell (RegistryHive->Hive, NewBlockSize, Storage); + NKBOffset = HvAllocateCell (&RegistryHive->Hive, NewBlockSize, Storage); if (NKBOffset == HCELL_NULL) { Status = STATUS_INSUFFICIENT_RESOURCES; } else { - NewKeyCell = HvGetCell (RegistryHive->Hive, NKBOffset); + NewKeyCell = HvGetCell (&RegistryHive->Hive, NKBOffset); NewKeyCell->Id = REG_KEY_CELL_ID; if (CreateOptions & REG_OPTION_VOLATILE) { @@ -1200,10 +1202,10 @@ { NewKeyCell->ClassSize = Class->Length; NewKeyCell->ClassNameOffset = HvAllocateCell( - RegistryHive->Hive, NewKeyCell->ClassSize, HvStable); + &RegistryHive->Hive, NewKeyCell->ClassSize, HvStable); ASSERT(NewKeyCell->ClassNameOffset != HCELL_NULL); /* FIXME */
- ClassCell = HvGetCell(RegistryHive->Hive, NewKeyCell->ClassNameOffset); + ClassCell = HvGetCell(&RegistryHive->Hive, NewKeyCell->ClassNameOffset); RtlCopyMemory (ClassCell, Class->Buffer, Class->Length); @@ -1232,7 +1234,7 @@ } else { - HashBlock = HvGetCell (RegistryHive->Hive, + HashBlock = HvGetCell (&RegistryHive->Hive, ParentKeyCell->SubKeyLists[Storage]); ASSERT(HashBlock->Id == REG_HASH_TABLE_CELL_ID);
@@ -1258,7 +1260,7 @@ RtlCopyMemory(&NewHashBlock->Table[0], &HashBlock->Table[0], sizeof(NewHashBlock->Table[0]) * HashBlock->HashTableSize); - HvFreeCell (RegistryHive->Hive, ParentKeyCell->SubKeyLists[Storage]); + HvFreeCell (&RegistryHive->Hive, ParentKeyCell->SubKeyLists[Storage]); ParentKeyCell->SubKeyLists[Storage] = HTOffset; HashBlock = NewHashBlock; } @@ -1276,7 +1278,7 @@ }
KeQuerySystemTime (&ParentKeyCell->LastWriteTime); - HvMarkCellDirty (RegistryHive->Hive, ParentKey->KeyCellOffset); + HvMarkCellDirty (&RegistryHive->Hive, ParentKey->KeyCellOffset);
return(Status); } @@ -1301,13 +1303,13 @@ if (SubKey->KeyCell->ValueList.Count != 0) { /* Get pointer to the value list cell */ - ValueList = HvGetCell (RegistryHive->Hive, SubKey->KeyCell->ValueList.List); + ValueList = HvGetCell (&RegistryHive->Hive, SubKey->KeyCell->ValueList.List);
/* Enumerate all values */ for (i = 0; i < SubKey->KeyCell->ValueList.Count; i++) { /* Get pointer to value cell */ - ValueCell = HvGetCell(RegistryHive->Hive, + ValueCell = HvGetCell(&RegistryHive->Hive, ValueList->ValueOffset[i]);
if (!(ValueCell->DataSize & REG_DATA_IN_OFFSET) @@ -1315,34 +1317,34 @@ && ValueCell->DataOffset != HCELL_NULL) { /* Destroy data cell */ - HvFreeCell (RegistryHive->Hive, ValueCell->DataOffset); + HvFreeCell (&RegistryHive->Hive, ValueCell->DataOffset); }
/* Destroy value cell */ - HvFreeCell (RegistryHive->Hive, ValueList->ValueOffset[i]); + HvFreeCell (&RegistryHive->Hive, ValueList->ValueOffset[i]); }
/* Destroy value list cell */ - HvFreeCell (RegistryHive->Hive, SubKey->KeyCell->ValueList.List); + HvFreeCell (&RegistryHive->Hive, SubKey->KeyCell->ValueList.List);
SubKey->KeyCell->ValueList.Count = 0; SubKey->KeyCell->ValueList.List = (HCELL_INDEX)-1;
- HvMarkCellDirty(RegistryHive->Hive, SubKey->KeyCellOffset); + HvMarkCellDirty(&RegistryHive->Hive, SubKey->KeyCellOffset); }
/* Remove the key from the parent key's hash block */ if (ParentKey->KeyCell->SubKeyLists[Storage] != HCELL_NULL) { DPRINT("ParentKey SubKeyLists %lx\n", ParentKey->KeyCell->SubKeyLists[Storage]); - HashBlock = HvGetCell (ParentKey->RegistryHive->Hive, + HashBlock = HvGetCell (&ParentKey->RegistryHive->Hive, ParentKey->KeyCell->SubKeyLists[Storage]); ASSERT(HashBlock->Id == REG_HASH_TABLE_CELL_ID); DPRINT("ParentKey HashBlock %p\n", HashBlock); CmiRemoveKeyFromHashTable(ParentKey->RegistryHive, HashBlock, SubKey->KeyCellOffset); - HvMarkCellDirty(ParentKey->RegistryHive->Hive, + HvMarkCellDirty(&ParentKey->RegistryHive->Hive, ParentKey->KeyCell->SubKeyLists[Storage]); }
@@ -1350,7 +1352,7 @@ if (SubKey->KeyCell->SubKeyLists[Storage] != HCELL_NULL) { DPRINT("SubKey SubKeyLists %lx\n", SubKey->KeyCell->SubKeyLists[Storage]); - HvFreeCell (RegistryHive->Hive, SubKey->KeyCell->SubKeyLists[Storage]); + HvFreeCell (&RegistryHive->Hive, SubKey->KeyCell->SubKeyLists[Storage]); SubKey->KeyCell->SubKeyLists[Storage] = HCELL_NULL; }
@@ -1365,18 +1367,18 @@ ParentKey->KeyCell->SubKeyLists[Storage] != HCELL_NULL) { DPRINT("ParentKey SubKeyLists %lx\n", ParentKey->KeyCell->SubKeyLists); - HvFreeCell (ParentKey->RegistryHive->Hive, + HvFreeCell (&ParentKey->RegistryHive->Hive, ParentKey->KeyCell->SubKeyLists[Storage]); ParentKey->KeyCell->SubKeyLists[Storage] = HCELL_NULL; }
KeQuerySystemTime(&ParentKey->KeyCell->LastWriteTime); - HvMarkCellDirty(ParentKey->RegistryHive->Hive, + HvMarkCellDirty(&ParentKey->RegistryHive->Hive, ParentKey->KeyCellOffset); }
/* Destroy key cell */ - HvFreeCell (RegistryHive->Hive, SubKey->KeyCellOffset); + HvFreeCell (&RegistryHive->Hive, SubKey->KeyCellOffset); SubKey->KeyCell = NULL; SubKey->KeyCellOffset = (HCELL_INDEX)-1;
@@ -1407,13 +1409,13 @@ return STATUS_OBJECT_NAME_NOT_FOUND; }
- ValueListCell = HvGetCell (RegistryHive->Hive, KeyCell->ValueList.List); + ValueListCell = HvGetCell (&RegistryHive->Hive, KeyCell->ValueList.List);
VERIFY_VALUE_LIST_CELL(ValueListCell);
for (i = 0; i < KeyCell->ValueList.Count; i++) { - CurValueCell = HvGetCell (RegistryHive->Hive, + CurValueCell = HvGetCell (&RegistryHive->Hive, ValueListCell->ValueOffset[i]);
if (CmiComparePackedNames(ValueName, @@ -1455,11 +1457,11 @@ }
- ValueListCell = HvGetCell (RegistryHive->Hive, KeyCell->ValueList.List); + ValueListCell = HvGetCell (&RegistryHive->Hive, KeyCell->ValueList.List);
VERIFY_VALUE_LIST_CELL(ValueListCell);
- CurValueCell = HvGetCell (RegistryHive->Hive, ValueListCell->ValueOffset[Index]); + CurValueCell = HvGetCell (&RegistryHive->Hive, ValueListCell->ValueOffset[Index]);
*ValueCell = CurValueCell;
@@ -1490,34 +1492,34 @@ { CellSize = sizeof(VALUE_LIST_CELL) + (3 * sizeof(HCELL_INDEX)); - ValueListCellOffset = HvAllocateCell (RegistryHive->Hive, CellSize, Storage); + ValueListCellOffset = HvAllocateCell (&RegistryHive->Hive, CellSize, Storage); if (ValueListCellOffset == HCELL_NULL) { return STATUS_INSUFFICIENT_RESOURCES; }
- ValueListCell = HvGetCell (RegistryHive->Hive, ValueListCellOffset); + ValueListCell = HvGetCell (&RegistryHive->Hive, ValueListCellOffset); KeyCell->ValueList.List = ValueListCellOffset; - HvMarkCellDirty(RegistryHive->Hive, KeyCellOffset); + HvMarkCellDirty(&RegistryHive->Hive, KeyCellOffset); } else { - ValueListCell = (PVALUE_LIST_CELL) HvGetCell (RegistryHive->Hive, KeyCell->ValueList.List); - CellSize = ABS_VALUE(HvGetCellSize(RegistryHive->Hive, ValueListCell)); + ValueListCell = (PVALUE_LIST_CELL) HvGetCell (&RegistryHive->Hive, KeyCell->ValueList.List); + CellSize = ABS_VALUE(HvGetCellSize(&RegistryHive->Hive, ValueListCell));
if (KeyCell->ValueList.Count >= (CellSize / sizeof(HCELL_INDEX))) { CellSize *= 2; - ValueListCellOffset = HvReallocateCell (RegistryHive->Hive, KeyCell->ValueList.List, CellSize); + ValueListCellOffset = HvReallocateCell (&RegistryHive->Hive, KeyCell->ValueList.List, CellSize); if (ValueListCellOffset == HCELL_NULL) { return STATUS_INSUFFICIENT_RESOURCES; }
- ValueListCell = HvGetCell (RegistryHive->Hive, ValueListCellOffset); + ValueListCell = HvGetCell (&RegistryHive->Hive, ValueListCellOffset); KeyCell->ValueList.List = ValueListCellOffset; - HvMarkCellDirty (RegistryHive->Hive, KeyCellOffset); + HvMarkCellDirty (&RegistryHive->Hive, KeyCellOffset); } }
@@ -1542,9 +1544,9 @@ ValueListCell->ValueOffset[KeyCell->ValueList.Count] = NewValueCellOffset; KeyCell->ValueList.Count++;
- HvMarkCellDirty(RegistryHive->Hive, KeyCellOffset); - HvMarkCellDirty(RegistryHive->Hive, KeyCell->ValueList.List); - HvMarkCellDirty(RegistryHive->Hive, NewValueCellOffset); + HvMarkCellDirty(&RegistryHive->Hive, KeyCellOffset); + HvMarkCellDirty(&RegistryHive->Hive, KeyCell->ValueList.List); + HvMarkCellDirty(&RegistryHive->Hive, NewValueCellOffset);
*pValueCell = NewValueCell; *pValueCellOffset = NewValueCellOffset; @@ -1569,13 +1571,13 @@ return STATUS_OBJECT_NAME_NOT_FOUND; }
- ValueListCell = HvGetCell (RegistryHive->Hive, KeyCell->ValueList.List); + ValueListCell = HvGetCell (&RegistryHive->Hive, KeyCell->ValueList.List);
VERIFY_VALUE_LIST_CELL(ValueListCell);
for (i = 0; i < KeyCell->ValueList.Count; i++) { - CurValueCell = HvGetCell (RegistryHive->Hive, ValueListCell->ValueOffset[i]); + CurValueCell = HvGetCell (&RegistryHive->Hive, ValueListCell->ValueOffset[i]);
if (CmiComparePackedNames(ValueName, CurValueCell->Name, @@ -1604,16 +1606,16 @@
if (KeyCell->ValueList.Count == 0) { - HvFreeCell(RegistryHive->Hive, KeyCell->ValueList.List); + HvFreeCell(&RegistryHive->Hive, KeyCell->ValueList.List); KeyCell->ValueList.List = -1; } else { - HvMarkCellDirty(RegistryHive->Hive, + HvMarkCellDirty(&RegistryHive->Hive, KeyCell->ValueList.List); }
- HvMarkCellDirty(RegistryHive->Hive, + HvMarkCellDirty(&RegistryHive->Hive, KeyCellOffset);
return STATUS_SUCCESS; @@ -1641,7 +1643,7 @@ *HashBlock = NULL; NewHashSize = sizeof(HASH_TABLE_CELL) + (SubKeyCount * sizeof(HASH_RECORD)); - *HBOffset = HvAllocateCell (RegistryHive->Hive, NewHashSize, Storage); + *HBOffset = HvAllocateCell (&RegistryHive->Hive, NewHashSize, Storage);
if (*HBOffset == HCELL_NULL) { @@ -1650,7 +1652,7 @@ else { ASSERT(SubKeyCount <= 0xffff); /* should really be USHORT_MAX or similar */ - NewHashBlock = HvGetCell (RegistryHive->Hive, *HBOffset); + NewHashBlock = HvGetCell (&RegistryHive->Hive, *HBOffset); NewHashBlock->Id = REG_HASH_TABLE_CELL_ID; NewHashBlock->HashTableSize = (USHORT)SubKeyCount; *HashBlock = NewHashBlock; @@ -1669,7 +1671,7 @@ PCM_KEY_NODE KeyCell;
KeyOffset = HashBlock->Table[Index].KeyOffset; - KeyCell = HvGetCell (RegistryHive->Hive, KeyOffset); + KeyCell = HvGetCell (&RegistryHive->Hive, KeyOffset);
return KeyCell; } @@ -1693,7 +1695,7 @@ NewKeyCell->Name, min(NewKeyCell->NameSize, sizeof(ULONG))); } - HvMarkCellDirty(RegistryHive->Hive, KeyCell->SubKeyLists[StorageType]); + HvMarkCellDirty(&RegistryHive->Hive, KeyCell->SubKeyLists[StorageType]); return STATUS_SUCCESS; }
@@ -1741,7 +1743,7 @@
DPRINT("ValueName->Length %lu NameSize %lu\n", ValueName->Length, NameSize);
- *VBOffset = HvAllocateCell (RegistryHive->Hive, sizeof(CM_KEY_VALUE) + NameSize, Storage); + *VBOffset = HvAllocateCell (&RegistryHive->Hive, sizeof(CM_KEY_VALUE) + NameSize, Storage); if (*VBOffset == HCELL_NULL) { Status = STATUS_INSUFFICIENT_RESOURCES; @@ -1749,7 +1751,7 @@ else { ASSERT(NameSize <= 0xffff); /* should really be USHORT_MAX or similar */ - NewValueCell = HvGetCell (RegistryHive->Hive, *VBOffset); + NewValueCell = HvGetCell (&RegistryHive->Hive, *VBOffset); NewValueCell->Id = REG_VALUE_CELL_ID; NewValueCell->NameSize = (USHORT)NameSize; if (Packable) @@ -1792,11 +1794,11 @@ && ValueCell->DataSize > sizeof(HCELL_INDEX) && ValueCell->DataOffset != HCELL_NULL) { - HvFreeCell (RegistryHive->Hive, ValueCell->DataOffset); + HvFreeCell (&RegistryHive->Hive, ValueCell->DataOffset); }
/* Destroy the value cell */ - HvFreeCell (RegistryHive->Hive, ValueCellOffset); + HvFreeCell (&RegistryHive->Hive, ValueCellOffset);
return STATUS_SUCCESS; } @@ -2002,19 +2004,19 @@ { /* Allocate and copy key cell */ NewKeyCellSize = sizeof(CM_KEY_NODE) + SrcKeyCell->NameSize; - NewKeyCellOffset = HvAllocateCell (DstHive->Hive, NewKeyCellSize, HvStable); + NewKeyCellOffset = HvAllocateCell (&DstHive->Hive, NewKeyCellSize, HvStable); if (NewKeyCellOffset == HCELL_NULL) { DPRINT1 ("Failed to allocate a key cell\n"); return STATUS_INSUFFICIENT_RESOURCES; }
- NewKeyCell = HvGetCell (DstHive->Hive, NewKeyCellOffset); + NewKeyCell = HvGetCell (&DstHive->Hive, NewKeyCellOffset); RtlCopyMemory (NewKeyCell, SrcKeyCell, NewKeyCellSize);
- DstHive->Hive->HiveHeader->RootCell = NewKeyCellOffset; + DstHive->Hive.HiveHeader->RootCell = NewKeyCellOffset;
/* Copy class name */ if (SrcKeyCell->ClassNameOffset != (HCELL_INDEX) -1) @@ -2023,17 +2025,17 @@ PVOID NewClassNameCell; HCELL_INDEX NewClassNameOffset;
- SrcClassNameCell = HvGetCell (SrcHive->Hive, SrcKeyCell->ClassNameOffset); + SrcClassNameCell = HvGetCell (&SrcHive->Hive, SrcKeyCell->ClassNameOffset);
NewKeyCell->ClassSize = SrcKeyCell->ClassSize; - NewClassNameOffset = HvAllocateCell (DstHive->Hive, NewKeyCell->ClassSize, HvStable); + NewClassNameOffset = HvAllocateCell (&DstHive->Hive, NewKeyCell->ClassSize, HvStable); if (NewClassNameOffset == HCELL_NULL) { DPRINT1 ("CmiAllocateBlock() failed\n"); return STATUS_INSUFFICIENT_RESOURCES; }
- NewClassNameCell = HvGetCell (DstHive->Hive, NewClassNameOffset); + NewClassNameCell = HvGetCell (&DstHive->Hive, NewClassNameOffset); RtlCopyMemory (NewClassNameCell, SrcClassNameCell, NewKeyCell->ClassSize); @@ -2083,7 +2085,7 @@
NewValueListCellSize = ROUND_UP(SrcKeyCell->ValueList.Count, 4) * sizeof(HCELL_INDEX); - NewKeyCell->ValueList.List = HvAllocateCell (DstHive->Hive, + NewKeyCell->ValueList.List = HvAllocateCell (&DstHive->Hive, NewValueListCellSize, HvStable); if (NewKeyCell->ValueList.List == HCELL_NULL) @@ -2093,26 +2095,26 @@ } DPRINT1("KeyCell->ValueList.List: %x\n", NewKeyCell->ValueList.List);
- NewValueListCell = HvGetCell (DstHive->Hive, NewKeyCell->ValueList.List); + NewValueListCell = HvGetCell (&DstHive->Hive, NewKeyCell->ValueList.List); RtlZeroMemory (NewValueListCell, NewValueListCellSize);
/* Copy values */ - SrcValueListCell = HvGetCell (SrcHive->Hive, SrcKeyCell->ValueList.List); + SrcValueListCell = HvGetCell (&SrcHive->Hive, SrcKeyCell->ValueList.List); for (i = 0; i < SrcKeyCell->ValueList.Count; i++) { /* Copy value cell */ - SrcValueCell = HvGetCell (SrcHive->Hive, SrcValueListCell->ValueOffset[i]); + SrcValueCell = HvGetCell (&SrcHive->Hive, SrcValueListCell->ValueOffset[i]);
NewValueCellSize = sizeof(CM_KEY_VALUE) + SrcValueCell->NameSize; - ValueCellOffset = HvAllocateCell (DstHive->Hive, NewValueCellSize, HvStable); + ValueCellOffset = HvAllocateCell (&DstHive->Hive, NewValueCellSize, HvStable); if (ValueCellOffset == HCELL_NULL) { DPRINT1 ("HvAllocateCell() failed (Status %lx)\n", Status); return STATUS_INSUFFICIENT_RESOURCES; }
- NewValueCell = HvGetCell (DstHive->Hive, ValueCellOffset); + NewValueCell = HvGetCell (&DstHive->Hive, ValueCellOffset); NewValueListCell->ValueOffset[i] = ValueCellOffset; RtlCopyMemory (NewValueCell, SrcValueCell, @@ -2121,15 +2123,15 @@ /* Copy value data cell */ if (SrcValueCell->DataSize > (LONG) sizeof(PVOID)) { - SrcValueDataCell = HvGetCell (SrcHive->Hive, SrcValueCell->DataOffset); - - ValueDataCellOffset = HvAllocateCell (DstHive->Hive, SrcValueCell->DataSize, HvStable); + SrcValueDataCell = HvGetCell (&SrcHive->Hive, SrcValueCell->DataOffset); + + ValueDataCellOffset = HvAllocateCell (&DstHive->Hive, SrcValueCell->DataSize, HvStable); if (ValueDataCellOffset == HCELL_NULL) { DPRINT1 ("HvAllocateCell() failed\n"); return STATUS_INSUFFICIENT_RESOURCES; } - NewValueDataCell = HvGetCell (DstHive->Hive, ValueDataCellOffset); + NewValueDataCell = HvGetCell (&DstHive->Hive, ValueDataCellOffset); RtlCopyMemory (NewValueDataCell, SrcValueDataCell, SrcValueCell->DataSize); @@ -2148,23 +2150,23 @@ HCELL_INDEX NewSubKeyCellOffset; PHASH_RECORD SrcHashRecord;
- SrcHashTableCell = HvGetCell (SrcHive->Hive, SrcKeyCell->SubKeyLists[HvStable]); + SrcHashTableCell = HvGetCell (&SrcHive->Hive, SrcKeyCell->SubKeyLists[HvStable]);
for (i = 0; i < SrcKeyCell->SubKeyCounts[HvStable]; i++) { SrcHashRecord = &SrcHashTableCell->Table[i]; - SrcSubKeyCell = HvGetCell (SrcHive->Hive, SrcHashRecord->KeyOffset); + SrcSubKeyCell = HvGetCell (&SrcHive->Hive, SrcHashRecord->KeyOffset);
/* Allocate and copy key cell */ NewSubKeyCellSize = sizeof(CM_KEY_NODE) + SrcSubKeyCell->NameSize; - NewSubKeyCellOffset = HvAllocateCell (DstHive->Hive, NewSubKeyCellSize, HvStable); + NewSubKeyCellOffset = HvAllocateCell (&DstHive->Hive, NewSubKeyCellSize, HvStable); if (NewSubKeyCellOffset == HCELL_NULL) { DPRINT1 ("Failed to allocate a sub key cell\n"); return STATUS_INSUFFICIENT_RESOURCES; }
- NewSubKeyCell = HvGetCell (DstHive->Hive, NewSubKeyCellOffset); + NewSubKeyCell = HvGetCell (&DstHive->Hive, NewSubKeyCellOffset); NewHashTableCell->Table[i].KeyOffset = NewSubKeyCellOffset; NewHashTableCell->Table[i].HashValue = SrcHashRecord->HashValue;
@@ -2179,11 +2181,11 @@ PVOID NewClassNameCell; HCELL_INDEX NewClassNameOffset;
- SrcClassNameCell = HvGetCell (SrcHive->Hive, + SrcClassNameCell = HvGetCell (&SrcHive->Hive, SrcSubKeyCell->ClassNameOffset);
NewSubKeyCell->ClassSize = SrcSubKeyCell->ClassSize; - NewClassNameOffset = HvAllocateCell (DstHive->Hive, + NewClassNameOffset = HvAllocateCell (&DstHive->Hive, NewSubKeyCell->ClassSize, HvStable); if (NewClassNameOffset == HCELL_NULL) @@ -2192,7 +2194,7 @@ return STATUS_INSUFFICIENT_RESOURCES; }
- NewClassNameCell = HvGetCell (DstHive->Hive, NewClassNameOffset); + NewClassNameCell = HvGetCell (&DstHive->Hive, NewClassNameOffset); NewSubKeyCell->ClassNameOffset = NewClassNameOffset; RtlCopyMemory (NewClassNameCell, SrcClassNameCell, @@ -2221,7 +2223,7 @@ HANDLE FileHandle) { Hive->HiveHandle = FileHandle; - return HvWriteHive(Hive->Hive) ? STATUS_SUCCESS : STATUS_UNSUCCESSFUL; + return HvWriteHive(&Hive->Hive) ? STATUS_SUCCESS : STATUS_UNSUCCESSFUL; }
/* EOF */
Modified: trunk/reactos/ntoskrnl/cm/registry.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/cm/registry.c?rev=... ============================================================================== --- trunk/reactos/ntoskrnl/cm/registry.c (original) +++ trunk/reactos/ntoskrnl/cm/registry.c Mon Aug 14 18:16:00 2006 @@ -251,8 +251,8 @@ &RootKeyHandle); ASSERT(NT_SUCCESS(Status)); RootKey->RegistryHive = CmiVolatileHive; - RootKey->KeyCellOffset = CmiVolatileHive->Hive->HiveHeader->RootCell; - RootKey->KeyCell = HvGetCell (CmiVolatileHive->Hive, RootKey->KeyCellOffset); + RootKey->KeyCellOffset = CmiVolatileHive->Hive.HiveHeader->RootCell; + RootKey->KeyCell = HvGetCell (&CmiVolatileHive->Hive, RootKey->KeyCellOffset); RootKey->ParentKey = RootKey; RootKey->Flags = 0; RootKey->SubKeyCounts = 0; @@ -630,8 +630,8 @@ return STATUS_INSUFFICIENT_RESOURCES; }
- NewKey->KeyCellOffset = RegistryHive->Hive->HiveHeader->RootCell; - NewKey->KeyCell = HvGetCell (RegistryHive->Hive, NewKey->KeyCellOffset); + NewKey->KeyCellOffset = RegistryHive->Hive.HiveHeader->RootCell; + NewKey->KeyCell = HvGetCell (&RegistryHive->Hive, NewKey->KeyCellOffset); NewKey->RegistryHive = RegistryHive;
Status = RtlpCreateUnicodeString(&NewKey->Name,
Modified: trunk/reactos/ntoskrnl/cm/regobj.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/cm/regobj.c?rev=23... ============================================================================== --- trunk/reactos/ntoskrnl/cm/regobj.c (original) +++ trunk/reactos/ntoskrnl/cm/regobj.c Mon Aug 14 18:16:00 2006 @@ -511,7 +511,7 @@ KeyObject);
KeQuerySystemTime (&ParentKeyObject->KeyCell->LastWriteTime); - HvMarkCellDirty (ParentKeyObject->RegistryHive->Hive, + HvMarkCellDirty (&ParentKeyObject->RegistryHive->Hive, ParentKeyObject->KeyCellOffset);
if (!IsNoFileHive (KeyObject->RegistryHive) || @@ -925,7 +925,7 @@
if (ValueCell->DataSize > 0) { - DataCell = HvGetCell (RegistryHive->Hive, ValueCell->DataOffset); + DataCell = HvGetCell (&RegistryHive->Hive, ValueCell->DataOffset); RtlCopyMemory(TargetPath->Buffer, DataCell, TargetPath->Length);