mirror of
https://github.com/reactos/reactos.git
synced 2025-04-20 20:36:35 +00:00
[WIN32K]
Fix NtUserProcessConnect to use the process handle we give to it, instead of the "current process"... This should fix the user32 CSR connection that I was failing to fix in previous revisions... CORE-8949 svn path=/trunk/; revision=65820
This commit is contained in:
parent
84b91a7f5f
commit
7afb72e9a2
2 changed files with 23 additions and 9 deletions
|
@ -2607,9 +2607,9 @@ NtUserPrintWindow(
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
NTAPI
|
NTAPI
|
||||||
NtUserProcessConnect(
|
NtUserProcessConnect(
|
||||||
IN HANDLE Process,
|
IN HANDLE ProcessHandle,
|
||||||
OUT PUSERCONNECT pUserConnect,
|
OUT PUSERCONNECT pUserConnect,
|
||||||
IN DWORD dwSize); // sizeof(USERCONNECT)
|
IN ULONG Size); // sizeof(USERCONNECT)
|
||||||
|
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
NTAPI
|
NTAPI
|
||||||
|
|
|
@ -720,11 +720,12 @@ NtUserNotifyProcessCreate(
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
APIENTRY
|
APIENTRY
|
||||||
NtUserProcessConnect(
|
NtUserProcessConnect(
|
||||||
HANDLE Process,
|
IN HANDLE ProcessHandle,
|
||||||
PUSERCONNECT pUserConnect,
|
OUT PUSERCONNECT pUserConnect,
|
||||||
DWORD Size)
|
IN ULONG Size)
|
||||||
{
|
{
|
||||||
NTSTATUS Status = STATUS_SUCCESS;
|
NTSTATUS Status;
|
||||||
|
PEPROCESS Process = NULL;
|
||||||
PPROCESSINFO W32Process;
|
PPROCESSINFO W32Process;
|
||||||
|
|
||||||
TRACE("NtUserProcessConnect\n");
|
TRACE("NtUserProcessConnect\n");
|
||||||
|
@ -735,9 +736,20 @@ NtUserProcessConnect(
|
||||||
return STATUS_UNSUCCESSFUL;
|
return STATUS_UNSUCCESSFUL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Get the process object the user handle was referencing */
|
||||||
|
Status = ObReferenceObjectByHandle(ProcessHandle,
|
||||||
|
PROCESS_VM_OPERATION,
|
||||||
|
*PsProcessType,
|
||||||
|
UserMode,
|
||||||
|
(PVOID*)&Process,
|
||||||
|
NULL);
|
||||||
|
if (!NT_SUCCESS(Status)) return Status;
|
||||||
|
|
||||||
UserEnterShared();
|
UserEnterShared();
|
||||||
|
|
||||||
W32Process = PsGetCurrentProcessWin32Process();
|
/* Get Win32 process information */
|
||||||
|
W32Process = PsGetProcessWin32Process(Process);
|
||||||
|
|
||||||
_SEH2_TRY
|
_SEH2_TRY
|
||||||
{
|
{
|
||||||
// FIXME: Check that pUserConnect->ulVersion == USER_VERSION;
|
// FIXME: Check that pUserConnect->ulVersion == USER_VERSION;
|
||||||
|
@ -755,11 +767,13 @@ NtUserProcessConnect(
|
||||||
_SEH2_END;
|
_SEH2_END;
|
||||||
|
|
||||||
if (!NT_SUCCESS(Status))
|
if (!NT_SUCCESS(Status))
|
||||||
{
|
|
||||||
SetLastNtError(Status);
|
SetLastNtError(Status);
|
||||||
}
|
|
||||||
|
|
||||||
UserLeave();
|
UserLeave();
|
||||||
|
|
||||||
|
/* Dereference the process object */
|
||||||
|
ObDereferenceObject(Process);
|
||||||
|
|
||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue