Large partial cleanup of ntoskrnl internal headers, mostly to delete obsoleted or non-useful headers, to reformat some horrible tab, spaces, etc mixups, and to move to NDK some public structures and remove all the include headers so that the standard one can be added. Note the word partial, meaning more will come in order to fully fix the mess.
Added: trunk/reactos/include/ndk/dbgktypes.h
Modified: trunk/reactos/include/ndk/extypes.h
Modified: trunk/reactos/include/ndk/i386/floatsave.h
Modified: trunk/reactos/include/ndk/i386/segment.h
Modified: trunk/reactos/include/ndk/iotypes.h
Modified: trunk/reactos/include/ndk/ketypes.h
Modified: trunk/reactos/include/ndk/ldrfuncs.h
Modified: trunk/reactos/include/ndk/mmtypes.h
Modified: trunk/reactos/include/ndk/ntndk.h
Modified: trunk/reactos/include/ndk/obtypes.h
Modified: trunk/reactos/include/ndk/potypes.h
Modified: trunk/reactos/include/ndk/pstypes.h
Modified: trunk/reactos/ntoskrnl/ex/callback.c
Modified: trunk/reactos/ntoskrnl/include/internal/arch/ps.h
Added: trunk/reactos/ntoskrnl/include/internal/asm.h
Deleted: trunk/reactos/ntoskrnl/include/internal/callbacks.h
Modified: trunk/reactos/ntoskrnl/include/internal/cc.h
Deleted: trunk/reactos/ntoskrnl/include/internal/config.h
Modified: trunk/reactos/ntoskrnl/include/internal/dbgk.h
Modified: trunk/reactos/ntoskrnl/include/internal/ex.h
Added: trunk/reactos/ntoskrnl/include/internal/fs.h
Modified: trunk/reactos/ntoskrnl/include/internal/i386/fpu.h
Deleted: trunk/reactos/ntoskrnl/include/internal/i386/hal.h
Modified: trunk/reactos/ntoskrnl/include/internal/i386/ke.h
Modified: trunk/reactos/ntoskrnl/include/internal/i386/mm.h
Deleted: trunk/reactos/ntoskrnl/include/internal/i386/ps.h
Deleted: trunk/reactos/ntoskrnl/include/internal/i386/segment.h
Deleted: trunk/reactos/ntoskrnl/include/internal/ifs.h
Modified: trunk/reactos/ntoskrnl/include/internal/io.h
Modified: trunk/reactos/ntoskrnl/include/internal/kbd.h
Modified: trunk/reactos/ntoskrnl/include/internal/kd.h
Deleted: trunk/reactos/ntoskrnl/include/internal/kdb.h
Deleted: trunk/reactos/ntoskrnl/include/internal/kdbochs.h
Deleted: trunk/reactos/ntoskrnl/include/internal/kdgdb.h
Modified: trunk/reactos/ntoskrnl/include/internal/ke.h
Modified: trunk/reactos/ntoskrnl/include/internal/ldr.h
Modified: trunk/reactos/ntoskrnl/include/internal/mm.h
Modified: trunk/reactos/ntoskrnl/include/internal/module.h
Modified: trunk/reactos/ntoskrnl/include/internal/nls.h
Modified: trunk/reactos/ntoskrnl/include/internal/ntoskrnl.h
Modified: trunk/reactos/ntoskrnl/include/internal/ob.h
Modified: trunk/reactos/ntoskrnl/include/internal/po.h
Deleted: trunk/reactos/ntoskrnl/include/internal/pool.h
Modified: trunk/reactos/ntoskrnl/include/internal/port.h
Modified: trunk/reactos/ntoskrnl/include/internal/ps.h
Deleted: trunk/reactos/ntoskrnl/include/internal/safe.h
Modified: trunk/reactos/ntoskrnl/include/internal/se.h
Modified: trunk/reactos/ntoskrnl/include/internal/tag.h
Deleted: trunk/reactos/ntoskrnl/include/internal/trap.h
Modified: trunk/reactos/ntoskrnl/include/internal/v86m.h
Modified: trunk/reactos/ntoskrnl/include/internal/xhal.h
Modified: trunk/reactos/ntoskrnl/io/disk.c
Modified: trunk/reactos/ntoskrnl/kdbg/kdb.h
Modified: trunk/reactos/ntoskrnl/ke/i386/ctxswitch.S
Modified: trunk/reactos/ntoskrnl/ke/i386/irqhand.s
Modified: trunk/reactos/ntoskrnl/ke/i386/main.S
Modified: trunk/reactos/ntoskrnl/ke/i386/stkswitch.S
Modified: trunk/reactos/ntoskrnl/ke/i386/syscall.S
Modified: trunk/reactos/ntoskrnl/ke/i386/trap.s
Modified: trunk/reactos/ntoskrnl/ke/i386/usercall.S
Modified: trunk/reactos/ntoskrnl/ke/i386/v86m_sup.S
Modified: trunk/reactos/ntoskrnl/ob/object.c

