It existed because back in the day this interface was thought to be generic for all subsystem drivers.
Then hackers abused it, so it was changed to be hardcoded -- the value remained only for compatibility and correctness. Subsystem drivers (such as psxdrv.sys) are now regular automatic-start services. Best regards, Alex Ionescu On Mon, Jan 28, 2013 at 12:53 AM, Hermès BÉLUSCA - MAÏTO <[email protected]> wrote: > That's strange indeed, as if Windows only accepted the win32k module be > present only in \SystemRoot\System32 and be named win32k.sys. > I'm thus wondering why the KMode value exists, so. > > Regards, > Hermès > > PS: I'm going to revert the change asap. > > -----Message d'origine----- > De : [email protected] [mailto:[email protected]] De la > part de Alex Ionescu > Envoyé : dimanche 27 janvier 2013 07:59 > À : [email protected] > Cc : [email protected] > Objet : Re: [ros-dev] [ros-diffs] [hbelusca] 58235: [SMSS] Load the Win32k > driver from the path mentioned in the Kmode value of the registry, not via a > hardcoded value. > > This change is not correct. The kmode value is ignored and the system call > only accepts the hardcoded path. > > I've asked you repeatedly to review with me before you change my code. > > Best regards, > Alex Ionescu > > > On Sat, Jan 26, 2013 at 3:43 PM, <[email protected]> wrote: >> Author: hbelusca >> Date: Sat Jan 26 23:43:28 2013 >> New Revision: 58235 >> >> URL: http://svn.reactos.org/svn/reactos?rev=58235&view=rev >> Log: >> [SMSS] >> Load the Win32k driver from the path mentioned in the Kmode value of the > registry, not via a hardcoded value. >> >> Modified: >> trunk/reactos/base/system/smss/smsubsys.c >> >> Modified: trunk/reactos/base/system/smss/smsubsys.c >> URL: >> http://svn.reactos.org/svn/reactos/trunk/reactos/base/system/smss/smsu >> bsys.c?rev=58235&r1=58234&r2=58235&view=diff >> ====================================================================== >> ======== >> --- trunk/reactos/base/system/smss/smsubsys.c [iso-8859-1] (original) >> +++ trunk/reactos/base/system/smss/smsubsys.c [iso-8859-1] Sat Jan 26 >> +++ 23:43:28 2013 >> @@ -515,7 +515,7 @@ >> { >> NTSTATUS Status = STATUS_SUCCESS, Status2; >> PSMP_REGISTRY_VALUE RegEntry; >> - UNICODE_STRING DestinationString, NtPath; >> + UNICODE_STRING NtPath; >> PLIST_ENTRY NextEntry; >> LARGE_INTEGER Timeout; >> PVOID State; >> @@ -539,7 +539,7 @@ >> { >> /* Get the entry and check if this is the special Win32k entry */ >> RegEntry = CONTAINING_RECORD(NextEntry, SMP_REGISTRY_VALUE, > Entry); >> - if (!_wcsicmp(RegEntry->Name.Buffer, L"Kmode")) >> + if (_wcsicmp(RegEntry->Name.Buffer, L"Kmode") == 0) >> { >> /* Translate it */ >> if (!RtlDosPathNameToNtPathName_U(RegEntry->Value.Buffer, >> @@ -571,11 +571,9 @@ >> AttachedSessionId = *MuSessionId; >> >> /* Start Win32k.sys on this session */ >> - RtlInitUnicodeString(&DestinationString, >> - > L"\\SystemRoot\\System32\\win32k.sys"); >> Status = > NtSetSystemInformation(SystemExtendServiceTableInformation, >> - &DestinationString, >> - > sizeof(DestinationString)); >> + &NtPath, >> + sizeof(NtPath)); >> RtlFreeHeap(RtlGetProcessHeap(), 0, NtPath.Buffer); >> SmpReleasePrivilege(State); >> if (!NT_SUCCESS(Status)) @@ -597,21 +595,21 @@ >> { >> /* Get each entry and check if it's the internal debug or not */ >> RegEntry = CONTAINING_RECORD(NextEntry, SMP_REGISTRY_VALUE, > Entry); >> - if (_wcsicmp(RegEntry->Name.Buffer, L"debug")) >> + if (_wcsicmp(RegEntry->Name.Buffer, L"debug") == 0) >> + { >> + /* Load the internal debug system */ >> + Status = SmpExecuteCommand(&RegEntry->Value, >> + *MuSessionId, >> + ProcessId, >> + SMP_DEBUG_FLAG | > SMP_SUBSYSTEM_FLAG); >> + } >> + else >> { >> /* Load the required subsystem */ >> Status = SmpExecuteCommand(&RegEntry->Value, >> *MuSessionId, >> ProcessId, >> SMP_SUBSYSTEM_FLAG); >> - } >> - else >> - { >> - /* Load the internal debug system */ >> - Status = SmpExecuteCommand(&RegEntry->Value, >> - *MuSessionId, >> - ProcessId, >> - SMP_DEBUG_FLAG | > SMP_SUBSYSTEM_FLAG); >> } >> if (!NT_SUCCESS(Status)) >> { >> >> > > _______________________________________________ > Ros-dev mailing list > [email protected] > http://www.reactos.org/mailman/listinfo/ros-dev > > _______________________________________________ > Ros-dev mailing list > [email protected] > http://www.reactos.org/mailman/listinfo/ros-dev _______________________________________________ Ros-dev mailing list [email protected] http://www.reactos.org/mailman/listinfo/ros-dev
