mirror of
https://github.com/reactos/reactos.git
synced 2024-08-08 04:08:29 +00:00
added #ifdef around headers to support private test build and various changes to debug diagnostics.
svn path=/trunk/; revision=3734
This commit is contained in:
parent
d7753423c7
commit
adb86bd362
|
@ -6,6 +6,9 @@
|
|||
* UPDATE HISTORY:
|
||||
*/
|
||||
|
||||
#ifdef WIN32_REGDBG
|
||||
#include "cm_win32.h"
|
||||
#else
|
||||
#include <ddk/ntddk.h>
|
||||
#include <ddk/ntifs.h>
|
||||
#include <roscfg.h>
|
||||
|
@ -19,6 +22,7 @@
|
|||
#include <internal/debug.h>
|
||||
|
||||
#include "cm.h"
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
@ -62,7 +66,11 @@ CmiCreateDefaultRootKeyCell(PKEY_CELL RootKeyCell)
|
|||
{
|
||||
assert(RootKeyCell);
|
||||
RtlZeroMemory(RootKeyCell, sizeof(KEY_CELL));
|
||||
#ifdef WIN32_REGDBG
|
||||
RootKeyCell->CellSize = -(LONG)sizeof(KEY_CELL);
|
||||
#else
|
||||
RootKeyCell->CellSize = -sizeof(KEY_CELL);
|
||||
#endif
|
||||
RootKeyCell->Id = REG_KEY_CELL_ID;
|
||||
RootKeyCell->Type = REG_ROOT_KEY_CELL_TYPE;
|
||||
ZwQuerySystemTime((PTIME) &RootKeyCell->LastWriteTime);
|
||||
|
@ -481,10 +489,16 @@ CmiInitPermanentRegistryHive(PREGISTRY_HIVE RegistryHive,
|
|||
PHBIN tmpBin;
|
||||
ULONG i, j;
|
||||
|
||||
IO_STATUS_BLOCK Iosb;
|
||||
|
||||
DPRINT("CmiInitPermanentRegistryHive(%p, %S, %d) - Entered.\n", RegistryHive, Filename, CreateNew);
|
||||
|
||||
/* Duplicate Filename */
|
||||
Status = RtlCreateUnicodeString(&RegistryHive->Filename, Filename);
|
||||
if (!NT_SUCCESS(Status))
|
||||
if (!NT_SUCCESS(Status)) {
|
||||
DPRINT("CmiInitPermanentRegistryHive() - Failed 1.\n");
|
||||
return Status;
|
||||
}
|
||||
|
||||
InitializeObjectAttributes(&ObjectAttributes,
|
||||
&RegistryHive->Filename,
|
||||
|
@ -517,6 +531,7 @@ CmiInitPermanentRegistryHive(PREGISTRY_HIVE RegistryHive,
|
|||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
RtlFreeUnicodeString(&RegistryHive->Filename);
|
||||
DPRINT("CmiCreateNewRegFile() - Failed with status %x.\n", Status);
|
||||
return Status;
|
||||
}
|
||||
|
||||
|
@ -533,16 +548,19 @@ CmiInitPermanentRegistryHive(PREGISTRY_HIVE RegistryHive,
|
|||
{
|
||||
ZwClose(FileHandle);
|
||||
RtlFreeUnicodeString(&RegistryHive->Filename);
|
||||
DPRINT("CmiInitPermanentRegistryHive() - ObReferenceObjectByHandle Failed with status %x.\n", Status);
|
||||
return Status;
|
||||
}
|
||||
|
||||
FileOffset.u.HighPart = 0;
|
||||
FileOffset.u.LowPart = 0;
|
||||
DPRINT(" Attempting to ZwReadFile(%d) for %d bytes into %p\n", FileHandle, sizeof(HIVE_HEADER), RegistryHive->HiveHeader);
|
||||
Status = ZwReadFile(FileHandle,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
// 0,
|
||||
&Iosb,
|
||||
RegistryHive->HiveHeader,
|
||||
sizeof(HIVE_HEADER),
|
||||
&FileOffset,
|
||||
|
@ -554,6 +572,7 @@ CmiInitPermanentRegistryHive(PREGISTRY_HIVE RegistryHive,
|
|||
{
|
||||
ObDereferenceObject(RegistryHive->FileObject);
|
||||
RtlFreeUnicodeString(&RegistryHive->Filename);
|
||||
DPRINT("CmiInitPermanentRegistryHive() - Failed 4.\n");
|
||||
return Status;
|
||||
}
|
||||
|
||||
|
@ -569,15 +588,29 @@ CmiInitPermanentRegistryHive(PREGISTRY_HIVE RegistryHive,
|
|||
{
|
||||
ObDereferenceObject(RegistryHive->FileObject);
|
||||
RtlFreeUnicodeString(&RegistryHive->Filename);
|
||||
DPRINT("CmiInitPermanentRegistryHive() - Failed 5.\n");
|
||||
return Status;
|
||||
}
|
||||
|
||||
#if 0
|
||||
/* We have a reference to the file object so we don't need the handle anymore */
|
||||
ZwClose(FileHandle);
|
||||
#endif
|
||||
|
||||
RegistryHive->FileSize = fsi.EndOfFile.u.LowPart;
|
||||
#ifdef WIN32_REGDBG
|
||||
// assert(RegistryHive->FileSize);
|
||||
if (RegistryHive->FileSize) {
|
||||
RegistryHive->BlockListSize = (RegistryHive->FileSize / 4096) - 1;
|
||||
} else {
|
||||
ObDereferenceObject(RegistryHive->FileObject);
|
||||
RtlFreeUnicodeString(&RegistryHive->Filename);
|
||||
DPRINT("CmiInitPermanentRegistryHive() - Failed, zero length hive file.\n");
|
||||
return STATUS_INSUFFICIENT_RESOURCES;
|
||||
}
|
||||
#else
|
||||
RegistryHive->BlockListSize = (RegistryHive->FileSize / 4096) - 1;
|
||||
#endif
|
||||
|
||||
DPRINT("Space needed for block list describing hive: 0x%x\n",
|
||||
sizeof(PHBIN *) * RegistryHive->BlockListSize);
|
||||
|
@ -590,6 +623,7 @@ CmiInitPermanentRegistryHive(PREGISTRY_HIVE RegistryHive,
|
|||
ExFreePool(RegistryHive->BlockList);
|
||||
ObDereferenceObject(RegistryHive->FileObject);
|
||||
RtlFreeUnicodeString(&RegistryHive->Filename);
|
||||
DPRINT("CmiInitPermanentRegistryHive() - Failed 6.\n");
|
||||
return STATUS_INSUFFICIENT_RESOURCES;
|
||||
}
|
||||
|
||||
|
@ -611,6 +645,7 @@ CmiInitPermanentRegistryHive(PREGISTRY_HIVE RegistryHive,
|
|||
ExFreePool(RegistryHive->BlockList);
|
||||
ObDereferenceObject(RegistryHive->FileObject);
|
||||
RtlFreeUnicodeString(&RegistryHive->Filename);
|
||||
DPRINT("CmiInitPermanentRegistryHive() - Failed 7.\n");
|
||||
return Status;
|
||||
}
|
||||
|
||||
|
@ -618,27 +653,33 @@ CmiInitPermanentRegistryHive(PREGISTRY_HIVE RegistryHive,
|
|||
|
||||
RegistryHive->BlockList[0] = ExAllocatePool(PagedPool,
|
||||
RegistryHive->FileSize - 4096);
|
||||
#ifdef WIN32_REGDBG
|
||||
RtlZeroMemory(RegistryHive->BlockList[0], RegistryHive->FileSize - 4096);
|
||||
#endif
|
||||
|
||||
if (RegistryHive->BlockList[0] == NULL)
|
||||
{
|
||||
ExFreePool(RegistryHive->BlockList);
|
||||
ObDereferenceObject(RegistryHive->FileObject);
|
||||
RtlFreeUnicodeString(&RegistryHive->Filename);
|
||||
DPRINT("CmiInitPermanentRegistryHive() - Failed 8.\n");
|
||||
return STATUS_INSUFFICIENT_RESOURCES;
|
||||
}
|
||||
|
||||
FileOffset.u.HighPart = 0;
|
||||
FileOffset.u.LowPart = 4096;
|
||||
|
||||
DPRINT(" Attempting to ZwReadFile(%d) for %d bytes into %p\n", FileHandle, RegistryHive->FileSize - 4096, (PVOID)RegistryHive->BlockList[0]);
|
||||
Status = ZwReadFile(FileHandle,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
(PVOID) RegistryHive->BlockList[0],
|
||||
RegistryHive->FileSize - 4096,
|
||||
&FileOffset,
|
||||
0);
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
// 0,
|
||||
&Iosb,
|
||||
(PVOID) RegistryHive->BlockList[0],
|
||||
RegistryHive->FileSize - 4096,
|
||||
&FileOffset,
|
||||
0);
|
||||
|
||||
assertmsg(NT_SUCCESS(Status), ("Status: 0x%X\n", Status));
|
||||
|
||||
|
@ -656,7 +697,8 @@ CmiInitPermanentRegistryHive(PREGISTRY_HIVE RegistryHive,
|
|||
if (tmpBin->BlockId != REG_BIN_ID)
|
||||
{
|
||||
DPRINT("Bad BlockId %x, offset %x\n", tmpBin->BlockId, BlockOffset);
|
||||
KeBugCheck(0);
|
||||
//KeBugCheck(0);
|
||||
return STATUS_INSUFFICIENT_RESOURCES;
|
||||
}
|
||||
|
||||
assertmsg((tmpBin->BlockSize % 4096) == 0, ("BlockSize (0x%.08x) must be multiplum of 4K\n", tmpBin->BlockSize));
|
||||
|
@ -697,6 +739,8 @@ CmiInitPermanentRegistryHive(PREGISTRY_HIVE RegistryHive,
|
|||
BlockOffset += tmpBin->BlockSize;
|
||||
}
|
||||
|
||||
DPRINT("CmiInitPermanentRegistryHive(%p, %S, %d) - Finished.\n", RegistryHive, Filename, CreateNew);
|
||||
|
||||
return STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
|
@ -769,10 +813,13 @@ CmiCreateRegistryHive(PWSTR Filename,
|
|||
}
|
||||
|
||||
KeInitializeSemaphore(&Hive->RegSem, 1, 1);
|
||||
|
||||
VERIFY_REGISTRY_HIVE(Hive);
|
||||
|
||||
*RegistryHive = Hive;
|
||||
|
||||
DPRINT("CmiCreateRegistryHive(Filename %S) - Finished.\n", Filename);
|
||||
|
||||
return(STATUS_SUCCESS);
|
||||
}
|
||||
|
||||
|
@ -944,7 +991,7 @@ CmiScanForSubKey(IN PREGISTRY_HIVE RegistryHive,
|
|||
|
||||
VERIFY_KEY_CELL(KeyCell);
|
||||
|
||||
DPRINT("Scanning for sub key %s\n", KeyName);
|
||||
//DPRINT("Scanning for sub key %s\n", KeyName);
|
||||
|
||||
assert(RegistryHive);
|
||||
|
||||
|
@ -1191,7 +1238,7 @@ CmiScanKeyForValue(IN PREGISTRY_HIVE RegistryHive,
|
|||
*ValueCell = CurValueCell;
|
||||
if (VBOffset)
|
||||
*VBOffset = ValueListCell->Values[i];
|
||||
DPRINT("Found value %s\n", ValueName);
|
||||
//DPRINT("Found value %s\n", ValueName);
|
||||
break;
|
||||
}
|
||||
CmiReleaseBlock(RegistryHive, CurValueCell);
|
||||
|
|
Loading…
Reference in a new issue