mirror of
https://github.com/reactos/reactos.git
synced 2024-06-30 18:01:07 +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
|
@ -1306,17 +1306,27 @@ NtQueryInformationThread(IN HANDLE ThreadHandle,
|
|||
KIRQL OldIrql;
|
||||
PAGED_CODE();
|
||||
|
||||
/* Verify Information Class validity */
|
||||
#if 0
|
||||
Status = DefaultQueryInfoBufferCheck(ThreadInformationClass,
|
||||
PsThreadInfoClass,
|
||||
RTL_NUMBER_OF(PsThreadInfoClass),
|
||||
ThreadInformation,
|
||||
ThreadInformationLength,
|
||||
ReturnLength,
|
||||
PreviousMode);
|
||||
if (!NT_SUCCESS(Status)) return Status;
|
||||
#endif
|
||||
if (PreviousMode != KernelMode)
|
||||
{
|
||||
_SEH2_TRY
|
||||
{
|
||||
ProbeForWrite(ThreadInformation,
|
||||
ThreadInformationLength,
|
||||
sizeof(ULONG));
|
||||
|
||||
if (ReturnLength)
|
||||
{
|
||||
ProbeForWriteUlong(ReturnLength);
|
||||
}
|
||||
}
|
||||
_SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
|
||||
{
|
||||
Status = _SEH2_GetExceptionCode();
|
||||
}
|
||||
_SEH2_END;
|
||||
|
||||
if (!NT_SUCCESS(Status)) return Status;
|
||||
}
|
||||
|
||||
/* Check what class this is */
|
||||
Access = THREAD_QUERY_INFORMATION;
|
||||
|
@ -1499,6 +1509,33 @@ NtQueryInformationThread(IN HANDLE ThreadHandle,
|
|||
KeLowerIrql(OldIrql);
|
||||
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 */
|
||||
default:
|
||||
|
||||
|
|
Loading…
Reference in a new issue