Added: trunk/reactos/include/ndk/dbgktypes.h
--- trunk/reactos/include/ndk/dbgktypes.h	2005-06-25 16:01:27 UTC (rev 16267)
+++ trunk/reactos/include/ndk/dbgktypes.h	2005-06-25 17:01:17 UTC (rev 16268)
@@ -0,0 +1,139 @@
+/*
+ * PROJECT:         ReactOS Native Headers
+ * FILE:            include/ndk/dbgktypes.h
+ * PURPOSE:         Definitions for User-Mode Kernel Debugging not in DDK/IFS
+ * PROGRAMMER:      Alex Ionescu (alex@relsoft.net)
+ * UPDATE HISTORY:
+ *                  Created 25/06/05
+ */
+
+#ifndef _DBGKTYPES_H
+#define _DBGKTYPES_H
+
+/* DEPENDENCIES **************************************************************/
+
+/* EXPORTED DATA *************************************************************/
+
+/* CONSTANTS *****************************************************************/
+#define DEBUG_OBJECT_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x0F)
+#define DEBUG_OBJECT_WAIT_STATE_CHANGE 0x0001
+#define DEBUG_OBJECT_ADD_REMOVE_PROCESS 0x0002
+
+/* ENUMERATIONS **************************************************************/
+
+typedef enum _DEBUGOBJECTINFOCLASS
+{
+       DebugObjectUnusedInformation,
+       DebugObjectKillProcessOnExitInformation
+} DEBUGOBJECTINFOCLASS, * PDEBUGOBJECTINFOCLASS;
+
+/* TYPES *********************************************************************/
+
+typedef struct _DEBUG_OBJECT_KILL_PROCESS_ON_EXIT_INFORMATION
+{
+       ULONG KillProcessOnExit;
+} DEBUG_OBJECT_KILL_PROCESS_ON_EXIT_INFORMATION, *
+PDEBUG_OBJECT_KILL_PROCESS_ON_EXIT_INFORMATION;
+
+typedef struct _DBGK_DEBUG_OBJECT
+{
+    KEVENT Event;
+    FAST_MUTEX Mutex;
+    LIST_ENTRY StateEventListEntry;
+    union
+    {
+        ULONG Flags;
+        struct
+        {
+            UCHAR DebuggerInactive  :1;
+            UCHAR KillProcessOnExit :1;
+        };
+    };
+} DBGK_DEBUG_OBJECT, *PDBGK_DEBUG_OBJECT;
+
+typedef enum _DBG_STATE
+{
+    DbgIdle,
+    DbgReplyPending,
+    DbgCreateThreadStateChange,
+    DbgCreateProcessStateChange,
+    DbgExitThreadStateChange,
+    DbgExitProcessStateChange,
+    DbgExceptionStateChange,
+    DbgBreakpointStateChange,
+    DbgSingleStepStateChange,
+    DbgLoadDllStateChange,
+    DbgUnloadDllStateChange
+} DBG_STATE, *PDBG_STATE;
+
+typedef struct _DBGKM_EXCEPTION
+{
+    EXCEPTION_RECORD ExceptionRecord;
+    ULONG FirstChance;
+} DBGKM_EXCEPTION, *PDBGKM_EXCEPTION;
+
+typedef struct _DBGKM_CREATE_THREAD
+{
+    ULONG SubSystemKey;
+    PVOID StartAddress;
+} DBGKM_CREATE_THREAD, *PDBGKM_CREATE_THREAD;
+
+typedef struct _DBGKM_CREATE_PROCESS
+{
+    ULONG SubSystemKey;
+    HANDLE FileHandle;
+    PVOID BaseOfImage;
+    ULONG DebugInfoFileOffset;
+    ULONG DebugInfoSize;
+    DBGKM_CREATE_THREAD InitialThread;
+} DBGKM_CREATE_PROCESS, *PDBGKM_CREATE_PROCESS;
+
+typedef struct _DBGKM_EXIT_THREAD
+{
+    NTSTATUS ExitStatus;
+} DBGKM_EXIT_THREAD, *PDBGKM_EXIT_THREAD;
+
+typedef struct _DBGKM_EXIT_PROCESS
+{
+    NTSTATUS ExitStatus;
+} DBGKM_EXIT_PROCESS, *PDBGKM_EXIT_PROCESS;
+
+typedef struct _DBGKM_LOAD_DLL
+{
+    HANDLE FileHandle;
+    PVOID BaseOfDll;
+    ULONG DebugInfoFileOffset;
+    ULONG DebugInfoSize;
+} DBGKM_LOAD_DLL, *PDBGKM_LOAD_DLL;
+
+typedef struct _DBGKM_UNLOAD_DLL
+{
+    PVOID BaseAddress;
+} DBGKM_UNLOAD_DLL, *PDBGKM_UNLOAD_DLL;
+
+typedef struct _DBGUI_WAIT_STATE_CHANGE
+{
+    DBG_STATE NewState;
+    CLIENT_ID AppClientId;
+    union
+    {
+        struct
+        {
+            HANDLE HandleToThread;
+            DBGKM_CREATE_THREAD NewThread;
+        } CreateThread;
+        struct
+        {
+            HANDLE HandleToProcess;
+            HANDLE HandleToThread;
+            DBGKM_CREATE_PROCESS NewProcess;
+        } CreateProcessInfo;
+        DBGKM_EXIT_THREAD ExitThread;
+        DBGKM_EXIT_PROCESS ExitProcess;
+        DBGKM_EXCEPTION Exception;
+        DBGKM_LOAD_DLL LoadDll;
+        DBGKM_UNLOAD_DLL UnloadDll;
+    } StateInfo;
+} DBGUI_WAIT_STATE_CHANGE, * PDBGUI_WAIT_STATE_CHANGE;
+
+#endif

Modified: trunk/reactos/include/ndk/extypes.h
--- trunk/reactos/include/ndk/extypes.h	2005-06-25 16:01:27 UTC (rev 16267)
+++ trunk/reactos/include/ndk/extypes.h	2005-06-25 17:01:17 UTC (rev 16268)
@@ -21,6 +21,12 @@
 /* CONSTANTS *****************************************************************/
 #define INVALID_HANDLE_VALUE (HANDLE)-1
 
+/* Callback Object Access Rights */
+#define CALLBACK_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x0001)
+#define CALLBACK_EXECUTE    (STANDARD_RIGHTS_EXECUTE|SYNCHRONIZE|0x0001)
+#define CALLBACK_WRITE      (STANDARD_RIGHTS_WRITE|SYNCHRONIZE|0x0001)
+#define CALLBACK_READ       (STANDARD_RIGHTS_READ|SYNCHRONIZE|0x0001)
+
 /* ENUMERATIONS **************************************************************/
 
 /* TYPES *********************************************************************/
@@ -57,6 +63,14 @@
     KEVENT RundownEvent;
 } RUNDOWN_DESCRIPTOR, *PRUNDOWN_DESCRIPTOR;
 
