From b096ca5b08a35e15be59dadb88c9f19084225a27 Mon Sep 17 00:00:00 2001 From: PatrickvL Date: Tue, 20 Dec 2016 14:08:46 +0100 Subject: [PATCH] Forwarded NtPulseEvent to NtDll Deduplicated declarations. --- src/CxbxKrnl/EmuKrnlKe.cpp | 21 --------------------- src/CxbxKrnl/EmuKrnlNt.cpp | 15 +++++++++++---- src/CxbxKrnl/EmuNtDll.cpp | 2 +- src/CxbxKrnl/EmuNtDll.h | 23 ++++++++++------------- 4 files changed, 22 insertions(+), 39 deletions(-) diff --git a/src/CxbxKrnl/EmuKrnlKe.cpp b/src/CxbxKrnl/EmuKrnlKe.cpp index c8470a95f..316997221 100644 --- a/src/CxbxKrnl/EmuKrnlKe.cpp +++ b/src/CxbxKrnl/EmuKrnlKe.cpp @@ -483,27 +483,6 @@ XBSYSAPI EXPORTNUM(143) xboxkrnl::LONG NTAPI xboxkrnl::KeSetBasePriorityThread RETURN(ret); } -// ****************************************************************** -// * 0x0091 - KeSetEvent() -// ****************************************************************** -XBSYSAPI EXPORTNUM(145) xboxkrnl::LONG NTAPI xboxkrnl::KeSetEvent -( - IN PRKEVENT Event, - IN LONG Increment, - IN BOOLEAN Wait -) -{ - LOG_FUNC_BEGIN - LOG_FUNC_ARG(Event) - LOG_FUNC_ARG(Increment) - LOG_FUNC_ARG(Wait) - LOG_FUNC_END; - - LOG_UNIMPLEMENTED(); - - RETURN(1); -} - // ****************************************************************** // * 0x0091 - KeSetEvent() // ****************************************************************** diff --git a/src/CxbxKrnl/EmuKrnlNt.cpp b/src/CxbxKrnl/EmuKrnlNt.cpp index b87d10b97..1a20cec56 100644 --- a/src/CxbxKrnl/EmuKrnlNt.cpp +++ b/src/CxbxKrnl/EmuKrnlNt.cpp @@ -707,8 +707,8 @@ XBSYSAPI EXPORTNUM(204) xboxkrnl::NTSTATUS NTAPI xboxkrnl::NtProtectVirtualMemor // ****************************************************************** XBSYSAPI EXPORTNUM(205) xboxkrnl::NTSTATUS NTAPI xboxkrnl::NtPulseEvent ( - IN HANDLE EventHandle, - OUT PLONG PreviousState OPTIONAL + IN HANDLE EventHandle, + OUT PLONG PreviousState OPTIONAL ) { LOG_FUNC_BEGIN @@ -716,9 +716,16 @@ XBSYSAPI EXPORTNUM(205) xboxkrnl::NTSTATUS NTAPI xboxkrnl::NtPulseEvent LOG_FUNC_ARG_OUT(PreviousState) LOG_FUNC_END; - LOG_UNIMPLEMENTED(); + // redirect to Windows NT + // TODO : Untested + NTSTATUS ret = NtDll::NtPulseEvent( + EventHandle, + /*OUT*/PreviousState); - RETURN(STATUS_SUCCESS); + if (FAILED(ret)) + EmuWarning("NtPulseEvent failed!"); + + RETURN(ret); } // ****************************************************************** diff --git a/src/CxbxKrnl/EmuNtDll.cpp b/src/CxbxKrnl/EmuNtDll.cpp index a8b2bbeff..4beda842f 100644 --- a/src/CxbxKrnl/EmuNtDll.cpp +++ b/src/CxbxKrnl/EmuNtDll.cpp @@ -79,6 +79,7 @@ IMPORT(NtFlushBuffersFile); IMPORT(NtFreeVirtualMemory); IMPORT(NtFsControlFile); IMPORT(NtOpenSymbolicLinkObject); +IMPORT(NtPulseEvent); IMPORT(NtQueryDirectoryFile); IMPORT(NtQueryFullAttributesFile); IMPORT(NtQueryInformationFile); @@ -92,7 +93,6 @@ IMPORT(NtReleaseSemaphore); IMPORT(NtResumeThread); IMPORT(NtSetEvent); IMPORT(NtSetInformationFile); -IMPORT(NtSetTimer); IMPORT(NtSetLdtEntries); IMPORT(NtSetTimer); IMPORT(NtSuspendThread); diff --git a/src/CxbxKrnl/EmuNtDll.h b/src/CxbxKrnl/EmuNtDll.h index 7847349eb..8a16fb611 100644 --- a/src/CxbxKrnl/EmuNtDll.h +++ b/src/CxbxKrnl/EmuNtDll.h @@ -987,6 +987,15 @@ typedef NTSTATUS (NTAPI *FPTR_NtCreateEvent) IN BOOLEAN InitialState ); +// ****************************************************************** +// * NtPulseEvent +// ****************************************************************** +typedef NTSTATUS(NTAPI *FPTR_NtPulseEvent) +( + IN HANDLE EventHandle, + OUT PLONG PreviousState OPTIONAL +); + // ****************************************************************** // * NtCreateMutant // ****************************************************************** @@ -1345,11 +1354,6 @@ typedef NTSTATUS(NTAPI *FPTR_NtFsControlFile) IN ULONG OutputBufferLength ); -typedef enum _TIMER_TYPE { - NotificationTimer, - SynchronizationTimer -} TIMER_TYPE; - // ****************************************************************** // * NtCreateTimer // ****************************************************************** @@ -1361,14 +1365,6 @@ typedef NTSTATUS(NTAPI *FPTR_NtCreateTimer) IN TIMER_TYPE TimerType ); -typedef -VOID -(*PTIMER_APC_ROUTINE) ( - IN PVOID TimerContext, - IN ULONG TimerLowValue, - IN LONG TimerHighValue -); - // ****************************************************************** // * NtSetTimer // ****************************************************************** @@ -1425,6 +1421,7 @@ EXTERN(NtFlushBuffersFile); EXTERN(NtFreeVirtualMemory); EXTERN(NtFsControlFile); EXTERN(NtOpenSymbolicLinkObject); +EXTERN(NtPulseEvent); EXTERN(NtQueryDirectoryFile); EXTERN(NtQueryFullAttributesFile); EXTERN(NtQueryInformationFile);