diff --git a/import/OpenXDK/include/xboxkrnl/kernel.h b/import/OpenXDK/include/xboxkrnl/kernel.h index 42608779d..f1f9976b4 100644 --- a/import/OpenXDK/include/xboxkrnl/kernel.h +++ b/import/OpenXDK/include/xboxkrnl/kernel.h @@ -121,7 +121,15 @@ XBSYSAPI EXPORTNUM(107) VOID NTAPI KeInitializeDpc PVOID DeferredContext ); -XBSYSAPI VOID *KeInitializeEvent; +// ****************************************************************** +// * 0x006C - KeInitializeEvent() +// ****************************************************************** +XBSYSAPI EXPORTNUM(108) VOID NTAPI KeInitializeEvent +( + IN PRKEVENT Event, + IN EVENT_TYPE Type, + IN BOOLEAN State +); // ****************************************************************** // * 0x006D - KeInitializeInterrupt() diff --git a/import/OpenXDK/include/xboxkrnl/xboxkrnl.h b/import/OpenXDK/include/xboxkrnl/xboxkrnl.h index 34dbab273..1b83fa6e9 100644 --- a/import/OpenXDK/include/xboxkrnl/xboxkrnl.h +++ b/import/OpenXDK/include/xboxkrnl/xboxkrnl.h @@ -1252,10 +1252,10 @@ ERWLOCK, *PERWLOCK; typedef struct _KDEVICE_QUEUE { - CSHORT Type; - UCHAR Size; - BOOLEAN Busy; - LIST_ENTRY DeviceListHead; + CSHORT Type; // 0x00 + UCHAR Size; // 0x02 + BOOLEAN Busy; // 0x04 + LIST_ENTRY DeviceListHead; // 0x08 } KDEVICE_QUEUE, *PKDEVICE_QUEUE, *RESTRICTED_POINTER PRKDEVICE_QUEUE; diff --git a/src/CxbxKrnl/EmuKrnlKe.cpp b/src/CxbxKrnl/EmuKrnlKe.cpp index c4f314c0b..551be0e2d 100644 --- a/src/CxbxKrnl/EmuKrnlKe.cpp +++ b/src/CxbxKrnl/EmuKrnlKe.cpp @@ -317,6 +317,28 @@ XBSYSAPI EXPORTNUM(107) xboxkrnl::VOID NTAPI xboxkrnl::KeInitializeDpc Dpc->Inserted = FALSE; } +// ****************************************************************** +// * 0x006C - KeInitializeEvent() +// ****************************************************************** +XBSYSAPI EXPORTNUM(108) VOID NTAPI xboxkrnl::KeInitializeEvent +( + IN PRKEVENT Event, + IN EVENT_TYPE Type, + IN BOOLEAN State +) +{ + LOG_FUNC_BEGIN + LOG_FUNC_ARG(Event) + LOG_FUNC_ARG(Type) + LOG_FUNC_ARG(State) + LOG_FUNC_END; + + Event->Header.Type = Type; + Event->Header.Size = sizeof(KEVENT) / sizeof(LONG); + Event->Header.SignalState = State; + // TODO : InitializeListHead(&(Event->Header.WaitListHead)); +} + // ****************************************************************** // * 0x006D - KeInitializeInterrupt() // ****************************************************************** diff --git a/src/CxbxKrnl/KernelThunk.cpp b/src/CxbxKrnl/KernelThunk.cpp index 329ecd029..ce950d9c9 100644 --- a/src/CxbxKrnl/KernelThunk.cpp +++ b/src/CxbxKrnl/KernelThunk.cpp @@ -175,7 +175,7 @@ extern "C" CXBXKRNL_API uint32 CxbxKrnl_KernelThunkTable[379] = (uint32)PANIC(0x0069), // 0x0069 (105) KeInitializeApc (uint32)PANIC(0x006A), // 0x006A (106) KeInitializeDeviceQueue (uint32)FUNC(&xboxkrnl::KeInitializeDpc), // 0x006B (107) - (uint32)PANIC(0x006C), // 0x006C (108) KeInitializeEvent + (uint32)FUNC(&xboxkrnl::KeInitializeEvent), // 0x006C (108) (uint32)FUNC(&xboxkrnl::KeInitializeInterrupt), // 0x006D (109) (uint32)PANIC(0x006E), // 0x006E (110) KeInitializeMutant (uint32)PANIC(0x006F), // 0x006F (111) KeInitializeQueue