+typedef struct _CALLBACK_OBJECT
+{
+    ULONG Name;
+    KSPIN_LOCK Lock;
+    LIST_ENTRY RegisteredCallbacks;
+    ULONG AllowMultipleCallbacks;
+} CALLBACK_OBJECT , *PCALLBACK_OBJECT;
+
 typedef struct _HANDLE_TABLE_ENTRY 
 {
     union 

Modified: trunk/reactos/include/ndk/i386/floatsave.h
--- trunk/reactos/include/ndk/i386/floatsave.h	2005-06-25 16:01:27 UTC (rev 16267)
+++ trunk/reactos/include/ndk/i386/floatsave.h	2005-06-25 17:01:17 UTC (rev 16268)
@@ -1,5 +1,5 @@
-#ifndef __NAPI_I386_FLOATSAVE_H__
-#define __NAPI_I386_FLOATSAVE_H__
+#ifndef _FLOATSAVE_H_
+#define _FLOATSAVE_H_
 
 #define FLOAT_SAVE_CONTROL (0xFFFF037F)
 #define FLOAT_SAVE_STATUS  (0xFFFF0000)

Modified: trunk/reactos/include/ndk/i386/segment.h
--- trunk/reactos/include/ndk/i386/segment.h	2005-06-25 16:01:27 UTC (rev 16267)
+++ trunk/reactos/include/ndk/i386/segment.h	2005-06-25 17:01:17 UTC (rev 16268)
@@ -5,8 +5,10 @@
 #define KERNEL_DS            (0x10)
 #define USER_CS              (0x18 + 0x3)
 #define USER_DS              (0x20 + 0x3)
-#define RESERVED_FOR_TSS     (0x28)
+#define TSS_SELECTOR         (0x28)
 #define PCR_SELECTOR         (0x30)
 #define TEB_SELECTOR         (0x38 + 0x3)
+#define LDT_SELECTOR         (0x48)
+#define TRAP_TSS_SELECTOR    (0x50)
 
 #endif /* _ASM_SEGMENT_H */

Modified: trunk/reactos/include/ndk/iotypes.h
--- trunk/reactos/include/ndk/iotypes.h	2005-06-25 16:01:27 UTC (rev 16267)
+++ trunk/reactos/include/ndk/iotypes.h	2005-06-25 17:01:17 UTC (rev 16268)
@@ -11,6 +11,7 @@
 #define _IOTYPES_H
 
 /* DEPENDENCIES **************************************************************/
+#include "potypes.h"
 
 /* EXPORTED DATA *************************************************************/
 extern POBJECT_TYPE NTOSAPI IoAdapterObjectType;
@@ -20,13 +21,77 @@
 extern POBJECT_TYPE NTOSAPI IoFileObjectType;
 
 /* CONSTANTS *****************************************************************/
+
+/* Device Object Extension Flags */
 #define DOE_UNLOAD_PENDING    0x1
 #define DOE_DELETE_PENDING    0x2
 #define DOE_REMOVE_PENDING    0x4
 #define DOE_REMOVE_PROCESSED  0x8
 #define DOE_START_PENDING     0x10
 
+/* Device Node Flags */
+#define DNF_PROCESSED                           0x00000001
+#define DNF_STARTED                             0x00000002
+#define DNF_START_FAILED                        0x00000004
+#define DNF_ENUMERATED                          0x00000008
+#define DNF_DELETED                             0x00000010
+#define DNF_MADEUP                              0x00000020
+#define DNF_START_REQUEST_PENDING               0x00000040
+#define DNF_NO_RESOURCE_REQUIRED                0x00000080
+#define DNF_INSUFFICIENT_RESOURCES              0x00000100
+#define DNF_RESOURCE_ASSIGNED                   0x00000200
+#define DNF_RESOURCE_REPORTED                   0x00000400
+#define DNF_HAL_NODE                            0x00000800 // ???
+#define DNF_ADDED                               0x00001000
+#define DNF_ADD_FAILED                          0x00002000
+#define DNF_LEGACY_DRIVER                       0x00004000
+#define DNF_STOPPED                             0x00008000
+#define DNF_WILL_BE_REMOVED                     0x00010000
+#define DNF_NEED_TO_ENUM                        0x00020000
+#define DNF_NOT_CONFIGURED                      0x00040000
+#define DNF_REINSTALL                           0x00080000
+#define DNF_RESOURCE_REQUIREMENTS_NEED_FILTERED 0x00100000 // ???
+#define DNF_DISABLED                            0x00200000
+#define DNF_RESTART_OK                          0x00400000
+#define DNF_NEED_RESTART                        0x00800000
+#define DNF_VISITED                             0x01000000
+#define DNF_ASSIGNING_RESOURCES                 0x02000000
+#define DNF_BEEING_ENUMERATED                   0x04000000
+#define DNF_NEED_ENUMERATION_ONLY               0x08000000
+#define DNF_LOCKED                              0x10000000
+#define DNF_HAS_BOOT_CONFIG                     0x20000000
+#define DNF_BOOT_CONFIG_RESERVED                0x40000000
+#define DNF_HAS_PROBLEM                         0x80000000 // ???
+/* For UserFlags field */
+#define DNUF_DONT_SHOW_IN_UI    0x0002
+#define DNUF_NOT_DISABLEABLE    0x0008
+
 /* ENUMERATIONS **************************************************************/
+typedef enum _PNP_DEVNODE_STATE
+{
+    DeviceNodeUnspecified = 0x300,
+    DeviceNodeUninitialized = 0x301,
+    DeviceNodeInitialized = 0x302,
+    DeviceNodeDriversAdded = 0x303,
+    DeviceNodeResourcesAssigned = 0x304,
+    DeviceNodeStartPending = 0x305,
+    DeviceNodeStartCompletion = 0x306,
+    DeviceNodeStartPostWork = 0x307,
+    DeviceNodeStarted = 0x308,
+    DeviceNodeQueryStopped = 0x309,
+    DeviceNodeStopped = 0x30a,
+    DeviceNodeRestartCompletion = 0x30b,
+    DeviceNodeEnumeratePending = 0x30c,
+    DeviceNodeEnumerateCompletion = 0x30d,
+    DeviceNodeAwaitingQueuedDeletion = 0x30e,
+    DeviceNodeAwaitingQueuedRemoval = 0x30f,
+    DeviceNodeQueryRemoved = 0x310,
+    DeviceNodeRemovePendingCloses = 0x311,
+    DeviceNodeRemoved = 0x312,
+    DeviceNodeDeletePendingCloses = 0x313,
+    DeviceNodeDeleted = 0x314,
+    MaxDeviceNodeState = 0x315,
+} PNP_DEVNODE_STATE;
 
 /* TYPES *********************************************************************/
 
@@ -52,13 +117,124 @@
 
 typedef struct _IO_TIMER 
 {
-   USHORT Type;
-   USHORT TimerEnabled;
-   LIST_ENTRY IoTimerList;
-   PIO_TIMER_ROUTINE TimerRoutine;
-   PVOID Context;
-   PDEVICE_OBJECT DeviceObject;
+    USHORT Type;
+    USHORT TimerEnabled;
+    LIST_ENTRY IoTimerList;
+    PIO_TIMER_ROUTINE TimerRoutine;
+    PVOID Context;
+    PDEVICE_OBJECT DeviceObject;
 } IO_TIMER, *PIO_TIMER;
 
+typedef struct _DEVICE_NODE
+{
+    /* A tree structure. */
+    struct _DEVICE_NODE *Parent;
+    struct _DEVICE_NODE *PrevSibling;
+    struct _DEVICE_NODE *NextSibling;
+    struct _DEVICE_NODE *Child;
+    /* The level of deepness in the tree. */
+    UINT Level;
+    PPO_DEVICE_NOTIFY Notify;
+    /* State machine. */
+    PNP_DEVNODE_STATE State;
+    PNP_DEVNODE_STATE PreviousState;
+    PNP_DEVNODE_STATE StateHistory[20];
+    UINT StateHistoryEntry;
+    /* ? */
+    INT CompletionStatus;
+    /* ? */
+    PIRP PendingIrp;
+    /* See DNF_* flags below (WinDBG documentation has WRONG values) */
+    ULONG Flags;
+    /* See DNUF_* flags below (and IRP_MN_QUERY_PNP_DEVICE_STATE) */
+    ULONG UserFlags;
+    /* See CM_PROB_* values are defined in cfg.h */
+    ULONG Problem;
+    /* Pointer to the PDO corresponding to the device node. */
+    PDEVICE_OBJECT PhysicalDeviceObject;
+    /* Resource list as assigned by the PnP arbiter. See IRP_MN_START_DEVICE
+       and ARBITER_INTERFACE (not documented in DDK, but present in headers). */
+    PCM_RESOURCE_LIST ResourceList;
+    /* Resource list as assigned by the PnP arbiter (translated version). */
+    PCM_RESOURCE_LIST ResourceListTranslated;
+    /* Instance path relative to the Enum key in registry. */
+    UNICODE_STRING InstancePath;
+    /* Name of the driver service. */
+    UNICODE_STRING ServiceName;
+    /* ? */
+    PDEVICE_OBJECT DuplicatePDO;
+    /* See IRP_MN_QUERY_RESOURCE_REQUIREMENTS. */
+    PIO_RESOURCE_REQUIREMENTS_LIST ResourceRequirements;
+    /* Information about bus for bus drivers. */
+    INTERFACE_TYPE InterfaceType;
+    ULONG BusNumber;
+    /* Information about underlying bus for child devices. */
+    INTERFACE_TYPE ChildInterfaceType;
+    ULONG ChildBusNumber;
+    USHORT ChildBusTypeIndex;
+    /* ? */
+    UCHAR RemovalPolicy;
+    UCHAR HardwareRemovalPolicy;
+    LIST_ENTRY TargetDeviceNotify;
+    LIST_ENTRY DeviceArbiterList;
+    LIST_ENTRY DeviceTranslatorList;
+    USHORT NoTranslatorMask;
+    USHORT QueryTranslatorMask;
+    USHORT NoArbiterMask;
+    USHORT QueryArbiterMask;
+    union
+    {
+        struct _DEVICE_NODE *LegacyDeviceNode;
+        PDEVICE_RELATIONS PendingDeviceRelations;
+    } OverUsed1;
+    union
+    {
+        struct _DEVICE_NODE *NextResourceDeviceNode;
+    } OverUsed2;
+    /* See IRP_MN_QUERY_RESOURCES/IRP_MN_FILTER_RESOURCES. */
+    PCM_RESOURCE_LIST BootResources;
+    /* See the bitfields in DEVICE_CAPABILITIES structure. */
+    ULONG CapabilityFlags;
+    struct
+    {
+        ULONG DockStatus;
+        LIST_ENTRY ListEntry;
+        WCHAR *SerialNumber;
+    } DockInfo;
+    ULONG DisableableDepends;
+    LIST_ENTRY PendedSetInterfaceState;
+    LIST_ENTRY LegacyBusListEntry;
+    ULONG DriverUnloadRetryCount;
+    struct _DEVICE_NODE *PreviousParent;
+    ULONG DeletedChidren;
+
+    /* FIXME: Not NT's */
+    GUID BusTypeGuid;
+    ULONG Address;
+} DEVICE_NODE, *PDEVICE_NODE;
+
+typedef struct _DEVOBJ_EXTENSION
+{
+    CSHORT Type;
+    USHORT Size;
+    PDEVICE_OBJECT DeviceObject;
+    ULONG PowerFlags;
+    struct DEVICE_OBJECT_POWER_EXTENSION *Dope;
+    ULONG ExtensionFlags;
+    struct _DEVICE_NODE *DeviceNode;
+    PDEVICE_OBJECT AttachedTo;
+    LONG StartIoCount;
+    LONG StartIoKey;
+    ULONG StartIoFlags;
+    struct _VPB *Vpb;
+} DEVOBJ_EXTENSION, *PDEVOBJ_EXTENSION;
+
+typedef struct _PRIVATE_DRIVER_EXTENSIONS
+{
+    struct _PRIVATE_DRIVER_EXTENSIONS *Link;
+    PVOID ClientIdentificationAddress;
+    CHAR Extension[1];
+} PRIVATE_DRIVER_EXTENSIONS, *PPRIVATE_DRIVER_EXTENSIONS;
+
 #endif
 

Modified: trunk/reactos/include/ndk/ketypes.h
--- trunk/reactos/include/ndk/ketypes.h	2005-06-25 16:01:27 UTC (rev 16267)
+++ trunk/reactos/include/ndk/ketypes.h	2005-06-25 17:01:17 UTC (rev 16268)
@@ -11,6 +11,8 @@
 
 /* DEPENDENCIES **************************************************************/
 #include "haltypes.h"
+#include "potypes.h"
+#include "mmtypes.h"
 #include <arc/arc.h>
 
 /* CONSTANTS *****************************************************************/
@@ -21,12 +23,6 @@
 
 #define THREAD_WAIT_OBJECTS 4
 
-/* FIXME: Create an ASM Offset File */
-#define KTSS_ESP0      (0x4)
-#define KTSS_CR3       (0x1C)
-#define KTSS_EFLAGS    (0x24)
-#define KTSS_IOMAPBASE (0x66)
-
 /* EXPORTED DATA *************************************************************/
 extern CHAR NTOSAPI KeNumberProcessors;
 extern LOADER_PARAMETER_BLOCK NTOSAPI KeLoaderBlock;
@@ -46,13 +42,12 @@
 
 typedef struct _CONFIGURATION_COMPONENT_DATA 
 {
-  struct _CONFIGURATION_COMPONENT_DATA *Parent;
-  struct _CONFIGURATION_COMPONENT_DATA *Child;
-  struct _CONFIGURATION_COMPONENT_DATA *Sibling;
-  CONFIGURATION_COMPONENT Component;
+    struct _CONFIGURATION_COMPONENT_DATA *Parent;
+    struct _CONFIGURATION_COMPONENT_DATA *Child;
+    struct _CONFIGURATION_COMPONENT_DATA *Sibling;
+    CONFIGURATION_COMPONENT Component;
 } CONFIGURATION_COMPONENT_DATA, *PCONFIGURATION_COMPONENT_DATA;
 
-
 typedef enum _KAPC_ENVIRONMENT 
 {
     OriginalApcEnvironment,
@@ -68,6 +63,48 @@
     ULONG  DpcCount;
 } KDPC_DATA, *PKDPC_DATA;
 
+/* FIXME: Most of these should go to i386 directory */
+typedef struct _FNSAVE_FORMAT 
+{
+    ULONG ControlWord;
+    ULONG StatusWord;
+    ULONG TagWord;
+    ULONG ErrorOffset;
+    ULONG ErrorSelector;
+    ULONG DataOffset;
+    ULONG DataSelector;
+    UCHAR RegisterArea[80];
+} FNSAVE_FORMAT, *PFNSAVE_FORMAT;
+
+typedef struct _FXSAVE_FORMAT
+{
+    USHORT ControlWord;
+    USHORT StatusWord;
+    USHORT TagWord;
+    USHORT ErrorOpcode;
+    ULONG ErrorOffset;
+    ULONG ErrorSelector;
+    ULONG DataOffset;
+    ULONG DataSelector;
+    ULONG MXCsr;
+    ULONG MXCsrMask;
+    UCHAR RegisterArea[128];
+    UCHAR Reserved3[128];
+    UCHAR Reserved4[224];
+    UCHAR Align16Byte[8];
+} FXSAVE_FORMAT, *PFXSAVE_FORMAT;
+
+typedef struct _FX_SAVE_AREA
+{
+    union
+    {
+        FNSAVE_FORMAT FnArea;
+        FXSAVE_FORMAT FxArea;
+    } U;
+    ULONG NpxSavedCpu;
+    ULONG Cr0NpxState;
+} FX_SAVE_AREA, *PFX_SAVE_AREA;
+
 typedef struct _KTRAP_FRAME 
 {
     PVOID DebugEbp;
@@ -141,7 +178,231 @@
   } HighWord;
 } LDT_ENTRY, *PLDT_ENTRY, *LPLDT_ENTRY;
 
