OUT PUNICODE_STRING SourceRootDir)
{
NTSTATUS Status;
- HANDLE Handle;
+ HANDLE LinkHandle;
OBJECT_ATTRIBUTES ObjectAttributes;
UCHAR ImageFileBuffer[sizeof(UNICODE_STRING) + MAX_PATH * sizeof(WCHAR)];
PUNICODE_STRING InstallSourcePath = (PUNICODE_STRING)&ImageFileBuffer;
NULL,
NULL);
- Status = NtOpenSymbolicLinkObject(&Handle,
+ Status = NtOpenSymbolicLinkObject(&LinkHandle,
SYMBOLIC_LINK_QUERY,
&ObjectAttributes);
if (!NT_SUCCESS(Status))
SystemRootBuffer,
sizeof(SystemRootBuffer));
- Status = NtQuerySymbolicLinkObject(Handle,
+ /* Resolve the link and close its handle */
+ Status = NtQuerySymbolicLinkObject(LinkHandle,
&SystemRootPath,
&BufferSize);
- NtClose(Handle);
+ NtClose(LinkHandle);
if (!NT_SUCCESS(Status))
return Status; // Unexpected error
*/
ERROR_NUMBER
UpdateRegistry(
- IN HINF SetupInf,
IN OUT PUSETUP_DATA pSetupData,
/**/IN BOOLEAN RepairUpdateFlag, /* HACK HACK! */
/**/IN PPARTLIST PartitionList, /* HACK HACK! */
/**/IN WCHAR DestinationDriveLetter, /* HACK HACK! */
/**/IN PCWSTR SelectedLanguageId, /* HACK HACK! */
- IN PGENERIC_LIST DisplayList,
- IN PGENERIC_LIST LayoutList,
- IN PGENERIC_LIST LanguageList,
IN PREGISTRY_STATUS_ROUTINE StatusRoutine OPTIONAL)
{
ERROR_NUMBER ErrorNumber;
* "repair" (aka. recreate: ShouldRepairRegistry == TRUE).
*/
- Success = SpInfFindFirstLine(SetupInf, L"HiveInfs.Fresh", NULL, &InfContext); // Windows-compatible
+ Success = SpInfFindFirstLine(pSetupData->SetupInf, L"HiveInfs.Fresh", NULL, &InfContext); // Windows-compatible
if (!Success)
- Success = SpInfFindFirstLine(SetupInf, L"HiveInfs.Install", NULL, &InfContext); // ReactOS-specific
+ Success = SpInfFindFirstLine(pSetupData->SetupInf, L"HiveInfs.Install", NULL, &InfContext); // ReactOS-specific
if (!Success)
{
* we only update the hives.
*/
- Success = SpInfFindFirstLine(SetupInf, L"HiveInfs.Upgrade", NULL, &InfContext);
+ Success = SpInfFindFirstLine(pSetupData->SetupInf, L"HiveInfs.Upgrade", NULL, &InfContext);
if (!Success)
{
/* Nothing to do for update! */
/* Update display registry settings */
if (StatusRoutine) StatusRoutine(DisplaySettingsUpdate);
- if (!ProcessDisplayRegistry(SetupInf, DisplayList))
+ if (!ProcessDisplayRegistry(pSetupData->SetupInf, pSetupData->DisplayList))
{
ErrorNumber = ERROR_UPDATE_DISPLAY_SETTINGS;
goto Cleanup;
/* Set the locale */
if (StatusRoutine) StatusRoutine(LocaleSettingsUpdate);
- if (!ProcessLocaleRegistry(LanguageList))
+ if (!ProcessLocaleRegistry(pSetupData->LanguageList))
{
ErrorNumber = ERROR_UPDATE_LOCALESETTINGS;
goto Cleanup;
{
/* Update keyboard layout settings */
if (StatusRoutine) StatusRoutine(KeybSettingsUpdate);
- if (!ProcessKeyboardLayoutRegistry(LayoutList, SelectedLanguageId))
+ if (!ProcessKeyboardLayoutRegistry(pSetupData->LayoutList, SelectedLanguageId))
{
ErrorNumber = ERROR_UPDATE_KBSETTINGS;
goto Cleanup;
ERROR_NUMBER
UpdateRegistry(
- IN HINF SetupInf,
IN OUT PUSETUP_DATA pSetupData,
/**/IN BOOLEAN RepairUpdateFlag, /* HACK HACK! */
/**/IN PPARTLIST PartitionList, /* HACK HACK! */
/**/IN WCHAR DestinationDriveLetter, /* HACK HACK! */
/**/IN PCWSTR SelectedLanguageId, /* HACK HACK! */
- IN PGENERIC_LIST DisplayList,
- IN PGENERIC_LIST LayoutList,
- IN PGENERIC_LIST LanguageList,
IN PREGISTRY_STATUS_ROUTINE StatusRoutine OPTIONAL);
/* EOF */
DirectoryHandle,
NULL);
Status = NtOpenSymbolicLinkObject(&LinkHandle,
- SYMBOLIC_LINK_ALL_ACCESS,
+ SYMBOLIC_LINK_QUERY,
&ObjectAttributes);
/* Close the \ArcName object directory handle */
/* Reserve one WCHAR for the NULL-termination */
NtName->MaximumLength -= sizeof(UNICODE_NULL);
- /* Resolve the link */
+ /* Resolve the link and close its handle */
Status = NtQuerySymbolicLinkObject(LinkHandle, NtName, NULL);
+ NtClose(LinkHandle);
/* Restore the NULL-termination */
NtName->MaximumLength += sizeof(UNICODE_NULL);
NtName->Buffer[NtName->Length / sizeof(WCHAR)] = UNICODE_NULL;
}
- NtClose(LinkHandle);
return Status;
}
* PROJECT: ReactOS text-mode setup
* FILE: base/setup/usetup/usetup.c
* PURPOSE: Text-mode setup
- * PROGRAMMER: Casper S. Hornstrup (chorns@users.sourceforge.net)
+ * PROGRAMMERS: Casper S. Hornstrup (chorns@users.sourceforge.net)
* Hervé Poussineau (hpoussin@reactos.org)
*/
MUIDisplayPage(REGISTRY_PAGE);
- Error = UpdateRegistry(USetupData.SetupInf,
- &USetupData,
+ Error = UpdateRegistry(&USetupData,
RepairUpdateFlag,
PartitionList,
DestinationDriveLetter,
SelectedLanguageId,
- USetupData.DisplayList,
- USetupData.LayoutList,
- USetupData.LanguageList,
RegistryStatus);
if (Error != ERROR_SUCCESS)
{