From 52077d8306b1b03b5a2d81b83cccdb24ba1d6d4f Mon Sep 17 00:00:00 2001 From: Eric Kohl Date: Sun, 8 May 2011 21:37:00 +0000 Subject: [PATCH] [NTOSKRNL] Implement CmpSetVersionData: Set the CurrentType value in the HKLM\Software\Microsoft\Windows NT\CurrentVersion key. svn path=/trunk/; revision=51653 --- reactos/ntoskrnl/config/cmsysini.c | 67 ++++++++++++++++++++++++++ reactos/ntoskrnl/config/ntapi.c | 4 +- reactos/ntoskrnl/include/internal/cm.h | 6 +++ 3 files changed, 75 insertions(+), 2 deletions(-) diff --git a/reactos/ntoskrnl/config/cmsysini.c b/reactos/ntoskrnl/config/cmsysini.c index 164b45fa668..1d22e87ce4c 100644 --- a/reactos/ntoskrnl/config/cmsysini.c +++ b/reactos/ntoskrnl/config/cmsysini.c @@ -1938,4 +1938,71 @@ CmShutdownSystem(VOID) CmpDoFlushAll(TRUE); } +VOID +NTAPI +CmpSetVersionData(VOID) +{ + OBJECT_ATTRIBUTES ObjectAttributes; + UNICODE_STRING KeyName; + UNICODE_STRING ValueName; + UNICODE_STRING ValueData; + HANDLE KeyHandle; + WCHAR Buffer[128]; + NTSTATUS Status; + + /* Open the 'CurrentVersion' key */ + RtlInitUnicodeString(&KeyName, + L"\\REGISTRY\\MACHINE\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion"); + + InitializeObjectAttributes(&ObjectAttributes, + &KeyName, + OBJ_CASE_INSENSITIVE, + 0, + NULL); + + Status = NtCreateKey(&KeyHandle, + KEY_CREATE_SUB_KEY, + &ObjectAttributes, + 0, + NULL, + 0, + NULL); + if (!NT_SUCCESS(Status)) + { + DPRINT1("Failed to create key &wZ (Status: %08lx)\n", &KeyName, Status); + return; + } + + /* Set the 'CurrentType' value */ + RtlInitUnicodeString(&ValueName, + L"CurrentType"); + +#ifdef CONFIG_SMP + wcscpy(Buffer, L"Multiprocessor"); +#else + wcscpy(Buffer, L"Uniprocessor"); +#endif + + wcscat(Buffer, L" "); + +#if (DBG == 1) + wcscat(Buffer, L"Checked"); +#else + wcscat(Buffer, L"Free"); +#endif + + RtlInitUnicodeString(&ValueData, + Buffer); + + NtSetValueKey(KeyHandle, + &ValueName, + 0, + REG_SZ, + ValueData.Buffer, + ValueData.Length + sizeof(WCHAR)); + + /* Close the key */ + NtClose(KeyHandle); +} + /* EOF */ diff --git a/reactos/ntoskrnl/config/ntapi.c b/reactos/ntoskrnl/config/ntapi.c index 0e76f7cd743..95f61166ddc 100644 --- a/reactos/ntoskrnl/config/ntapi.c +++ b/reactos/ntoskrnl/config/ntapi.c @@ -937,8 +937,8 @@ NtInitializeRegistry(IN USHORT Flag) /* Initialize the hives and lazy flusher */ CmpCmdInit(SetupBoot); - /* FIXME: Save version data */ - //CmpSetVersionData(); + /* Save version data */ + CmpSetVersionData(); /* Release the registry lock */ //CmpUnlockRegistry(); diff --git a/reactos/ntoskrnl/include/internal/cm.h b/reactos/ntoskrnl/include/internal/cm.h index 9a0dd907585..d7d118cfa44 100644 --- a/reactos/ntoskrnl/include/internal/cm.h +++ b/reactos/ntoskrnl/include/internal/cm.h @@ -1529,6 +1529,12 @@ CmSetLazyFlushState( IN BOOLEAN Enable ); +VOID +NTAPI +CmpSetVersionData( + VOID +); + // // Driver List Routines // -- 2.17.1