+typedef struct _KGDTENTRY
+{
+    USHORT LimitLow;
+    USHORT BaseLow;
+    union {
+        struct {
+            UCHAR BaseMid;
+            UCHAR Flags1;
+            UCHAR Flags2;
+            UCHAR BaseHi;
+        } Bytes;
+        struct {
+            ULONG BaseMid       : 8;
+            ULONG Type          : 5;
+            ULONG Dpl           : 2;
+            ULONG Pres          : 1;
+            ULONG LimitHi       : 4;
+            ULONG Sys           : 1;
+            ULONG Reserved_0    : 1;
+            ULONG Default_Big   : 1;
+            ULONG Granularity   : 1;
+            ULONG BaseHi        : 8;
+        } Bits;
+    } HighWord;
+} KGDTENTRY, *PKGDTENTRY;
 
+typedef struct _KIDTENTRY
+{
+    USHORT Offset;
+    USHORT Selector;
+    USHORT Access;
+    USHORT ExtendedOffset;
+} KIDTENTRY, *PKIDTENTRY;
+
+typedef struct _HARDWARE_PTE_X86
+{
+    ULONG Valid             : 1;
+    ULONG Write             : 1;
+    ULONG Owner             : 1;
+    ULONG WriteThrough      : 1;
+    ULONG CacheDisable      : 1;
+    ULONG Accessed          : 1;
+    ULONG Dirty             : 1;
+    ULONG LargePage         : 1;
+    ULONG Global            : 1;
+    ULONG CopyOnWrite       : 1;
+    ULONG Prototype         : 1;
+    ULONG reserved          : 1;
+    ULONG PageFrameNumber   : 20;
+} HARDWARE_PTE_X86, *PHARDWARE_PTE_X86;
+
+#pragma pack(push,4)
+
+/* Fixme: Use correct types? */
+typedef struct _KPROCESSOR_STATE
+{
+   PCONTEXT ContextFrame;
+   PVOID SpecialRegisters;
+} KPROCESSOR_STATE;
+
+/* Processor Control Block */
+typedef struct _KPRCB
+{
+	USHORT MinorVersion;
+    USHORT MajorVersion;
+    struct _KTHREAD *CurrentThread;
+    struct _KTHREAD *NextThread;
+    struct _KTHREAD *IdleThread;
+    UCHAR Number;
+    UCHAR Reserved;
+    USHORT BuildType;
+    ULONG SetMember;
+    UCHAR CpuType;
+    UCHAR CpuID;
+    USHORT CpuStep;
+    KPROCESSOR_STATE ProcessorState;
+    ULONG KernelReserved[16];
+    ULONG HalReserved[16];
+    UCHAR PrcbPad0[92];
+    PVOID LockQueue[33]; // Used for Queued Spinlocks
+    struct _KTHREAD *NpxThread;
+    ULONG InterruptCount;
+    ULONG KernelTime;
+    ULONG UserTime;
+    ULONG DpcTime;
+    ULONG DebugDpcTime;
+    ULONG InterruptTime;
+    ULONG AdjustDpcThreshold;
+    ULONG PageColor;
+    UCHAR SkipTick;
+    UCHAR DebuggerSavedIRQL;
+    UCHAR Spare1[6];
+    struct _KNODE *ParentNode;
+    ULONG MultiThreadProcessorSet;
+    struct _KPRCB *MultiThreadSetMaster;
+    ULONG ThreadStartCount[2];
+    ULONG CcFastReadNoWait;
+    ULONG CcFastReadWait;
+    ULONG CcFastReadNotPossible;
+    ULONG CcCopyReadNoWait;
+    ULONG CcCopyReadWait;
+    ULONG CcCopyReadNoWaitMiss;
+    ULONG KeAlignmentFixupCount;
+    ULONG KeContextSwitches;
+    ULONG KeDcacheFlushCount;
+    ULONG KeExceptionDispatchCount;
+    ULONG KeFirstLevelTbFills;
+    ULONG KeFloatingEmulationCount;
+    ULONG KeIcacheFlushCount;
+    ULONG KeSecondLevelTbFills;
+    ULONG KeSystemCalls;
+    ULONG IoReadOperationCount;
+    ULONG IoWriteOperationCount;
+    ULONG IoOtherOperationCount;
+    LARGE_INTEGER IoReadTransferCount;
+    LARGE_INTEGER IoWriteTransferCount;
+    LARGE_INTEGER IoOtherTransferCount;
+    ULONG SpareCounter1[8];
+    PP_LOOKASIDE_LIST PPLookasideList[16];
+    PP_LOOKASIDE_LIST PPNPagedLookasideList[32];
+    PP_LOOKASIDE_LIST PPPagedLookasideList[32];
+    ULONG PacketBarrier;
+    ULONG ReverseStall;
+    PVOID IpiFrame;
+    UCHAR PrcbPad2[52];
+    PVOID CurrentPacket[3];
+    ULONG TargetSet;
+    ULONG_PTR WorkerRoutine;
+    ULONG IpiFrozen;
+    UCHAR PrcbPad3[40];
+    ULONG RequestSummary;
+    struct _KPRCB *SignalDone;
+    UCHAR PrcbPad4[56];
+    struct _KDPC_DATA DpcData[2];
+    PVOID DpcStack;
+    ULONG MaximumDpcQueueDepth;
+    ULONG DpcRequestRate;
+    ULONG MinimumDpcRate;
+    UCHAR DpcInterruptRequested;
+    UCHAR DpcThreadRequested;
+    UCHAR DpcRoutineActive;
+    UCHAR DpcThreadActive;
+    ULONG PrcbLock;
+    ULONG DpcLastCount;
+    ULONG TimerHand;
+    ULONG TimerRequest;
+    PVOID DpcThread;
+    struct _KEVENT *DpcEvent;
+    UCHAR ThreadDpcEnable;
+    BOOLEAN QuantumEnd;
+    UCHAR PrcbPad50;
+    UCHAR IdleSchedule;
+    ULONG DpcSetEventRequest;
+    UCHAR PrcbPad5[18];
+    LONG TickOffset;
+    struct _KDPC* CallDpc;
+    ULONG PrcbPad7[8];
+    LIST_ENTRY WaitListHead;
+    ULONG ReadySummary;
+    ULONG SelectNextLast;
+    LIST_ENTRY DispatcherReadyListHead[32];
+    SINGLE_LIST_ENTRY DeferredReadyListHead;
+    ULONG PrcbPad72[11];
+    PVOID ChainedInterruptList;
+    LONG LookasideIrpFloat;
+    LONG MmPageFaultCount;
+    LONG MmCopyOnWriteCount;
+    LONG MmTransitionCount;
+    LONG MmCacheTransitionCount;
+    LONG MmDemandZeroCount;
+    LONG MmPageReadCount;
+    LONG MmPageReadIoCount;
+    LONG MmCacheReadCount;
+    LONG MmCacheIoCount;
+    LONG MmDirtyPagesWriteCount;
+    LONG MmDirtyWriteIoCount;
+    LONG MmMappedPagesWriteCount;
+    LONG MmMappedWriteIoCount;
+    ULONG SpareFields0[1];
+    CHAR VendorString[13];
+    UCHAR InitialApicId;
+    UCHAR LogicalProcessorsPerPhysicalProcessor;
+    ULONG MHz;
+    ULONG FeatureBits;
+    LARGE_INTEGER UpdateSignature;
+    LARGE_INTEGER IsrTime;
+    LARGE_INTEGER SpareField1;
+    FX_SAVE_AREA NpxSaveArea;
+    PROCESSOR_POWER_STATE PowerState;
+} KPRCB, *PKPRCB;
+
+/*
+ * This is the complete, internal KPCR structure
+ */
+typedef struct _KIPCR {
+  KPCR_TIB  Tib;                /* 00 */
+  struct _KPCR  *Self;          /* 1C */
+  struct _KPRCB  *Prcb;         /* 20 */
+  KIRQL  Irql;                  /* 24 */
+  ULONG  IRR;                   /* 28 */
+  ULONG  IrrActive;             /* 2C */
+  ULONG  IDR;                   /* 30 */
+  PVOID  KdVersionBlock;        /* 34 */
+  PUSHORT  IDT;                 /* 38 */
+  PUSHORT  GDT;                 /* 3C */
+  struct _KTSS  *TSS;           /* 40 */
+  USHORT  MajorVersion;         /* 44 */
+  USHORT  MinorVersion;         /* 46 */
+  KAFFINITY  SetMember;         /* 48 */
+  ULONG  StallScaleFactor;      /* 4C */
+  UCHAR  SparedUnused;          /* 50 */
+  UCHAR  Number;                /* 51 */
+  UCHAR  Reserved;              /* 52 */
+  UCHAR  L2CacheAssociativity;  /* 53 */
+  ULONG  VdmAlert;              /* 54 */
+  ULONG  KernelReserved[14];    /* 58 */
+  ULONG  L2CacheSize;           /* 90 */
+  ULONG  HalReserved[16];       /* 94 */
+  ULONG  InterruptMode;         /* D4 */
+  UCHAR  KernelReserved2[0x48]; /* D8 */
+  KPRCB  PrcbData;              /* 120 */
+} KIPCR, *PKIPCR;
+
+#pragma pack(pop)
+
 #include <pshpack1.h>
 
 typedef struct _KTSSNOIOPM
