Or another way of putting this... ""Fix" 100% correct reverse engineered NT code and break it so that it matches ReactOS's broken Video Driver Framework behaviour, instead of fixing the latter".
Never gets old~ -- Best regards, Alex Ionescu On 2011-06-15, at 8:53 AM, [email protected] wrote: > Author: rharabien > Date: Wed Jun 15 12:53:32 2011 > New Revision: 52244 > > URL: http://svn.reactos.org/svn/reactos?rev=52244&view=rev > Log: > [NTOSKRNL] > - Disable displaying string by bootvid after successful kernel phase 1 > initialization, so there won't be graphical glitches at the top of screen if > system has screen debugging enabled > - Make screen black right after phase 1 initialization finish instead of > waiting 5 seconds. It removes black rectangle which appeared for me in > explorer. > - Initialize some global variables in inbv.c (it was done by compiler before) > > Modified: > trunk/reactos/ntoskrnl/ex/init.c > trunk/reactos/ntoskrnl/inbv/inbv.c > trunk/reactos/ntoskrnl/io/iomgr/iomgr.c > > Modified: trunk/reactos/ntoskrnl/ex/init.c > URL: > http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ex/init.c?rev=52244&r1=52243&r2=52244&view=diff > ============================================================================== > --- trunk/reactos/ntoskrnl/ex/init.c [iso-8859-1] (original) > +++ trunk/reactos/ntoskrnl/ex/init.c [iso-8859-1] Wed Jun 15 12:53:32 2011 > @@ -1313,7 +1313,7 @@ > size_t Remaining; > PRTL_USER_PROCESS_INFORMATION ProcessInfo; > KEY_VALUE_PARTIAL_INFORMATION KeyPartialInfo; > - UNICODE_STRING KeyName, DebugString; > + UNICODE_STRING KeyName; > OBJECT_ATTRIBUTES ObjectAttributes; > HANDLE KeyHandle, OptionHandle; > PRTL_USER_PROCESS_PARAMETERS ProcessParameters = NULL; > @@ -1925,18 +1925,19 @@ > /* Update progress bar */ > InbvUpdateProgressBar(100); > > - /* Allow strings to be displayed */ > - InbvEnableDisplayString(TRUE); > - > - /* Wait 5 seconds for it to initialize */ > + /* Disallow strings to be displayed */ > + InbvEnableDisplayString(FALSE); > + > + /* Clean the screen */ > + if (InbvBootDriverInstalled) FinalizeBootLogo(); > + > + /* Wait 5 seconds for initial process to initialize */ > Timeout.QuadPart = Int32x32To64(5, -10000000); > Status = ZwWaitForSingleObject(ProcessInfo->ProcessHandle, FALSE, > &Timeout); > - if (InbvBootDriverInstalled) FinalizeBootLogo(); > if (Status == STATUS_SUCCESS) > { > /* Failed, display error */ > - RtlInitUnicodeString(&DebugString, L"INIT: Session Manager > terminated."); > - ZwDisplayString(&DebugString); > + DPRINT1("INIT: Session Manager terminated.\n"); > > /* Bugcheck the system if SMSS couldn't initialize */ > KeBugCheck(SESSION5_INITIALIZATION_FAILED); > > Modified: trunk/reactos/ntoskrnl/inbv/inbv.c > URL: > http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/inbv/inbv.c?rev=52244&r1=52243&r2=52244&view=diff > ============================================================================== > --- trunk/reactos/ntoskrnl/inbv/inbv.c [iso-8859-1] (original) > +++ trunk/reactos/ntoskrnl/inbv/inbv.c [iso-8859-1] Wed Jun 15 12:53:32 2011 > @@ -10,16 +10,16 @@ > KSPIN_LOCK BootDriverLock; > KIRQL InbvOldIrql; > INBV_DISPLAY_STATE InbvDisplayState; > -BOOLEAN InbvBootDriverInstalled; > -BOOLEAN InbvDisplayDebugStrings; > +BOOLEAN InbvBootDriverInstalled = FALSE; > +BOOLEAN InbvDisplayDebugStrings = FALSE; > INBV_DISPLAY_STRING_FILTER InbvDisplayFilter; > ULONG ProgressBarLeft, ProgressBarTop; > -BOOLEAN ShowProgressBar; > +BOOLEAN ShowProgressBar = FALSE; > INBV_PROGRESS_STATE InbvProgressState; > INBV_RESET_DISPLAY_PARAMETERS InbvResetDisplayParameters; > ULONG ResourceCount; > PUCHAR ResourceList[64]; > -BOOLEAN SysThreadCreated; > +BOOLEAN SysThreadCreated = FALSE; > ROT_BAR_TYPE RotBarSelection; > ULONG PltRotBarStatus; > BT_PROGRESS_INDICATOR InbvProgressIndicator = {0, 25, 0}; > > Modified: trunk/reactos/ntoskrnl/io/iomgr/iomgr.c > URL: > http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/io/iomgr/iomgr.c?rev=52244&r1=52243&r2=52244&view=diff > ============================================================================== > --- trunk/reactos/ntoskrnl/io/iomgr/iomgr.c [iso-8859-1] (original) > +++ trunk/reactos/ntoskrnl/io/iomgr/iomgr.c [iso-8859-1] Wed Jun 15 12:53:32 > 2011 > @@ -480,10 +480,18 @@ > KeSetTimerEx(&IopTimer, ExpireTime, 1000, &IopTimerDpc); > > /* Create Object Types */ > - if (!IopCreateObjectTypes()) return FALSE; > + if (!IopCreateObjectTypes()) > + { > + DPRINT1("IopCreateObjectTypes failed!\n"); > + return FALSE; > + } > > /* Create Object Directories */ > - if (!IopCreateRootDirectories()) return FALSE; > + if (!IopCreateRootDirectories()) > + { > + DPRINT1("IopCreateRootDirectories failed!\n"); > + return FALSE; > + } > > /* Initialize PnP manager */ > IopInitializePlugPlayServices(); > @@ -511,10 +519,19 @@ > IopLoaderBlock = NULL; > > /* Create ARC names for boot devices */ > - if (!NT_SUCCESS(IopCreateArcNames(LoaderBlock))) return FALSE; > + Status = IopCreateArcNames(LoaderBlock); > + if (!NT_SUCCESS(Status)) > + { > + DPRINT1("IopCreateArcNames failed: %lx\n", Status); > + return FALSE; > + } > > /* Mark the system boot partition */ > - if (!IopMarkBootPartition(LoaderBlock)) return FALSE; > + if (!IopMarkBootPartition(LoaderBlock)) > + { > + DPRINT1("IopMarkBootPartition failed!\n"); > + return FALSE; > + } > > /* Initialize PnP root relations */ > IopEnumerateDevice(IopRootDeviceNode->PhysicalDeviceObject); > @@ -539,7 +556,11 @@ > > /* Convert SystemRoot from ARC to NT path */ > Status = IopReassignSystemRoot(LoaderBlock, &NtBootPath); > - if (!NT_SUCCESS(Status)) return FALSE; > + if (!NT_SUCCESS(Status)) > + { > + DPRINT1("IopReassignSystemRoot failed: %lx\n", Status); > + return FALSE; > + } > > /* Set the ANSI_STRING for the root path */ > RootString.MaximumLength = NtSystemRoot.MaximumLength / sizeof(WCHAR); > @@ -550,7 +571,11 @@ > > /* Convert the path into the ANSI_STRING */ > Status = RtlUnicodeStringToAnsiString(&RootString, &NtSystemRoot, FALSE); > - if (!NT_SUCCESS(Status)) return FALSE; > + if (!NT_SUCCESS(Status)) > + { > + DPRINT1("RtlUnicodeStringToAnsiString failed: %lx\n", Status); > + return FALSE; > + } > > /* Assign drive letters */ > IoAssignDriveLetters(LoaderBlock, > @@ -560,10 +585,19 @@ > > /* Update system root */ > Status = RtlAnsiStringToUnicodeString(&NtSystemRoot, &RootString, FALSE); > - if (!NT_SUCCESS(Status)) return FALSE; > + if (!NT_SUCCESS(Status)) > + { > + DPRINT1("RtlAnsiStringToUnicodeString failed: %lx\n", Status); > + return FALSE; > + } > > /* Load the System DLL and its Entrypoints */ > - if (!NT_SUCCESS(PsLocateSystemDll())) return FALSE; > + Status = PsLocateSystemDll(); > + if (!NT_SUCCESS(Status)) > + { > + DPRINT1("PsLocateSystemDll failed: %lx\n", Status); > + return FALSE; > + } > > /* Return success */ > return TRUE; > > _______________________________________________ Ros-dev mailing list [email protected] http://www.reactos.org/mailman/listinfo/ros-dev
