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:
Hermès Bélusca-Maïto 2014-12-16 23:09:29 +00:00
parent 77b8d17482
commit 423dd92dbd

View file

@ -761,8 +761,39 @@ NtUserQueryInformationThread(IN HANDLE ThreadHandle,
OUT PVOID ThreadInformation, OUT PVOID ThreadInformation,
IN ULONG ThreadInformationLength) IN ULONG ThreadInformationLength)
{ {
STUB; NTSTATUS Status = STATUS_SUCCESS;
return 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;
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)
{ {
ERR("Shutdown initiated\n"); case UserThreadInitiateShutdown:
} {
else if (ThreadInformationClass == UserThreadEndShutdown) ERR("Shutdown initiated\n");
{ STUB;
ERR("Shutdown ended\n"); Status = STATUS_NOT_IMPLEMENTED;
} break;
else }
{
STUB; 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;
}
} }
return STATUS_SUCCESS; ObDereferenceObject(Thread);
Quit:
UserLeave();
return Status;
} }
DWORD DWORD