From f3ae70573c32920e515ab2b18cbd004e0732f6ef Mon Sep 17 00:00:00 2001 From: Aiken Harris Date: Wed, 10 Jun 2026 11:46:26 +0200 Subject: [PATCH] Initialize dispatcher header --- sdk/xtdk/xtbase.h | 16 +++++++++++----- xtoskrnl/ke/kprocess.cc | 2 ++ 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/sdk/xtdk/xtbase.h b/sdk/xtdk/xtbase.h index 2598f0b..259dcfc 100644 --- a/sdk/xtdk/xtbase.h +++ b/sdk/xtdk/xtbase.h @@ -99,14 +99,20 @@ typedef struct _M128 /* Dispatcher object header structure definition */ typedef struct _DISPATCHER_HEADER { - UCHAR Type; union { - UCHAR Absolute; - UCHAR NpxIrql; + struct + { + UCHAR Type; + UCHAR Absolute; + UCHAR Size; + union { + UCHAR Inserted; + BOOLEAN DebugActive; + }; + }; + VOLATILE LONG Lock; }; - UCHAR Inserted; - BOOLEAN DebugActive; LONG SignalState; LIST_ENTRY WaitListHead; } DISPATCHER_HEADER, *PDISPATCHER_HEADER; diff --git a/xtoskrnl/ke/kprocess.cc b/xtoskrnl/ke/kprocess.cc index 8b16e7c..131aaac 100644 --- a/xtoskrnl/ke/kprocess.cc +++ b/xtoskrnl/ke/kprocess.cc @@ -127,6 +127,8 @@ KE::KProcess::InitializeProcess(IN OUT PKPROCESS Process, IN BOOLEAN Alignment) { /* Initialize process dispatcher header */ + Process->Header.SignalState = 0; + Process->Header.Size = sizeof(KPROCESS) / sizeof(LONG); Process->Header.Type = ProcessObject; /* Initialize process wait list */