- Fix KeAttackProcess, KeStackAttachProcess, KeUnstackDetachProcess and KeDetachProce...
[reactos.git] / reactos / include / ndk / haltypes.h
index b6976da..006c8f6 100644 (file)
-/*
- * PROJECT:         ReactOS Native Headers
- * FILE:            include/ndk/haltypes.h
- * PURPOSE:         Definitions for HAL/BLDR types not defined in DDK/IFS
- * PROGRAMMER:      Alex Ionescu (alex@relsoft.net)
- * UPDATE HISTORY:
- *                  Created 06/10/04
- */
+/*++ NDK Version: 0095
+
+Copyright (c) Alex Ionescu.  All rights reserved.
+
+Header Name:
+
+    haltypes.h
+
+Abstract:
+
+    Type definitions for the HAL.
+
+Author:
+
+    Alex Ionescu (alex.ionescu@reactos.com)   06-Oct-2004
+
+--*/
+
 #ifndef _HALTYPES_H
 #define _HALTYPES_H
 
-/* DEPENDENCIES **************************************************************/
-//#include <ddk/ntdddisk.h>
-
-/* EXPORTED DATA *************************************************************/
-extern ULONG NTOSAPI KdComPortInUse;
-
-/* CONSTANTS *****************************************************************/
-
-/* Boot Flags */
-#define MB_FLAGS_MEM_INFO         (0x1)
-#define MB_FLAGS_BOOT_DEVICE      (0x2)
-#define MB_FLAGS_COMMAND_LINE     (0x4)
-#define MB_FLAGS_MODULE_INFO      (0x8)
-#define MB_FLAGS_AOUT_SYMS        (0x10)
-#define MB_FLAGS_ELF_SYMS         (0x20)
-#define MB_FLAGS_MMAP_INFO        (0x40)
-#define MB_FLAGS_DRIVES_INFO      (0x80)
-#define MB_FLAGS_CONFIG_TABLE     (0x100)
-#define MB_FLAGS_BOOT_LOADER_NAME (0x200)
-#define MB_FLAGS_APM_TABLE        (0x400)
-#define MB_FLAGS_GRAPHICS_TABLE   (0x800)
-
-/* ENUMERATIONS **************************************************************/
+//
+// Dependencies
+//
+#include <umtypes.h>
+
+#ifndef NTOS_MODE_USER
+
+//
+// Multi-Boot Flags (REMOVE ME)
+//
+#ifdef _REACTOS_
+#define MB_FLAGS_MEM_INFO                   (0x1)
+#define MB_FLAGS_BOOT_DEVICE                (0x2)
+#define MB_FLAGS_COMMAND_LINE               (0x4)
+#define MB_FLAGS_MODULE_INFO                (0x8)
+#define MB_FLAGS_AOUT_SYMS                  (0x10)
+#define MB_FLAGS_ELF_SYMS                   (0x20)
+#define MB_FLAGS_MMAP_INFO                  (0x40)
+#define MB_FLAGS_DRIVES_INFO                (0x80)
+#define MB_FLAGS_CONFIG_TABLE               (0x100)
+#define MB_FLAGS_BOOT_LOADER_NAME           (0x200)
+#define MB_FLAGS_APM_TABLE                  (0x400)
+#define MB_FLAGS_GRAPHICS_TABLE             (0x800)
+#define MB_FLAGS_ACPI_TABLE                 (0x1000)
+#endif
+
+//
+// HalShutdownSystem Types
+//
 typedef enum _FIRMWARE_ENTRY
 {
-    /*FIXME */
-    HalFixMe
-} FIRMWARE_ENTRY;
+    HalHaltRoutine,
+    HalPowerDownRoutine,
+    HalRestartRoutine,
+    HalRebootRoutine,
+    HalInteractiveModeRoutine,
+    HalMaximumRoutine
+} FIRMWARE_REENTRY, *PFIRMWARE_REENTRY;
 
