Revert my change of loading the win32k kernel-mode subsystem driver by reading the Kmode value and use instead a hardcoded value, per request of Alex.
I'm wondering why Windows wouldn't allow you to use a personalized value there and forces you to use win32k with this name, placed in \SystemRoot\System32 directory and not in an other place.

svn path=/trunk/; revision=58241
This commit is contained in:
Hermès Bélusca-Maïto 2013-01-27 13:55:04 +00:00
parent 50b1d52ba9
commit 9fd0632528

View file

@ -515,7 +515,7 @@ SmpLoadSubSystemsForMuSession(IN PULONG MuSessionId,
{ {
NTSTATUS Status = STATUS_SUCCESS, Status2; NTSTATUS Status = STATUS_SUCCESS, Status2;
PSMP_REGISTRY_VALUE RegEntry; PSMP_REGISTRY_VALUE RegEntry;
UNICODE_STRING NtPath; UNICODE_STRING DestinationString, NtPath;
PLIST_ENTRY NextEntry; PLIST_ENTRY NextEntry;
LARGE_INTEGER Timeout; LARGE_INTEGER Timeout;
PVOID State; PVOID State;
@ -570,10 +570,15 @@ SmpLoadSubSystemsForMuSession(IN PULONG MuSessionId,
} }
AttachedSessionId = *MuSessionId; AttachedSessionId = *MuSessionId;
/* Start Win32k.sys on this session */ /*
* Start Win32k.sys on this session. Use a hardcoded value
* instead of the Kmode one...
*/
RtlInitUnicodeString(&DestinationString,
L"\\SystemRoot\\System32\\win32k.sys");
Status = NtSetSystemInformation(SystemExtendServiceTableInformation, Status = NtSetSystemInformation(SystemExtendServiceTableInformation,
&NtPath, &DestinationString,
sizeof(NtPath)); sizeof(DestinationString));
RtlFreeHeap(RtlGetProcessHeap(), 0, NtPath.Buffer); RtlFreeHeap(RtlGetProcessHeap(), 0, NtPath.Buffer);
SmpReleasePrivilege(State); SmpReleasePrivilege(State);
if (!NT_SUCCESS(Status)) if (!NT_SUCCESS(Status))