@@ -239,6 +500,35 @@
 
 } KEXCEPTION_FRAME, *PKEXCEPTION_FRAME;
 
+typedef struct _KNODE
+{
+   SLIST_HEADER DeadStackList;
+   SLIST_HEADER PfnDereferenceSListHead;
+   ULONG ProcessorMask;
+   ULONG Color;
+   UCHAR Seed;
+   UCHAR NodeNumber;
+   ULONG Flags;
+   ULONG MmShiftedColor;
+   ULONG FreeCount[2];
+   struct _SINGLE_LIST_ENTRY *PfnDeferredList;
+} KNODE, *PKNODE;
+
+typedef struct _KPROFILE
+{
+    CSHORT Type;
+    CSHORT Size;
+    LIST_ENTRY ListEntry;
+    PVOID RegionStart;
+    PVOID RegionEnd;
+    ULONG BucketShift;
+    PVOID Buffer;
+    CSHORT Source;
+    ULONG Affinity;
+    BOOLEAN Active;
+    struct _KPROCESS *Process;
+} KPROFILE, *PKPROFILE;
+
 typedef struct _KINTERRUPT 
 {
     CSHORT              Type;
@@ -271,36 +561,192 @@
     KEVENT HighEvent;
 } KEVENT_PAIR, *PKEVENT_PAIR;
 