-/* TYPES *********************************************************************/
+//
+// Hal Private dispatch Table
+//
+#define HAL_PRIVATE_DISPATCH_VERSION        2
+typedef struct _HAL_PRIVATE_DISPATCH
+{
+    ULONG Version;
+    PVOID HalHandlerForBus;
+    PVOID HalHandlerForBus2;
+    PVOID HalLocateHiberRanges;
+    PVOID HalRegisterBusHandler;
+    PVOID HalSetWakeEnable;
+    PVOID HalSetWakeAlarm;
+    PVOID HalTranslateBusAddress;
+    PVOID HalTranslateBusAddress2;
+    PVOID HalHaltSystem;
+    PVOID Null;
+    PVOID Null2;
+    PVOID HalAllocateMapRegisters;
+    PVOID KdSetupPciDeviceForDebugging;
+    PVOID KdReleasePciDeviceforDebugging;
+    PVOID KdGetAcpiTablePhase0;
+    PVOID HalReferenceHandler;
+    PVOID HalVectorToIDTEntry;
+    PVOID MatchAll;
+    PVOID KdUnmapVirtualAddress;
+} HAL_PRIVATE_DISPATCH, *PHAL_PRIVATE_DISPATCH;
 
-typedef struct _LOADER_MODULE 
+#ifndef _REACTOS_
+//
+// NLS Data Block
+//
+typedef struct _NLS_TABLE_DATA
 {
-   ULONG ModStart;
-   ULONG ModEnd;
-   ULONG String;
-   ULONG Reserved;
-} LOADER_MODULE, *PLOADER_MODULE;
+    PVOID AnsiCodePageData;
+    PVOID OemCodePageData;
+    PVOID UnicodeCodePageData;
+} NLS_TABLE_DATA, *PNLS_TABLE_DATA;
+
+//
+// Subsystem Specific Loader Blocks
+//
+typedef struct _PROFILE_PARAMETER_BLOCK
+{
+    USHORT DockData0;
+    USHORT DockData1;
+    USHORT DockData2;
+    USHORT DockData3;
+    ULONG DockData4;
+    ULONG DockData5;
+} PROFILE_PARAMETER_BLOCK, *PPROFILE_PARAMETER_BLOCK;
+
+typedef struct _HEADLESS_LOADER_BLOCK
+{
+    UCHAR Unknown[0xC];
+} HEADLESS_LOADER_BLOCK, *PHEADLESS_LOADER_BLOCK;
 
