Author: cfinck Date: Sun Aug 19 23:37:47 2007 New Revision: 28425
URL: http://svn.reactos.org/svn/reactos?rev=28425&view=rev Log: - mkhive's "registry.c" used wcsncmp for comparing two strings. But this function seems to work different on different hosts (probably due to different handling of wchar_t's or whatever). To avoid this problem, use memcmp now to compare the strings as it's done two lines later. This fixes the Live-CD on Linux/Unix hosts. (For the first time, Live-CDs created by our 64-Bit Debug Buildslave are usable :-) - Change __volatile to volatile in "winddk.h". This fixes compilation problems under MSVC. - Make the prototype of RtlCompareMemory in "winnt.h" similar to the one in "winddk.h". Fixes a compilation problem in MSVC. - Define the prototype for xwcschr in "mkhive.h". Silences a warning in MSVC. - Add some casts to "reginf.c" to silence some warnings in MSVC. - Add a MSVC 2005 project file for mkhive. mkhive can be compiled under MSVC with this project file, when cmlib and inflib_host are compiled. - Remove the duplicate definition of CMLIB_HOST in "cmlib.mak".
Added: trunk/reactos/tools/mkhive/mkhive.sln trunk/reactos/tools/mkhive/mkhive.vcproj Modified: trunk/reactos/include/ddk/winddk.h trunk/reactos/include/psdk/winnt.h trunk/reactos/lib/cmlib/cmlib.mak trunk/reactos/tools/mkhive/mkhive.h trunk/reactos/tools/mkhive/reginf.c trunk/reactos/tools/mkhive/registry.c
Modified: trunk/reactos/include/ddk/winddk.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/include/ddk/winddk.h?rev=28... ============================================================================== --- trunk/reactos/include/ddk/winddk.h (original) +++ trunk/reactos/include/ddk/winddk.h Sun Aug 19 23:37:47 2007 @@ -1266,8 +1266,8 @@ { union { - __volatile ULONG_PTR Count; - __volatile PVOID Ptr; + volatile ULONG_PTR Count; + volatile PVOID Ptr; }; } EX_RUNDOWN_REF, *PEX_RUNDOWN_REF;
@@ -1362,7 +1362,7 @@ ULONG Flags; union { struct _IRP *MasterIrp; - __volatile LONG IrpCount; + volatile LONG IrpCount; PVOID SystemBuffer; } AssociatedIrp; LIST_ENTRY ThreadListEntry; @@ -1384,7 +1384,7 @@ } AsynchronousParameters; LARGE_INTEGER AllocationSize; } Overlay; - __volatile PDRIVER_CANCEL CancelRoutine; + volatile PDRIVER_CANCEL CancelRoutine; PVOID UserBuffer; union { struct { @@ -2187,7 +2187,7 @@ PIO_TIMER Timer; ULONG Flags; ULONG Characteristics; - __volatile PVPB Vpb; + volatile PVPB Vpb; PVOID DeviceExtension; DEVICE_TYPE DeviceType; CCHAR StackSize; @@ -3147,8 +3147,8 @@ POWNER_ENTRY OwnerTable; SHORT ActiveCount; USHORT Flag; - __volatile PKSEMAPHORE SharedWaiters; - __volatile PKEVENT ExclusiveWaiters; + volatile PKSEMAPHORE SharedWaiters; + volatile PKEVENT ExclusiveWaiters; OWNER_ENTRY OwnerThreads[2]; ULONG ContentionCount; USHORT NumberOfSharedWaiters; @@ -3479,15 +3479,15 @@ ULONG Flags; UNICODE_STRING FileName; LARGE_INTEGER CurrentByteOffset; - __volatile ULONG Waiters; - __volatile ULONG Busy; + volatile ULONG Waiters; + volatile ULONG Busy; PVOID LastLock; KEVENT Lock; KEVENT Event; - __volatile PIO_COMPLETION_CONTEXT CompletionContext; + volatile PIO_COMPLETION_CONTEXT CompletionContext; KSPIN_LOCK IrpListLock; LIST_ENTRY IrpList; - __volatile PVOID FileObjectExtension; + volatile PVOID FileObjectExtension; } FILE_OBJECT; typedef struct _FILE_OBJECT *PFILE_OBJECT;
@@ -4467,7 +4467,7 @@ typedef struct _IO_REMOVE_LOCK_COMMON_BLOCK { BOOLEAN Removed; BOOLEAN Reserved[3]; - __volatile LONG IoCount; + volatile LONG IoCount; KEVENT RemoveEvent; } IO_REMOVE_LOCK_COMMON_BLOCK;
@@ -4478,7 +4478,7 @@ LONG AllocateTag; LIST_ENTRY LockList; KSPIN_LOCK Spin; - __volatile LONG LowMemoryCount; + volatile LONG LowMemoryCount; ULONG Reserved1[4]; PVOID Reserved2; PIO_REMOVE_LOCK_TRACKING_BLOCK Blocks; @@ -4651,7 +4651,7 @@ typedef struct _WORK_QUEUE_ITEM { LIST_ENTRY List; PWORKER_THREAD_ROUTINE WorkerRoutine; - __volatile PVOID Parameter; + volatile PVOID Parameter; } WORK_QUEUE_ITEM, *PWORK_QUEUE_ITEM;
typedef enum _KBUGCHECK_CALLBACK_REASON {
Modified: trunk/reactos/include/psdk/winnt.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/include/psdk/winnt.h?rev=28... ============================================================================== --- trunk/reactos/include/psdk/winnt.h (original) +++ trunk/reactos/include/psdk/winnt.h Sun Aug 19 23:37:47 2007 @@ -4017,6 +4017,7 @@ ULONGLONG WINAPI VerSetConditionMask(ULONGLONG,DWORD,BYTE); #endif
+NTSYSAPI SIZE_T STDCALL RtlCompareMemory (
Modified: trunk/reactos/lib/cmlib/cmlib.mak URL: http://svn.reactos.org/svn/reactos/trunk/reactos/lib/cmlib/cmlib.mak?rev=284... ============================================================================== --- trunk/reactos/lib/cmlib/cmlib.mak (original) +++ trunk/reactos/lib/cmlib/cmlib.mak Sun Aug 19 23:37:47 2007 @@ -33,7 +33,7 @@ CMLIB_HOST_CFLAGS = -O3 -Wall -Wwrite-strings -Wpointer-arith \ -D_X86_ -D__i386__ -D_REACTOS_ -D_NTOSKRNL_ -D_NTSYSTEM_ \ -DCMLIB_HOST -D_M_IX86 -I$(CMLIB_BASE) -Iinclude/reactos -Iinclude/psdk -Iinclude/ddk -Iinclude/crt \ - -D__NO_CTYPE_INLINES -DCMLIB_HOST + -D__NO_CTYPE_INLINES
$(CMLIB_HOST_TARGET): $(CMLIB_HOST_OBJECTS) | $(CMLIB_OUT) $(ECHO_AR)
Modified: trunk/reactos/tools/mkhive/mkhive.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/tools/mkhive/mkhive.h?rev=2... ============================================================================== --- trunk/reactos/tools/mkhive/mkhive.h (original) +++ trunk/reactos/tools/mkhive/mkhive.h Sun Aug 19 23:37:47 2007 @@ -101,6 +101,13 @@ #define GCC_PACKED __attribute__((packed)) #endif//_MSC_VER
+/* rtl.c */ +PWSTR +xwcschr( + PWSTR String, + WCHAR Char +); + #endif /* __MKHIVE_H__ */
/* EOF */
Added: trunk/reactos/tools/mkhive/mkhive.sln URL: http://svn.reactos.org/svn/reactos/trunk/reactos/tools/mkhive/mkhive.sln?rev... ============================================================================== --- trunk/reactos/tools/mkhive/mkhive.sln (added) +++ trunk/reactos/tools/mkhive/mkhive.sln Sun Aug 19 23:37:47 2007 @@ -1,0 +1,20 @@ + +Microsoft Visual Studio Solution File, Format Version 9.00 +# Visual C++ Express 2005 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mkhive", "mkhive.vcproj", "{4D03FFD1-EB34-41A1-908B-F8F7350118A7}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + Release|Win32 = Release|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {4D03FFD1-EB34-41A1-908B-F8F7350118A7}.Debug|Win32.ActiveCfg = Debug|Win32 + {4D03FFD1-EB34-41A1-908B-F8F7350118A7}.Debug|Win32.Build.0 = Debug|Win32 + {4D03FFD1-EB34-41A1-908B-F8F7350118A7}.Release|Win32.ActiveCfg = Release|Win32 + {4D03FFD1-EB34-41A1-908B-F8F7350118A7}.Release|Win32.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal
Added: trunk/reactos/tools/mkhive/mkhive.vcproj URL: http://svn.reactos.org/svn/reactos/trunk/reactos/tools/mkhive/mkhive.vcproj?... ============================================================================== --- trunk/reactos/tools/mkhive/mkhive.vcproj (added) +++ trunk/reactos/tools/mkhive/mkhive.vcproj Sun Aug 19 23:37:47 2007 @@ -1,0 +1,234 @@ +<?xml version="1.0" encoding="Windows-1252"?> +<VisualStudioProject + ProjectType="Visual C++" + Version="8,00" + Name="mkhive" + ProjectGUID="{4D03FFD1-EB34-41a1-908B-F8F7350118A7}" + RootNamespace="mkhive" + Keyword="Win32Proj" + > + <Platforms> + <Platform + Name="Win32" + /> + </Platforms> + <ToolFiles> + </ToolFiles> + <Configurations> + <Configuration + Name="Debug|Win32" + OutputDirectory="$(SolutionDir)$(ConfigurationName)" + IntermediateDirectory="$(ConfigurationName)" + ConfigurationType="1" + CharacterSet="0" + > + <Tool + Name="VCPreBuildEventTool" + /> + <Tool + Name="VCCustomBuildTool" + /> + <Tool + Name="VCXMLDataGeneratorTool" + /> + <Tool + Name="VCWebServiceProxyGeneratorTool" + /> + <Tool + Name="VCMIDLTool" + /> + <Tool + Name="VCCLCompilerTool" + UseUnicodeResponseFiles="true" + Optimization="0" + AdditionalIncludeDirectories="../../include/ddk;../../include/psdk;../../include/reactos;../../lib/cmlib;../../lib/inflib;../../lib/rtl" + PreprocessorDefinitions="WIN32;_CRT_SECURE_NO_WARNINGS" + MinimalRebuild="true" + BasicRuntimeChecks="3" + RuntimeLibrary="3" + UsePrecompiledHeader="0" + WarningLevel="3" + Detect64BitPortabilityProblems="true" + DebugInformationFormat="4" + /> + <Tool + Name="VCManagedResourceCompilerTool" + /> + <Tool + Name="VCResourceCompilerTool" + /> + <Tool + Name="VCPreLinkEventTool" + /> + <Tool + Name="VCLinkerTool" + AdditionalDependencies="kernel32.lib ../../obj-i386/lib/cmlib/cmlib.a ../../obj-i386/lib/inflib_host/infcore.o ../../obj-i386/lib/inflib_host/infget.o ../../obj-i386/lib/inflib_host/infhostgen.o ../../obj-i386/lib/inflib_host/infhostget.o ../../obj-i386/lib/inflib_host/infhostglue.o ../../obj-i386/lib/inflib_host/infhostput.o ../../obj-i386/lib/inflib_host/infput.o ../../obj-i386/lib/rtl/rtl.a $(NOINHERIT)" + LinkIncremental="2" + GenerateDebugInformation="true" + SubSystem="1" + TargetMachine="1" + /> + <Tool + Name="VCALinkTool" + /> + <Tool + Name="VCManifestTool" + /> + <Tool + Name="VCXDCMakeTool" + /> + <Tool + Name="VCBscMakeTool" + /> + <Tool + Name="VCFxCopTool" + /> + <Tool + Name="VCAppVerifierTool" + /> + <Tool + Name="VCWebDeploymentTool" + /> + <Tool + Name="VCPostBuildEventTool" + /> + </Configuration> + <Configuration + Name="Release|Win32" + OutputDirectory="$(SolutionDir)$(ConfigurationName)" + IntermediateDirectory="$(ConfigurationName)" + ConfigurationType="1" + CharacterSet="0" + WholeProgramOptimization="1" + > + <Tool + Name="VCPreBuildEventTool" + /> + <Tool + Name="VCCustomBuildTool" + /> + <Tool + Name="VCXMLDataGeneratorTool" + /> + <Tool + Name="VCWebServiceProxyGeneratorTool" + /> + <Tool + Name="VCMIDLTool" + /> + <Tool + Name="VCCLCompilerTool" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="WIN32;_CRT_SECURE_NO_WARNINGS" + RuntimeLibrary="2" + UsePrecompiledHeader="0" + WarningLevel="3" + Detect64BitPortabilityProblems="true" + DebugInformationFormat="0" + /> + <Tool + Name="VCManagedResourceCompilerTool" + /> + <Tool + Name="VCResourceCompilerTool" + /> + <Tool + Name="VCPreLinkEventTool" + /> + <Tool + Name="VCLinkerTool" + AdditionalDependencies="kernel32.lib $(NOINHERIT)" + LinkIncremental="1" + GenerateDebugInformation="true" + SubSystem="1" + OptimizeReferences="2" + EnableCOMDATFolding="2" + TargetMachine="1" + /> + <Tool + Name="VCALinkTool" + /> + <Tool + Name="VCManifestTool" + /> + <Tool + Name="VCXDCMakeTool" + /> + <Tool + Name="VCBscMakeTool" + /> + <Tool + Name="VCFxCopTool" + /> + <Tool + Name="VCAppVerifierTool" + /> + <Tool + Name="VCWebDeploymentTool" + /> + <Tool + Name="VCPostBuildEventTool" + /> + </Configuration> + </Configurations> + <References> + </References> + <Files> + <Filter + Name="Source Files" + Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx" + > + <File + RelativePath=".\binhive.c" + > + </File> + <File + RelativePath=".\cmi.c" + > + </File> + <File + RelativePath=".\mkhive.c" + > + </File> + <File + RelativePath=".\reginf.c" + > + </File> + <File + RelativePath=".\registry.c" + > + </File> + <File + RelativePath=".\rtl.c" + > + </File> + </Filter> + <Filter + Name="Header Files" + Filter="h;hpp;hxx;hm;inl;inc;xsd" + > + <File + RelativePath=".\binhive.h" + > + </File> + <File + RelativePath=".\cmi.h" + > + </File> + <File + RelativePath=".\mkhive.h" + > + </File> + <File + RelativePath=".\reginf.h" + > + </File> + <File + RelativePath=".\registry.h" + > + </File> + </Filter> + </Files> + <Globals> + </Globals> +</VisualStudioProject>
Modified: trunk/reactos/tools/mkhive/reginf.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/tools/mkhive/reginf.c?rev=2... ============================================================================== --- trunk/reactos/tools/mkhive/reginf.c (original) +++ trunk/reactos/tools/mkhive/reginf.c Sun Aug 19 23:37:47 2007 @@ -262,7 +262,7 @@ if (Str == NULL) return FALSE;
- InfHostGetMultiSzField (Context, 5, Str, Size, NULL); + InfHostGetMultiSzField (Context, 5, Str, (ULONG)Size, NULL); }
if (Flags & FLG_ADDREG_APPEND) @@ -291,7 +291,7 @@ if (Str == NULL) return FALSE;
- InfHostGetStringField (Context, 5, Str, Size, NULL); + InfHostGetStringField (Context, 5, Str, (ULONG)Size, NULL); } }
@@ -347,7 +347,7 @@ return FALSE;
DPRINT("setting binary data %s len %lu\n", ValueName, Size); - InfHostGetBinaryField (Context, 5, Data, Size, NULL); + InfHostGetBinaryField (Context, 5, Data, (ULONG)Size, NULL); }
RegSetValueExA (KeyHandle, @@ -396,7 +396,7 @@
/* get key */ Length = strlen (Buffer); - if (InfHostGetStringField (Context, 2, Buffer + Length, MAX_INF_STRING_LENGTH - Length, NULL) != 0) + if (InfHostGetStringField (Context, 2, Buffer + Length, MAX_INF_STRING_LENGTH - (ULONG)Length, NULL) != 0) *Buffer = 0;
DPRINT("KeyName: <%s>\n", Buffer);
Modified: trunk/reactos/tools/mkhive/registry.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/tools/mkhive/registry.c?rev... ============================================================================== --- trunk/reactos/tools/mkhive/registry.c (original) +++ trunk/reactos/tools/mkhive/registry.c Sun Aug 19 23:37:47 2007 @@ -133,7 +133,7 @@ RtlInitUnicodeString(&KeyString, LocalKeyName);
/* Redirect from 'CurrentControlSet' to 'ControlSet001' */ - if (!wcsncmp(LocalKeyName, L"CurrentControlSet", 17) && + if (!memcmp(LocalKeyName, L"CurrentControlSet", 34) && ParentKey->NameSize == 12 && !memcmp(ParentKey->Name, L"SYSTEM", 12)) RtlInitUnicodeString(&KeyString, L"ControlSet001"); @@ -624,7 +624,7 @@ { UNICODE_STRING RootKeyName = RTL_CONSTANT_STRING(L"\"); NTSTATUS Status; - HKEY ControlSetKey, LinkKey; + HKEY ControlSetKey;
InitializeListHead(&CmiHiveListHead);