-typedef enum _KOBJECTS {
-   EventNotificationObject = 0,
-   EventSynchronizationObject = 1,
-   MutantObject = 2,
-   ProcessObject = 3,
-   QueueObject = 4,
-   SemaphoreObject = 5,
-   ThreadObject = 6,
-   GateObject = 7,
-   TimerNotificationObject = 8,
-   TimerSynchronizationObject = 9,
-   Spare2Object = 10,
-   Spare3Object = 11,
-   Spare4Object = 12,
-   Spare5Object = 13,
-   Spare6Object = 14,
-   Spare7Object = 15,
-   Spare8Object = 16,
-   Spare9Object = 17,
-   ApcObject = 18,
-   DpcObject = 19,
-   DeviceQueueObject = 20,
-   EventPairObject = 21,
-   InterruptObject = 22,
-   ProfileObject = 23,
-   ThreadedDpcObject = 24,
-   MaximumKernelObject = 25
+typedef struct _KEXECUTE_OPTIONS
+{
+    UCHAR ExecuteDisable:1;
+    UCHAR ExecuteEnable:1;
+    UCHAR DisableThunkEmulation:1;
+    UCHAR Permanent:1;
+    UCHAR ExecuteDispatchEnable:1;
+    UCHAR ImageDispatchEnable:1;
+    UCHAR Spare:2;
+} KEXECUTE_OPTIONS, *PKEXECUTE_OPTIONS;
+
+typedef enum _KOBJECTS
+{
+    EventNotificationObject = 0,
+    EventSynchronizationObject = 1,
+    MutantObject = 2,
+    ProcessObject = 3,
+    QueueObject = 4,
+    SemaphoreObject = 5,
+    ThreadObject = 6,
+    GateObject = 7,
+    TimerNotificationObject = 8,
+    TimerSynchronizationObject = 9,
+    Spare2Object = 10,
+    Spare3Object = 11,
+    Spare4Object = 12,
+    Spare5Object = 13,
+    Spare6Object = 14,
+    Spare7Object = 15,
+    Spare8Object = 16,
+    Spare9Object = 17,
+    ApcObject = 18,
+    DpcObject = 19,
+    DeviceQueueObject = 20,
+    EventPairObject = 21,
+    InterruptObject = 22,
+    ProfileObject = 23,
+    ThreadedDpcObject = 24,
+    MaximumKernelObject = 25
 } KOBJECTS;
 
-typedef enum _KTHREAD_STATE {
+#include <pshpack1.h>
+
+typedef struct _KTHREAD
+{
+   /* For waiting on thread exit */
+   DISPATCHER_HEADER DispatcherHeader;    /* 00 */
+
+   /* List of mutants owned by the thread */
+   LIST_ENTRY        MutantListHead;      /* 10 */
+   PVOID             InitialStack;        /* 18 */
+   ULONG_PTR         StackLimit;          /* 1C */
+
+   /* Pointer to the thread's environment block in user memory */
+   struct _TEB       *Teb;                /* 20 */
+
+   /* Pointer to the thread's TLS array */
+   PVOID             TlsArray;            /* 24 */
+   PVOID             KernelStack;         /* 28 */
+   UCHAR             DebugActive;         /* 2C */
+
+   /* Thread state (one of THREAD_STATE_xxx constants below) */
+   UCHAR             State;               /* 2D */
+   BOOLEAN           Alerted[2];          /* 2E */
+   UCHAR             Iopl;                /* 30 */
+   UCHAR             NpxState;            /* 31 */
+   CHAR              Saturation;          /* 32 */
+   CHAR              Priority;            /* 33 */
+   KAPC_STATE        ApcState;            /* 34 */
+   ULONG             ContextSwitches;     /* 4C */
+   LONG              WaitStatus;          /* 50 */
+   KIRQL             WaitIrql;            /* 54 */
+   CHAR              WaitMode;            /* 55 */
+   UCHAR             WaitNext;            /* 56 */
+   UCHAR             WaitReason;          /* 57 */
+   union {                                /* 58 */
+      PKWAIT_BLOCK   WaitBlockList;       /* 58 */
+      PKGATE         GateObject;          /* 58 */
+   };                                     /* 58 */
+   LIST_ENTRY        WaitListEntry;       /* 5C */
+   ULONG             WaitTime;            /* 64 */
+   CHAR              BasePriority;        /* 68 */
+   UCHAR             DecrementCount;      /* 69 */
+   UCHAR             PriorityDecrement;   /* 6A */
+   CHAR              Quantum;             /* 6B */
+   KWAIT_BLOCK       WaitBlock[4];        /* 6C */
+   PVOID             LegoData;            /* CC */
+   union {
+          struct {
+              USHORT KernelApcDisable;
+              USHORT SpecialApcDisable;
+          };
+          ULONG      CombinedApcDisable;  /* D0 */
+   };
+   KAFFINITY         UserAffinity;        /* D4 */
+   UCHAR             SystemAffinityActive;/* D8 */
+   UCHAR             PowerState;          /* D9 */
+   UCHAR             NpxIrql;             /* DA */
+   UCHAR             Pad[1];              /* DB */
+   PVOID             ServiceTable;        /* DC */
+   PKQUEUE           Queue;               /* E0 */
+   KSPIN_LOCK        ApcQueueLock;        /* E4 */
+   KTIMER            Timer;               /* E8 */
+   LIST_ENTRY        QueueListEntry;      /* 110 */
+   KAFFINITY         Affinity;            /* 118 */
+   UCHAR             Preempted;           /* 11C */
+   UCHAR             ProcessReadyQueue;   /* 11D */
+   UCHAR             KernelStackResident; /* 11E */
+   UCHAR             NextProcessor;       /* 11F */
+   PVOID             CallbackStack;       /* 120 */
+   struct _W32THREAD *Win32Thread;        /* 124 */
+   struct _KTRAP_FRAME *TrapFrame;        /* 128 */
+   PKAPC_STATE       ApcStatePointer[2];  /* 12C */
+   UCHAR             EnableStackSwap;     /* 134 */
+   UCHAR             LargeStack;          /* 135 */
+   UCHAR             ResourceIndex;       /* 136 */
+   UCHAR             PreviousMode;        /* 137 */
+   ULONG             KernelTime;          /* 138 */
+   ULONG             UserTime;            /* 13C */
+   KAPC_STATE        SavedApcState;       /* 140 */
+   UCHAR             Alertable;           /* 158 */
+   UCHAR             ApcStateIndex;       /* 159 */
+   UCHAR             ApcQueueable;        /* 15A */
+   UCHAR             AutoAlignment;       /* 15B */
+   PVOID             StackBase;           /* 15C */
+   KAPC              SuspendApc;          /* 160 */
+   KSEMAPHORE        SuspendSemaphore;    /* 190 */
+   LIST_ENTRY        ThreadListEntry;     /* 1A4 */
+   CHAR              FreezeCount;         /* 1AC */
+   UCHAR             SuspendCount;        /* 1AD */
+   UCHAR             IdealProcessor;      /* 1AE */
+   UCHAR             DisableBoost;        /* 1AF */
+   UCHAR             QuantumReset;        /* 1B0 */
+} KTHREAD;
+
+#include <poppack.h>
+
+/*
+ * NAME:           KPROCESS
+ * DESCRIPTION:    Internal Kernel Process Structure.
+ * PORTABILITY:    Architecture Dependent.
+ * KERNEL VERSION: 5.2
+ * DOCUMENTATION:  http://reactos.com/wiki/index.php/KPROCESS
+ */
+typedef struct _KPROCESS
+{
+    DISPATCHER_HEADER     Header;                    /* 000 */
+    LIST_ENTRY            ProfileListHead;           /* 010 */
+    PHYSICAL_ADDRESS      DirectoryTableBase;        /* 018 */
+    KGDTENTRY             LdtDescriptor;             /* 020 */
+    KIDTENTRY             Int21Descriptor;           /* 028 */
+    USHORT                IopmOffset;                /* 030 */
+    UCHAR                 Iopl;                      /* 032 */
+    UCHAR                 Unused;                    /* 033 */
+    ULONG                 ActiveProcessors;          /* 034 */
+    ULONG                 KernelTime;                /* 038 */
+    ULONG                 UserTime;                  /* 03C */
+    LIST_ENTRY            ReadyListHead;             /* 040 */
+    LIST_ENTRY            SwapListEntry;             /* 048 */
+    PVOID                 VdmTrapcHandler;           /* 04C */
+    LIST_ENTRY            ThreadListHead;            /* 050 */
+    KSPIN_LOCK            ProcessLock;               /* 058 */
+    KAFFINITY             Affinity;                  /* 05C */
+    union {
+        struct {
+            ULONG         AutoAlignment:1;           /* 060.0 */
+            ULONG         DisableBoost:1;            /* 060.1 */
+            ULONG         DisableQuantum:1;          /* 060.2 */
+            ULONG         ReservedFlags:29;          /* 060.3 */
+        };
+        ULONG             ProcessFlags;              /* 060 */
+    };
+    CHAR                  BasePriority;              /* 064 */
+    CHAR                  QuantumReset;              /* 065 */
+    UCHAR                 State;                     /* 066 */
+    UCHAR                 ThreadSeed;                /* 067 */
+    UCHAR                 PowerState;                /* 068 */
+    UCHAR                 IdealNode;                 /* 069 */
+    UCHAR                 Visited;                   /* 06A */
+    KEXECUTE_OPTIONS      Flags;                     /* 06B */
+    ULONG                 StackCount;                /* 06C */
+    LIST_ENTRY            ProcessListEntry;          /* 070 */
[truncated at 1000 lines; 6372 more skipped]