+typedef struct _NETWORK_LOADER_BLOCK
+{
+    UCHAR Unknown[0xC];
+} NETWORK_LOADER_BLOCK, *PNETWORK_LOADER_BLOCK;
+
+//
+// Extended Loader Parameter Block
+//
+typedef struct _LOADER_PARAMETER_EXTENSION
+{
+    ULONG Size;
+    PROFILE_PARAMETER_BLOCK ProfileParameterBlock;
+    ULONG MajorVersion;
+    ULONG MinorVersion;
+    PVOID SpecialConfigInfFile;
+    ULONG SpecialConfigInfSize;
+    PVOID TriageDumpData;
+    //
+    // NT 5.1
+    //
+    ULONG NumberOfPages;
+    PHEADLESS_LOADER_BLOCK HeadlessLoaderBlock;
+    PVOID Unknown1;
+    PVOID PrefetchDatabaseBase;
+    ULONG PrefetchDatabaseSize;
+    PNETWORK_LOADER_BLOCK NetworkLoaderBlock;
+    //
+    // NT 5.2+
+    //
+    PVOID Reserved[2];
+    LIST_ENTRY FirmwareListEntry;
+    PVOID AcpiTableBase;
+    ULONG AcpiTableSize;
+} LOADER_PARAMETER_EXTENSION, *PLOADER_PARAMETER_EXTENSION;
+
+//
+// Architecture specific Loader Parameter Blocks
+//
+typedef struct _I386_LOADER_BLOCK
+{
+    PVOID CommonDataArea;
+    ULONG MachineType;
+    ULONG Reserved;
+} I386_LOADER_BLOCK, *PI386_LOADER_BLOCK;
+
+//
+// Setup Loader Parameter Block
+//
+typedef struct _SETUP_LOADER_BLOCK
+{
+    ULONG Unknown[139];
+    ULONG Flags;
+} SETUP_LOADER_BLOCK, *PSETUP_LOADER_BLOCK;
+
+//
+// Loader Parameter Block
+//
 typedef struct _LOADER_PARAMETER_BLOCK
 {
-   ULONG Flags;
-   ULONG MemLower;
-   ULONG MemHigher;
-   ULONG BootDevice;
-   ULONG CommandLine;
-   ULONG ModsCount;
-   ULONG ModsAddr;
-   UCHAR Syms[12];
-   ULONG MmapLength;
-   ULONG MmapAddr;
-   ULONG DrivesCount;
-   ULONG DrivesAddr;
-   ULONG ConfigTable;
-   ULONG BootLoaderName;
-   ULONG PageDirectoryStart;
-   ULONG PageDirectoryEnd;
-   ULONG KernelBase;
+    LIST_ENTRY LoadOrderListHead;
+    LIST_ENTRY MemoryDescriptorListHead;
+    LIST_ENTRY DriverList;
+    PVOID KernelStack;
+    PVOID Prcb;
+    PVOID Process;
+    PVOID Thread;
+    ULONG RegistryLength;
+    PVOID RegistryBase;
+    PCONFIGURATION_COMPONENT_DATA ConfigurationRoot;
+    LPSTR ArcBootDeviceName;
+    LPSTR ArcHalDeviceName;
+    LPSTR SystemRoot;
+    LPSTR BootRoot;
+    LPSTR CommandLine;
+    PNLS_TABLE_DATA NlsTables;
+    PARC_DISK_INFORMATION ArcDevices;
+    PVOID OEMFont;
+    PSETUP_LOADER_BLOCK SetupLdrBlock;
+    PLOADER_PARAMETER_EXTENSION LpbExtension;
+    union
+    {
+        I386_LOADER_BLOCK I386;
+    } u;
 } LOADER_PARAMETER_BLOCK, *PLOADER_PARAMETER_BLOCK;
 
+#else
+
+//
+// FIXME: ReactOS ONLY
+//
+typedef struct _LOADER_MODULE
+{
+    ULONG ModStart;
+    ULONG ModEnd;
+    ULONG String;
+    ULONG Reserved;
+} LOADER_MODULE, *PLOADER_MODULE;
+typedef struct _LOADER_PARAMETER_BLOCK
+{
+    ULONG Flags;
+    ULONG MemLower;
+    ULONG MemHigher;
+    ULONG BootDevice;
+    ULONG CommandLine;
+    ULONG ModsCount;
+    ULONG ModsAddr;
+    UCHAR Syms[12];
+    ULONG MmapLength;
+    ULONG MmapAddr;
+    ULONG DrivesCount;
+    ULONG DrivesAddr;
+    ULONG ConfigTable;
+    ULONG BootLoaderName;
+    ULONG PageDirectoryStart;
+    ULONG PageDirectoryEnd;
+    ULONG KernelBase;
+} LOADER_PARAMETER_BLOCK, *PLOADER_PARAMETER_BLOCK;
+#endif
+
+//
+// Kernel Exports
+//
+#ifdef __NTOSKRNL__
+extern HAL_PRIVATE_DISPATCH NTSYSAPI HalPrivateDispatchTable;
+#else
+extern PHAL_PRIVATE_DISPATCH NTSYSAPI HalPrivateDispatchTable;
+#endif
+extern ULONG NTSYSAPI KdComPortInUse;
+
+#endif
 #endif