mirror of
https://github.com/reactos/reactos.git
synced 2024-10-06 09:24:11 +00:00
[WIN32K]
Stubplement NtUserQueryInformationThread and NtUserSetInformationThread that will be used for: - shutdown support: CORE-8322 - communicating a CSR Port handle to win32k: CORE-7505 CORE-7505 CORE-8322 svn path=/trunk/; revision=65693
This commit is contained in:
parent
77b8d17482
commit
423dd92dbd
|
@ -760,9 +760,40 @@ NtUserQueryInformationThread(IN HANDLE ThreadHandle,
|
||||||
IN USERTHREADINFOCLASS ThreadInformationClass,
|
IN USERTHREADINFOCLASS ThreadInformationClass,
|
||||||
OUT PVOID ThreadInformation,
|
OUT PVOID ThreadInformation,
|
||||||
IN ULONG ThreadInformationLength)
|
IN ULONG ThreadInformationLength)
|
||||||
|
{
|
||||||
|
NTSTATUS Status = STATUS_SUCCESS;
|
||||||
|
PETHREAD Thread;
|
||||||
|
|
||||||
|
/* Allow only CSRSS to perform this operation */
|
||||||
|
if (PsGetCurrentProcess() != gpepCSRSS)
|
||||||
|
return STATUS_ACCESS_DENIED;
|
||||||
|
|
||||||
|
UserEnterExclusive();
|
||||||
|
|
||||||
|
/* Get the Thread */
|
||||||
|
Status = ObReferenceObjectByHandle(ThreadHandle,
|
||||||
|
THREAD_QUERY_INFORMATION,
|
||||||
|
*PsThreadType,
|
||||||
|
UserMode,
|
||||||
|
(PVOID)&Thread,
|
||||||
|
NULL);
|
||||||
|
if (!NT_SUCCESS(Status)) goto Quit;
|
||||||
|
|
||||||
|
switch (ThreadInformationClass)
|
||||||
|
{
|
||||||
|
default:
|
||||||
{
|
{
|
||||||
STUB;
|
STUB;
|
||||||
return STATUS_SUCCESS;
|
Status = STATUS_NOT_IMPLEMENTED;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ObDereferenceObject(Thread);
|
||||||
|
|
||||||
|
Quit:
|
||||||
|
UserLeave();
|
||||||
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
DWORD
|
DWORD
|
||||||
|
@ -861,20 +892,63 @@ NtUserSetInformationThread(IN HANDLE ThreadHandle,
|
||||||
IN ULONG ThreadInformationLength)
|
IN ULONG ThreadInformationLength)
|
||||||
|
|
||||||
{
|
{
|
||||||
if (ThreadInformationClass == UserThreadInitiateShutdown)
|
NTSTATUS Status = STATUS_SUCCESS;
|
||||||
|
PETHREAD Thread;
|
||||||
|
|
||||||
|
/* Allow only CSRSS to perform this operation */
|
||||||
|
if (PsGetCurrentProcess() != gpepCSRSS)
|
||||||
|
return STATUS_ACCESS_DENIED;
|
||||||
|
|
||||||
|
UserEnterExclusive();
|
||||||
|
|
||||||
|
/* Get the Thread */
|
||||||
|
Status = ObReferenceObjectByHandle(ThreadHandle,
|
||||||
|
THREAD_SET_INFORMATION,
|
||||||
|
*PsThreadType,
|
||||||
|
UserMode,
|
||||||
|
(PVOID)&Thread,
|
||||||
|
NULL);
|
||||||
|
if (!NT_SUCCESS(Status)) goto Quit;
|
||||||
|
|
||||||
|
switch (ThreadInformationClass)
|
||||||
|
{
|
||||||
|
case UserThreadInitiateShutdown:
|
||||||
{
|
{
|
||||||
ERR("Shutdown initiated\n");
|
ERR("Shutdown initiated\n");
|
||||||
}
|
|
||||||
else if (ThreadInformationClass == UserThreadEndShutdown)
|
|
||||||
{
|
|
||||||
ERR("Shutdown ended\n");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
STUB;
|
STUB;
|
||||||
|
Status = STATUS_NOT_IMPLEMENTED;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return STATUS_SUCCESS;
|
case UserThreadEndShutdown:
|
||||||
|
{
|
||||||
|
ERR("Shutdown ended\n");
|
||||||
|
STUB;
|
||||||
|
Status = STATUS_NOT_IMPLEMENTED;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
case UserThreadCsrApiPort:
|
||||||
|
{
|
||||||
|
ERR("Set CSR API Port for Win32k\n");
|
||||||
|
STUB;
|
||||||
|
Status = STATUS_NOT_IMPLEMENTED;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
default:
|
||||||
|
{
|
||||||
|
STUB;
|
||||||
|
Status = STATUS_NOT_IMPLEMENTED;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ObDereferenceObject(Thread);
|
||||||
|
|
||||||
|
Quit:
|
||||||
|
UserLeave();
|
||||||
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
DWORD
|
DWORD
|
||||||
|
|
Loading…
Reference in a new issue