Add implementation for NtWaitForSingleObject & stub for KeSetPriorityThread

This commit is contained in:
Luke Usher 2016-11-29 14:38:19 +00:00
parent 9fedcc64a6
commit 9f7b29ad62
3 changed files with 55 additions and 2 deletions

View File

@ -340,6 +340,24 @@ XBSYSAPI EXPORTNUM(143) xboxkrnl::LONG NTAPI xboxkrnl::KeSetBasePriorityThread
RETURN(1);
}
// ******************************************************************
// * 0x0096 - KeSetPriorityThread
// ******************************************************************
XBSYSAPI EXPORTNUM(148) xboxkrnl::BOOLEAN NTAPI xboxkrnl::KeSetPriorityThread
(
IN PKTHREAD Thread,
IN PVOID Priority
)
{
LOG_FUNC_BEGIN
LOG_FUNC_ARG_OUT(Thread)
LOG_FUNC_ARG_OUT(Priority)
LOG_FUNC_END;
LOG_UNIMPLEMENTED();
RETURN(1);
}
// ******************************************************************
// * 0x0095 - KeSetTimer

View File

@ -2255,6 +2255,41 @@ XBSYSAPI EXPORTNUM(232) VOID NTAPI xboxkrnl::NtUserIoApcDispatcher
DbgPrintf("EmuKrnl (0x%X): NtUserIoApcDispatcher Completed\n", GetCurrentThreadId());
}
// ******************************************************************
// * 0x00E9 - NtWaitForSingleObject
// ******************************************************************
XBSYSAPI EXPORTNUM(233) xboxkrnl::NTSTATUS NTAPI xboxkrnl::NtWaitForSingleObject
(
IN HANDLE Handle,
IN BOOLEAN Alertable,
IN PVOID Timeout
)
{
LOG_FUNC_BEGIN
LOG_FUNC_ARG(Handle)
LOG_FUNC_ARG(Alertable)
LOG_FUNC_ARG(Timeout)
LOG_FUNC_END;
NTSTATUS ret;
if (IsEmuHandle(Handle))
{
ret = WAIT_FAILED;
EmuWarning("WaitFor EmuHandle not supported!");
}
else
{
ret = NtDll::NtWaitForSingleObject(Handle, Alertable, (NtDll::PLARGE_INTEGER)Timeout);
DbgPrintf("Finished waiting for 0x%.08X\n", Handle);
}
if (ret == WAIT_FAILED)
EmuWarning("NtWaitForSingleObject failed! (%s)", NtStatusToString(ret));
RETURN(ret);
}
// ******************************************************************
// * 0x00EA - NtWaitForSingleObjectEx
// ******************************************************************

View File

@ -212,7 +212,7 @@ extern "C" CXBXKRNL_API uint32 CxbxKrnl_KernelThunkTable[379] =
(uint32)PANIC(0x0091), // 0x0091 (145) KeSetEvent
(uint32)PANIC(0x0092), // 0x0092 (146) KeSetEventBoostPriority
(uint32)PANIC(0x0093), // 0x0093 (147) KeSetPriorityProcess
(uint32)PANIC(0x0094), // 0x0094 (148) KeSetPriorityThread
(uint32)FUNC(&xboxkrnl::KeSetPriorityThread), // 0x0094 (148)
(uint32)FUNC(&xboxkrnl::KeSetTimer), // 0x0095 (149)
(uint32)FUNC(&xboxkrnl::KeSetTimerEx), // 0x0096 (150)
(uint32)PANIC(0x0097), // 0x0097 (151) KeStallExecutionProcessor
@ -297,7 +297,7 @@ extern "C" CXBXKRNL_API uint32 CxbxKrnl_KernelThunkTable[379] =
(uint32)PANIC(0x00E6), // 0x00E6 (230) NtSignalAndWaitForSingleObjectEx
(uint32)FUNC(&xboxkrnl::NtSuspendThread), // 0x00E7 (231)
(uint32)FUNC(&xboxkrnl::NtUserIoApcDispatcher), // 0x00E8 (232)
(uint32)PANIC(0x00E9), // 0x00E9 (233) NtWaitForSingleObject
(uint32)FUNC(&xboxkrnl::NtWaitForSingleObject), // 0x00E9 (233)
(uint32)FUNC(&xboxkrnl::NtWaitForSingleObjectEx), // 0x00EA (234)
(uint32)FUNC(&xboxkrnl::NtWaitForMultipleObjectsEx), // 0x00EB (235)
(uint32)FUNC(&xboxkrnl::NtWriteFile), // 0x00EC (236)