mirror of
https://github.com/reactos/reactos.git
synced 2025-08-03 22:56:00 +00:00
- Implement ThreadPriorityBoost case in NtQueryInformationThread
- Add ThreadDescriptorTableEntry case - Add check of parametres Approved by Aleksey. svn path=/trunk/; revision=40525
This commit is contained in:
parent
27c2bd90eb
commit
f9e8538d24
1 changed files with 48 additions and 11 deletions
|
@ -1306,17 +1306,27 @@ NtQueryInformationThread(IN HANDLE ThreadHandle,
|
||||||
KIRQL OldIrql;
|
KIRQL OldIrql;
|
||||||
PAGED_CODE();
|
PAGED_CODE();
|
||||||
|
|
||||||
/* Verify Information Class validity */
|
if (PreviousMode != KernelMode)
|
||||||
#if 0
|
{
|
||||||
Status = DefaultQueryInfoBufferCheck(ThreadInformationClass,
|
_SEH2_TRY
|
||||||
PsThreadInfoClass,
|
{
|
||||||
RTL_NUMBER_OF(PsThreadInfoClass),
|
ProbeForWrite(ThreadInformation,
|
||||||
ThreadInformation,
|
|
||||||
ThreadInformationLength,
|
ThreadInformationLength,
|
||||||
ReturnLength,
|
sizeof(ULONG));
|
||||||
PreviousMode);
|
|
||||||
|
if (ReturnLength)
|
||||||
|
{
|
||||||
|
ProbeForWriteUlong(ReturnLength);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
_SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
|
||||||
|
{
|
||||||
|
Status = _SEH2_GetExceptionCode();
|
||||||
|
}
|
||||||
|
_SEH2_END;
|
||||||
|
|
||||||
if (!NT_SUCCESS(Status)) return Status;
|
if (!NT_SUCCESS(Status)) return Status;
|
||||||
#endif
|
}
|
||||||
|
|
||||||
/* Check what class this is */
|
/* Check what class this is */
|
||||||
Access = THREAD_QUERY_INFORMATION;
|
Access = THREAD_QUERY_INFORMATION;
|
||||||
|
@ -1499,6 +1509,33 @@ NtQueryInformationThread(IN HANDLE ThreadHandle,
|
||||||
KeLowerIrql(OldIrql);
|
KeLowerIrql(OldIrql);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case ThreadDescriptorTableEntry:
|
||||||
|
DPRINT1("NtQueryInformationThread(): case ThreadDescriptorTableEntry not implemented!\n");
|
||||||
|
Status = STATUS_NOT_IMPLEMENTED;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case ThreadPriorityBoost:
|
||||||
|
|
||||||
|
/* Set the return length*/
|
||||||
|
Length = sizeof(ULONG);
|
||||||
|
|
||||||
|
if (ThreadInformationLength != Length)
|
||||||
|
{
|
||||||
|
Status = STATUS_INFO_LENGTH_MISMATCH;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
_SEH2_TRY
|
||||||
|
{
|
||||||
|
*(PULONG)ThreadInformation = Thread->Tcb.DisableBoost ? 1 : 0;
|
||||||
|
}
|
||||||
|
_SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
|
||||||
|
{
|
||||||
|
Status = _SEH2_GetExceptionCode();
|
||||||
|
}
|
||||||
|
_SEH2_END;
|
||||||
|
break;
|
||||||
|
|
||||||
/* Anything else */
|
/* Anything else */
|
||||||
default:
|
default:
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue