diff --git a/reactos/ReactOS.xml b/reactos/ReactOS.xml
index d4db64c83a8..b5a53845f8e 100644
--- a/reactos/ReactOS.xml
+++ b/reactos/ReactOS.xml
@@ -35,6 +35,7 @@
include/libs
include/drivers
include/subsys
+ include/ndk
w32api/include
w32api/include/crt
w32api/include/ddk
diff --git a/reactos/hal/halx86/mp/mps.S b/reactos/hal/halx86/mp/mps.S
index efc5d104823..386efb44a1a 100644
--- a/reactos/hal/halx86/mp/mps.S
+++ b/reactos/hal/halx86/mp/mps.S
@@ -11,7 +11,7 @@
/* INCLUDES ******************************************************************/
-#include
+#include
/* FUNCTIONS *****************************************************************/
diff --git a/reactos/include/ndk/sysguid.h b/reactos/include/libs/umpnpmgr/sysguid.h
similarity index 77%
rename from reactos/include/ndk/sysguid.h
rename to reactos/include/libs/umpnpmgr/sysguid.h
index 25f55d08be8..bdc02874c0c 100644
--- a/reactos/include/ndk/sysguid.h
+++ b/reactos/include/libs/umpnpmgr/sysguid.h
@@ -1,10 +1,9 @@
/*
- * PROJECT: ReactOS Native Headers
- * FILE: include/ndk/sysguid.h
- * PURPOSE: GUIDs not defined in DDK/IFS
- * PROGRAMMER: Alex Ionescu (alex@relsoft.net)
- * UPDATE HISTORY:
- * Created 06/10/04
+ * COPYRIGHT: See COPYING in the top level directory
+ * PROJECT: ReactOS UserMode PnP
+ * FILE: ntoskrnl/rtl/libsupp.c
+ * PURPOSE: GUIDs shared between umpnpmgr and the Kernel PnP Manager
+ * PROGRAMMERS: Eric Kohl
*/
#ifndef _SYSGUID_H
@@ -14,16 +13,10 @@ DEFINE_GUID(GUID_DEVICE_STANDBY_VETOED,
0x03B21C13, 0x18D6, 0x11D3, 0x97, 0xDB, 0x00, 0xA0, 0xC9, 0x40, 0x52, 0x2E);
DEFINE_GUID(GUID_DEVICE_KERNEL_INITIATED_EJECT,
0x14689B54, 0x0703, 0x11D3, 0x97, 0xD2, 0x00, 0xA0, 0xC9, 0x40, 0x52, 0x2E);
-DEFINE_GUID(GUID_DEVICE_THERMAL_ZONE,
- 0x4AFA3D51, 0x74A7, 0x11D0, 0xBE, 0x5E, 0x00, 0xA0, 0xC9, 0x06, 0x28, 0x57);
-DEFINE_GUID(GUID_DEVICE_SYS_BUTTON,
- 0x4AFA3D53, 0x74A7, 0x11D0, 0xBE, 0x5E, 0x00, 0xA0, 0xC9, 0x06, 0x28, 0x57);
DEFINE_GUID(GUID_DEVICE_REMOVAL_VETOED,
0x60DBD5FA, 0xDDD2, 0x11D2, 0x97, 0xB8, 0x00, 0xA0, 0xC9, 0x40, 0x52, 0x2E);
DEFINE_GUID(GUID_DEVICE_HIBERNATE_VETOED,
0x61173AD9, 0x194F, 0x11D3, 0x97, 0xDC, 0x00, 0xA0, 0xC9, 0x40, 0x52, 0x2E);
-DEFINE_GUID(GUID_DEVICE_BATTERY,
- 0x72631E54, 0x78A4, 0x11D0, 0xBC, 0xF7, 0x00, 0xAA, 0x00, 0xB7, 0xB3, 0x2A);
DEFINE_GUID(GUID_DEVICE_SAFE_REMOVAL,
0x8FBEF967, 0xD6C5, 0x11D2, 0x97, 0xB5, 0x00, 0xA0, 0xC9, 0x40, 0x52, 0x2E);
diff --git a/reactos/include/ndk/arch/ketypes.h b/reactos/include/ndk/arch/ketypes.h
index c47934eae20..76e3b3db1e9 100644
--- a/reactos/include/ndk/arch/ketypes.h
+++ b/reactos/include/ndk/arch/ketypes.h
@@ -1,15 +1,27 @@
-/*
- * PROJECT: ReactOS Native Headers
- * FILE: include/ndk/arch/ketypes.h
- * PURPOSE: Architecture-specific definitions for Kernel Types
- * PROGRAMMER: Alex Ionescu (alex@relsoft.net)
- * UPDATE HISTORY:
- * Created 06/10/04
- */
+/*++ NDK Version: 0095
+
+Copyright (c) Alex Ionescu. All rights reserved.
+
+Header Name:
+
+ ketypes.h (ARCH)
+
+Abstract:
+
+ Portability file to choose the correct Architecture-specific file.
+
+Author:
+
+ Alex Ionescu (alex.ionescu@reactos.com) 06-Oct-2004
+
+--*/
+
#ifndef _ARCH_KETYPES_H
#define _ARCH_KETYPES_H
-/* Shared structures needed by Arch-specific headers */
+//
+// FIXME: Find a solution to take these out of here!
+//
typedef struct _KDPC_DATA
{
LIST_ENTRY DpcListHead;
@@ -24,8 +36,11 @@ typedef struct _PP_LOOKASIDE_LIST
struct _GENERAL_LOOKASIDE *L;
} PP_LOOKASIDE_LIST, *PPP_LOOKASIDE_LIST;
+//
+// Include the right file for this architecture.
+//
#ifdef _M_IX86
-#include
+#include
#else
#error "Unknown processor"
#endif
diff --git a/reactos/include/ndk/arch/mmtypes.h b/reactos/include/ndk/arch/mmtypes.h
index 5eb7bba77af..632cbfbda82 100644
--- a/reactos/include/ndk/arch/mmtypes.h
+++ b/reactos/include/ndk/arch/mmtypes.h
@@ -1,16 +1,29 @@
-/*
- * PROJECT: ReactOS Native Headers
- * FILE: include/ndk/arch/mmtypes.h
- * PURPOSE: Architecture-specific definitions for Memory Manager Types
- * PROGRAMMER: Alex Ionescu (alex@relsoft.net)
- * UPDATE HISTORY:
- * Created 06/10/04
- */
+/*++ NDK Version: 0095
+
+Copyright (c) Alex Ionescu. All rights reserved.
+
+Header Name:
+
+ mmtypes.h (ARCH)
+
+Abstract:
+
+ Portability file to choose the correct Architecture-specific file.
+
+Author:
+
+ Alex Ionescu (alex.ionescu@reactos.com) 06-Oct-2004
+
+--*/
+
#ifndef _ARCH_MMTYPES_H
#define _ARCH_MMTYPES_H
+//
+// Include the right file for this architecture.
+//
#ifdef _M_IX86
-#include "./../i386/mmtypes.h"
+#include
#else
#error "Unknown processor"
#endif
diff --git a/reactos/include/ndk/asm.h b/reactos/include/ndk/asm.h
index 708ebac9de4..218dd6e19a0 100644
--- a/reactos/include/ndk/asm.h
+++ b/reactos/include/ndk/asm.h
@@ -1,217 +1,259 @@
-/*
- * PROJECT: ReactOS Native Headers
- * FILE: include/ndk/asm.h
- * PURPOSE: Defintions for Structures used in Assembly Code
- * PROGRAMMER: Alex Ionescu (alex@relsoft.net)
- * UPDATE HISTORY:
- * Created 07/19/05
- */
+/*++ NDK Version: 0095
+
+Copyright (c) Alex Ionescu. All rights reserved.
+
+Header Name:
+
+ asm.h
+
+Abstract:
+
+ ASM Offsets for dealing with de-referencing structures in registers.
+
+Author:
+
+ Alex Ionescu (alex.ionescu@reactos.com) 06-Oct-2004
+
+--*/
+
#ifndef _ASM_H
#define _ASM_H
-/* DEPENDENCIES **************************************************************/
+//
+// FIXME: Use real names.
+//
+#define KERNEL_CS (0x8)
+#define KERNEL_DS (0x10)
+#define USER_CS (0x18 + 0x3)
+#define USER_DS (0x20 + 0x3)
+#define TSS_SELECTOR (0x28)
+#define PCR_SELECTOR (0x30)
+#define TEB_SELECTOR (0x38 + 0x3)
+#define LDT_SELECTOR (0x48)
+#define TRAP_TSS_SELECTOR (0x50)
-/* EXPORTED DATA *************************************************************/
+//
+// KV86M_REGISTERS Offsets
+//
+#define KV86M_REGISTERS_EBP 0x0
+#define KV86M_REGISTERS_EDI 0x4
+#define KV86M_REGISTERS_ESI 0x8
+#define KV86M_REGISTERS_EDX 0xC
+#define KV86M_REGISTERS_ECX 0x10
+#define KV86M_REGISTERS_EBX 0x14
+#define KV86M_REGISTERS_EAX 0x18
+#define KV86M_REGISTERS_DS 0x1C
+#define KV86M_REGISTERS_ES 0x20
+#define KV86M_REGISTERS_FS 0x24
+#define KV86M_REGISTERS_GS 0x28
+#define KV86M_REGISTERS_EIP 0x2C
+#define KV86M_REGISTERS_CS 0x30
+#define KV86M_REGISTERS_EFLAGS 0x34
+#define KV86M_REGISTERS_ESP 0x38
+#define KV86M_REGISTERS_SS 0x3C
+#define TF_SAVED_EXCEPTION_STACK 0x8C
+#define TF_REGS 0x90
+#define TF_ORIG_EBP 0x94
-/* CONSTANTS *****************************************************************/
+//
+// TSS Offsets
+//
+#define KTSS_ESP0 0x4
+#define KTSS_CR3 0x1C
+#define KTSS_EFLAGS 0x24
+#define KTSS_IOMAPBASE 0x66
-/*
- * Definitions for the offsets of members in the KV86M_REGISTERS
- */
-#define KV86M_REGISTERS_EBP 0x0
-#define KV86M_REGISTERS_EDI 0x4
-#define KV86M_REGISTERS_ESI 0x8
-#define KV86M_REGISTERS_EDX 0xC
-#define KV86M_REGISTERS_ECX 0x10
-#define KV86M_REGISTERS_EBX 0x14
-#define KV86M_REGISTERS_EAX 0x18
-#define KV86M_REGISTERS_DS 0x1C
-#define KV86M_REGISTERS_ES 0x20
-#define KV86M_REGISTERS_FS 0x24
-#define KV86M_REGISTERS_GS 0x28
-#define KV86M_REGISTERS_EIP 0x2C
-#define KV86M_REGISTERS_CS 0x30
-#define KV86M_REGISTERS_EFLAGS 0x34
-#define KV86M_REGISTERS_ESP 0x38
-#define KV86M_REGISTERS_SS 0x3C
+//
+// KTHREAD Offsets
+//
+#define KTHREAD_DEBUG_ACTIVE 0x03
+#define KTHREAD_INITIAL_STACK 0x18
+#define KTHREAD_STACK_LIMIT 0x1C
+#define KTHREAD_TEB 0x74
+#define KTHREAD_KERNEL_STACK 0x20
+#define KTHREAD_NPX_STATE 0x4D
+#define KTHREAD_STATE 0x4C
+#define KTHREAD_ALERTED 0x5E
+#define KTHREAD_APCSTATE_PROCESS 0x28 + 0x10
+#define KTHREAD_PENDING_USER_APC 0x28 + 0x16
+#define KTHREAD_PENDING_KERNEL_APC 0x28 + 0x15
+#define KTHREAD_CONTEXT_SWITCHES 0x48
+#define KTHREAD_WAIT_IRQL 0x4E
+#define KTHREAD_SERVICE_TABLE 0x118
+#define KTHREAD_PREVIOUS_MODE 0xD7
+#define KTHREAD_TRAP_FRAME 0x110
+#define KTHREAD_CALLBACK_STACK 0x114
-#define TF_SAVED_EXCEPTION_STACK 0x8C
-#define TF_REGS 0x90
-#define TF_ORIG_EBP 0x94
+//
+// KPROCESS Offsets
+//
+#define KPROCESS_DIRECTORY_TABLE_BASE 0x18
+#define KPROCESS_LDT_DESCRIPTOR0 0x20
+#define KPROCESS_LDT_DESCRIPTOR1 0x24
+#define KPROCESS_IOPM_OFFSET 0x30
-/* TSS Offsets */
-#define KTSS_ESP0 0x4
-#define KTSS_CR3 0x1C
-#define KTSS_EFLAGS 0x24
-#define KTSS_IOMAPBASE 0x66
+//
+// KPCR Offsets
+//
+#define KPCR_EXCEPTION_LIST 0x0
+#define KPCR_INITIAL_STACK 0x4
+#define KPCR_STACK_LIMIT 0x8
+#define KPCR_TEB 0x18
+#define KPCR_SELF 0x1C
+#define KPCR_GDT 0x3C
+#define KPCR_TSS 0x40
+#define KPCR_CURRENT_THREAD 0x124
+#define KPCR_NPX_THREAD 0x2F4
-/*
- * Defines for accessing KPCR and KTHREAD structure members
- */
-#define KTHREAD_DEBUG_ACTIVE 0x03
-#define KTHREAD_INITIAL_STACK 0x18
-#define KTHREAD_STACK_LIMIT 0x1C
-#define KTHREAD_TEB 0x74
-#define KTHREAD_KERNEL_STACK 0x20
-#define KTHREAD_NPX_STATE 0x4D
-#define KTHREAD_STATE 0x4C
-#define KTHREAD_ALERTED 0x5E
-#define KTHREAD_APCSTATE_PROCESS 0x28 + 0x10
-#define KTHREAD_PENDING_USER_APC 0x28 + 0x16
-#define KTHREAD_PENDING_KERNEL_APC 0x28 + 0x15
-#define KTHREAD_CONTEXT_SWITCHES 0x48
-#define KTHREAD_WAIT_IRQL 0x4E
-#define KTHREAD_SERVICE_TABLE 0x118
-#define KTHREAD_PREVIOUS_MODE 0xD7
-#define KTHREAD_TRAP_FRAME 0x110
-#define KTHREAD_CALLBACK_STACK 0x114
+//
+// FPU Save Area Offsets
+//
+#define FN_CONTROL_WORD 0x0
+#define FN_STATUS_WORD 0x4
+#define FN_TAG_WORD 0x8
+#define FN_DATA_SELECTOR 0x18
+#define FN_CR0_NPX_STATE 0x20C
+#define SIZEOF_FX_SAVE_AREA 528
-#define KPROCESS_DIRECTORY_TABLE_BASE 0x18
-#define KPROCESS_LDT_DESCRIPTOR0 0x20
-#define KPROCESS_LDT_DESCRIPTOR1 0x24
-#define KPROCESS_IOPM_OFFSET 0x30
+//
+// Trap Frame Offsets
+//
+#define KTRAP_FRAME_DEBUGEBP 0x0
+#define KTRAP_FRAME_DEBUGEIP 0x4
+#define KTRAP_FRAME_DEBUGARGMARK 0x8
+#define KTRAP_FRAME_DEBUGPOINTER 0xC
+#define KTRAP_FRAME_TEMPCS 0x10
+#define KTRAP_FRAME_TEMPESP 0x14
+#define KTRAP_FRAME_DR0 0x18
+#define KTRAP_FRAME_DR1 0x1C
+#define KTRAP_FRAME_DR2 0x20
+#define KTRAP_FRAME_DR3 0x24
+#define KTRAP_FRAME_DR6 0x28
+#define KTRAP_FRAME_DR7 0x2C
+#define KTRAP_FRAME_GS 0x30
+#define KTRAP_FRAME_RESERVED1 0x32
+#define KTRAP_FRAME_ES 0x34
+#define KTRAP_FRAME_RESERVED2 0x36
+#define KTRAP_FRAME_DS 0x38
+#define KTRAP_FRAME_RESERVED3 0x3A
+#define KTRAP_FRAME_EDX 0x3C
+#define KTRAP_FRAME_ECX 0x40
+#define KTRAP_FRAME_EAX 0x44
+#define KTRAP_FRAME_PREVIOUS_MODE 0x48
+#define KTRAP_FRAME_EXCEPTION_LIST 0x4C
+#define KTRAP_FRAME_FS 0x50
+#define KTRAP_FRAME_RESERVED4 0x52
+#define KTRAP_FRAME_EDI 0x54
+#define KTRAP_FRAME_ESI 0x58
+#define KTRAP_FRAME_EBX 0x5C
+#define KTRAP_FRAME_EBP 0x60
+#define KTRAP_FRAME_ERROR_CODE 0x64
+#define KTRAP_FRAME_EIP 0x68
+#define KTRAP_FRAME_CS 0x6C
+#define KTRAP_FRAME_EFLAGS 0x70
+#define KTRAP_FRAME_ESP 0x74
+#define KTRAP_FRAME_SS 0x78
+#define KTRAP_FRAME_RESERVED5 0x7A
+#define KTRAP_FRAME_V86_ES 0x7C
+#define KTRAP_FRAME_RESERVED6 0x7E
+#define KTRAP_FRAME_V86_DS 0x80
+#define KTRAP_FRAME_RESERVED7 0x82
+#define KTRAP_FRAME_V86_FS 0x84
+#define KTRAP_FRAME_RESERVED8 0x86
+#define KTRAP_FRAME_V86_GS 0x88
+#define KTRAP_FRAME_RESERVED9 0x8A
+#define KTRAP_FRAME_SIZE 0x8C
-#define KPCR_EXCEPTION_LIST 0x0
-#define KPCR_INITIAL_STACK 0x4
-#define KPCR_STACK_LIMIT 0x8
-#define KPCR_TEB 0x18
-#define KPCR_SELF 0x1C
-#define KPCR_GDT 0x3C
-#define KPCR_TSS 0x40
-#define KPCR_CURRENT_THREAD 0x124
-#define KPCR_NPX_THREAD 0x2F4
+//
+// KUSER_SHARED_DATA Offsets
+//
+#define KERNEL_USER_SHARED_DATA 0x7FFE0000
+#define KUSER_SHARED_PROCESSOR_FEATURES KERNEL_USER_SHARED_DATA + 0x274
+#define KUSER_SHARED_SYSCALL KERNEL_USER_SHARED_DATA + 0x300
+#define KUSER_SHARED_SYSCALL_RET KERNEL_USER_SHARED_DATA + 0x304
+#define PROCESSOR_FEATURE_FXSR KUSER_SHARED_PROCESSOR_FEATURES + 0x4
-/* FPU Save Area Offsets */
-#define FN_CONTROL_WORD 0x0
-#define FN_STATUS_WORD 0x4
-#define FN_TAG_WORD 0x8
-#define FN_DATA_SELECTOR 0x18
-#define FN_CR0_NPX_STATE 0x20C
-#define SIZEOF_FX_SAVE_AREA 528
-/* Trap Frame Offsets */
-#define KTRAP_FRAME_DEBUGEBP 0x0
-#define KTRAP_FRAME_DEBUGEIP 0x4
-#define KTRAP_FRAME_DEBUGARGMARK 0x8
-#define KTRAP_FRAME_DEBUGPOINTER 0xC
-#define KTRAP_FRAME_TEMPCS 0x10
-#define KTRAP_FRAME_TEMPESP 0x14
-#define KTRAP_FRAME_DR0 0x18
-#define KTRAP_FRAME_DR1 0x1C
-#define KTRAP_FRAME_DR2 0x20
-#define KTRAP_FRAME_DR3 0x24
-#define KTRAP_FRAME_DR6 0x28
-#define KTRAP_FRAME_DR7 0x2C
-#define KTRAP_FRAME_GS 0x30
-#define KTRAP_FRAME_RESERVED1 0x32
-#define KTRAP_FRAME_ES 0x34
-#define KTRAP_FRAME_RESERVED2 0x36
-#define KTRAP_FRAME_DS 0x38
-#define KTRAP_FRAME_RESERVED3 0x3A
-#define KTRAP_FRAME_EDX 0x3C
-#define KTRAP_FRAME_ECX 0x40
-#define KTRAP_FRAME_EAX 0x44
-#define KTRAP_FRAME_PREVIOUS_MODE 0x48
-#define KTRAP_FRAME_EXCEPTION_LIST 0x4C
-#define KTRAP_FRAME_FS 0x50
-#define KTRAP_FRAME_RESERVED4 0x52
-#define KTRAP_FRAME_EDI 0x54
-#define KTRAP_FRAME_ESI 0x58
-#define KTRAP_FRAME_EBX 0x5C
-#define KTRAP_FRAME_EBP 0x60
-#define KTRAP_FRAME_ERROR_CODE 0x64
-#define KTRAP_FRAME_EIP 0x68
-#define KTRAP_FRAME_CS 0x6C
-#define KTRAP_FRAME_EFLAGS 0x70
-#define KTRAP_FRAME_ESP 0x74
-#define KTRAP_FRAME_SS 0x78
-#define KTRAP_FRAME_RESERVED5 0x7A
-#define KTRAP_FRAME_V86_ES 0x7C
-#define KTRAP_FRAME_RESERVED6 0x7E
-#define KTRAP_FRAME_V86_DS 0x80
-#define KTRAP_FRAME_RESERVED7 0x82
-#define KTRAP_FRAME_V86_FS 0x84
-#define KTRAP_FRAME_RESERVED8 0x86
-#define KTRAP_FRAME_V86_GS 0x88
-#define KTRAP_FRAME_RESERVED9 0x8A
-#define KTRAP_FRAME_SIZE 0x8C
+//
+// CONTEXT Offsets
+//
+#define CONTEXT_FLAGS 0x0
+#define CONTEXT_DR6 0x14
+#define CONTEXT_FLOAT_SAVE 0x1C
+#define CONTEXT_SEGGS 0x8C
+#define CONTEXT_SEGFS 0x90
+#define CONTEXT_SEGES 0x94
+#define CONTEXT_SEGDS 0x98
+#define CONTEXT_EDI 0x9C
+#define CONTEXT_ESI 0xA0
+#define CONTEXT_EBX 0xA4
+#define CONTEXT_EDX 0xA8
+#define CONTEXT_ECX 0xAC
+#define CONTEXT_EAX 0xB0
+#define CONTEXT_EBP 0xB4
+#define CONTEXT_EIP 0xB8
+#define CONTEXT_SEGCS 0xBC
+#define CONTEXT_EFLAGS 0xC0
+#define CONTEXT_ESP 0xC4
+#define CONTEXT_SEGSS 0xC8
+#define CONTEXT_FLOAT_SAVE_CONTROL_WORD CONTEXT_FLOAT_SAVE + FN_CONTROL_WORD
+#define CONTEXT_FLOAT_SAVE_STATUS_WORD CONTEXT_FLOAT_SAVE + FN_STATUS_WORD
+#define CONTEXT_FLOAT_SAVE_TAG_WORD CONTEXT_FLOAT_SAVE + FN_TAG_WORD
-/* User Shared Data */
-#define KERNEL_USER_SHARED_DATA 0x7FFE0000
-#define KUSER_SHARED_PROCESSOR_FEATURES KERNEL_USER_SHARED_DATA + 0x274
-#define KUSER_SHARED_SYSCALL KERNEL_USER_SHARED_DATA + 0x300
-#define KUSER_SHARED_SYSCALL_RET KERNEL_USER_SHARED_DATA + 0x304
-#define PROCESSOR_FEATURE_FXSR KUSER_SHARED_PROCESSOR_FEATURES + 0x4
+//
+// EXCEPTION_RECORD Offsets
+//
+#define EXCEPTION_RECORD_EXCEPTION_CODE 0x0
+#define EXCEPTION_RECORD_EXCEPTION_FLAGS 0x4
+#define EXCEPTION_RECORD_EXCEPTION_RECORD 0x8
+#define EXCEPTION_RECORD_EXCEPTION_ADDRESS 0xC
+#define EXCEPTION_RECORD_NUMBER_PARAMETERS 0x10
+#define SIZEOF_EXCEPTION_RECORD 0x14
-/* CONTEXT CONSTANTS */
-#define CONTEXT_FLAGS 0x0
-#define CONTEXT_DR6 0x14
-#define CONTEXT_FLOAT_SAVE 0x1C
-#define CONTEXT_SEGGS 0x8C
-#define CONTEXT_SEGFS 0x90
-#define CONTEXT_SEGES 0x94
-#define CONTEXT_SEGDS 0x98
-#define CONTEXT_EDI 0x9C
-#define CONTEXT_ESI 0xA0
-#define CONTEXT_EBX 0xA4
-#define CONTEXT_EDX 0xA8
-#define CONTEXT_ECX 0xAC
-#define CONTEXT_EAX 0xB0
-#define CONTEXT_EBP 0xB4
-#define CONTEXT_EIP 0xB8
-#define CONTEXT_SEGCS 0xBC
-#define CONTEXT_EFLAGS 0xC0
-#define CONTEXT_ESP 0xC4
-#define CONTEXT_SEGSS 0xC8
-#define CONTEXT_FLOAT_SAVE_CONTROL_WORD CONTEXT_FLOAT_SAVE + FN_CONTROL_WORD
-#define CONTEXT_FLOAT_SAVE_STATUS_WORD CONTEXT_FLOAT_SAVE + FN_STATUS_WORD
-#define CONTEXT_FLOAT_SAVE_TAG_WORD CONTEXT_FLOAT_SAVE + FN_TAG_WORD
+//
+// TEB Offsets
+//
+#define TEB_EXCEPTION_LIST 0x0
+#define TEB_STACK_BASE 0x4
+#define TEB_STACK_LIMIT 0x8
+#define TEB_FIBER_DATA 0x10
+#define TEB_PEB 0x30
+#define TEB_EXCEPTION_CODE 0x1A4
+#define TEB_ACTIVATION_CONTEXT_STACK_POINTER 0x1A8
+#define TEB_DEALLOCATION_STACK 0xE0C
+#define TEB_GUARANTEED_STACK_BYTES 0xF78
+#define TEB_FLS_DATA 0xFB4
-/* EXCEPTION_RECORD Constants */
-#define EXCEPTION_RECORD_EXCEPTION_CODE 0x0
-#define EXCEPTION_RECORD_EXCEPTION_FLAGS 0x4
-#define EXCEPTION_RECORD_EXCEPTION_RECORD 0x8
-#define EXCEPTION_RECORD_EXCEPTION_ADDRESS 0xC
-#define EXCEPTION_RECORD_NUMBER_PARAMETERS 0x10
-#define SIZEOF_EXCEPTION_RECORD 0x14
+//
+// PEB Offsets
+//
+#define PEB_KERNEL_CALLBACK_TABLE 0x2C
-/* TEB CONSTANTS */
-#define TEB_EXCEPTION_LIST 0x0
-#define TEB_STACK_BASE 0x4
-#define TEB_STACK_LIMIT 0x8
-#define TEB_FIBER_DATA 0x10
-#define TEB_PEB 0x30
-#define TEB_EXCEPTION_CODE 0x1A4
-#define TEB_ACTIVATION_CONTEXT_STACK_POINTER 0x1A8
-#define TEB_DEALLOCATION_STACK 0xE0C
-#define TEB_GUARANTEED_STACK_BYTES 0xF78
-#define TEB_FLS_DATA 0xFB4
-
-/* PEB CONSTANTS */
-#define PEB_KERNEL_CALLBACK_TABLE 0x2C
-
-/* FIBER CONSTANTS */
-#define FIBER_PARAMETER 0x0
-#define FIBER_EXCEPTION_LIST 0x4
-#define FIBER_STACK_BASE 0x8
-#define FIBER_STACK_LIMIT 0xC
-#define FIBER_DEALLOCATION_STACK 0x10
-#define FIBER_CONTEXT 0x14
-#define FIBER_GUARANTEED_STACK_BYTES 0x2E0
-#define FIBER_FLS_DATA 0x2E4
-#define FIBER_ACTIVATION_CONTEXT_STACK 0x2E8
-#define FIBER_CONTEXT_FLAGS FIBER_CONTEXT + CONTEXT_FLAGS
-#define FIBER_CONTEXT_EAX FIBER_CONTEXT + CONTEXT_EAX
-#define FIBER_CONTEXT_EBX FIBER_CONTEXT + CONTEXT_EBX
-#define FIBER_CONTEXT_ECX FIBER_CONTEXT + CONTEXT_ECX
-#define FIBER_CONTEXT_EDX FIBER_CONTEXT + CONTEXT_EDX
-#define FIBER_CONTEXT_ESI FIBER_CONTEXT + CONTEXT_ESI
-#define FIBER_CONTEXT_EDI FIBER_CONTEXT + CONTEXT_EDI
-#define FIBER_CONTEXT_EBP FIBER_CONTEXT + CONTEXT_EBP
-#define FIBER_CONTEXT_ESP FIBER_CONTEXT + CONTEXT_ESP
-#define FIBER_CONTEXT_DR6 FIBER_CONTEXT + CONTEXT_DR6
-#define FIBER_CONTEXT_FLOAT_SAVE_STATUS_WORD FIBER_CONTEXT + CONTEXT_FLOAT_SAVE_STATUS_WORD
+//
+// FIBER Offsets
+//
+#define FIBER_PARAMETER 0x0
+#define FIBER_EXCEPTION_LIST 0x4
+#define FIBER_STACK_BASE 0x8
+#define FIBER_STACK_LIMIT 0xC
+#define FIBER_DEALLOCATION_STACK 0x10
+#define FIBER_CONTEXT 0x14
+#define FIBER_GUARANTEED_STACK_BYTES 0x2E0
+#define FIBER_FLS_DATA 0x2E4
+#define FIBER_ACTIVATION_CONTEXT_STACK 0x2E8
+#define FIBER_CONTEXT_FLAGS FIBER_CONTEXT + CONTEXT_FLAGS
+#define FIBER_CONTEXT_EAX FIBER_CONTEXT + CONTEXT_EAX
+#define FIBER_CONTEXT_EBX FIBER_CONTEXT + CONTEXT_EBX
+#define FIBER_CONTEXT_ECX FIBER_CONTEXT + CONTEXT_ECX
+#define FIBER_CONTEXT_EDX FIBER_CONTEXT + CONTEXT_EDX
+#define FIBER_CONTEXT_ESI FIBER_CONTEXT + CONTEXT_ESI
+#define FIBER_CONTEXT_EDI FIBER_CONTEXT + CONTEXT_EDI
+#define FIBER_CONTEXT_EBP FIBER_CONTEXT + CONTEXT_EBP
+#define FIBER_CONTEXT_ESP FIBER_CONTEXT + CONTEXT_ESP
+#define FIBER_CONTEXT_DR6 FIBER_CONTEXT + CONTEXT_DR6
+#define FIBER_CONTEXT_FLOAT_SAVE_STATUS_WORD FIBER_CONTEXT + CONTEXT_FLOAT_SAVE_STATUS_WORD
#define FIBER_CONTEXT_FLOAT_SAVE_CONTROL_WORD FIBER_CONTEXT + CONTEXT_FLOAT_SAVE_CONTROL_WORD
#define FIBER_CONTEXT_FLOAT_SAVE_TAG_WORD FIBER_CONTEXT + CONTEXT_FLOAT_SAVE_TAG_WORD
-#endif
+
+#endif // !_ASM_H
diff --git a/reactos/include/ndk/cctypes.h b/reactos/include/ndk/cctypes.h
index 5fc06bd15f0..c2a21bdb1f8 100644
--- a/reactos/include/ndk/cctypes.h
+++ b/reactos/include/ndk/cctypes.h
@@ -1,24 +1,33 @@
-/*
- * PROJECT: ReactOS Native Headers
- * FILE: include/ndk/cctypes.h
- * PURPOSE: Definitions for exported Cache Manager 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:
+
+ cctypes.h
+
+Abstract:
+
+ Type definitions for the Cache Controller.
+
+Author:
+
+ Alex Ionescu (alex.ionescu@reactos.com) 06-Oct-2004
+
+--*/
#ifndef _CCTYPES_H
#define _CCTYPES_H
-/* DEPENDENCIES **************************************************************/
+//
+// Dependencies
+//
-/* EXPORTED DATA *************************************************************/
+//
+// Kernel Exported CcData
+//
extern ULONG NTSYSAPI CcFastReadNotPossible;
extern ULONG NTSYSAPI CcFastReadWait;
-/* ENUMERATIONS **************************************************************/
-
-/* TYPES *********************************************************************/
-
-#endif
+#endif // _CCTYPES_H
diff --git a/reactos/include/ndk/cmtypes.h b/reactos/include/ndk/cmtypes.h
index 8a4a721a72f..2c6cef5ac25 100644
--- a/reactos/include/ndk/cmtypes.h
+++ b/reactos/include/ndk/cmtypes.h
@@ -1,37 +1,124 @@
-/*
- * PROJECT: ReactOS Native Headers
- * FILE: include/ndk/cmtypes.h
- * PURPOSE: Definitions for Config Manager 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:
+
+ cmtypes.h
+
+Abstract:
+
+ Type definitions for the Configuration Manager.
+
+Author:
+
+ Alex Ionescu (alex.ionescu@reactos.com) 06-Oct-2004
+
+--*/
#ifndef _CMTYPES_H
#define _CMTYPES_H
-/* DEPENDENCIES **************************************************************/
+//
+// Dependencies
+//
#include
#include "iotypes.h"
-/* EXPORTED DATA *************************************************************/
-
-/* CONSTANTS *****************************************************************/
#define MAX_BUS_NAME 24
-/* PLUGPLAY_CONTROL_RELATED_DEVICE_DATA.Relation values */
-#define PNP_GET_PARENT_DEVICE 1
-#define PNP_GET_CHILD_DEVICE 2
-#define PNP_GET_SIBLING_DEVICE 3
+//
+// PLUGPLAY_CONTROL_RELATED_DEVICE_DATA.Relations
+//
+#define PNP_GET_PARENT_DEVICE 1
+#define PNP_GET_CHILD_DEVICE 2
+#define PNP_GET_SIBLING_DEVICE 3
-/* PLUGPLAY_CONTROL_STATUS_DATA.Operation values */
-#define PNP_GET_DEVICE_STATUS 0
-#define PNP_SET_DEVICE_STATUS 1
-#define PNP_CLEAR_DEVICE_STATUS 2
+//
+// PLUGPLAY_CONTROL_STATUS_DATA Operations
+//
+#define PNP_GET_DEVICE_STATUS 0
+#define PNP_SET_DEVICE_STATUS 1
+#define PNP_CLEAR_DEVICE_STATUS 2
-/* ENUMERATIONS **************************************************************/
+//
+// Resource Type
+//
+#define CmResourceTypeNull 0
+#define CmResourceTypePort 1
+#define CmResourceTypeInterrupt 2
+#define CmResourceTypeMemory 3
+#define CmResourceTypeDma 4
+#define CmResourceTypeDeviceSpecific 5
+#define CmResourceTypeBusNumber 6
+#define CmResourceTypeMaximum 7
+#define CmResourceTypeNonArbitrated 128
+#define CmResourceTypeConfigData 128
+#define CmResourceTypeDevicePrivate 129
+#define CmResourceTypePcCardConfig 130
+#define CmResourceTypeMfCardConfig 131
#ifdef NTOS_MODE_USER
+
+//
+// Resource Descriptor Share Dispositions
+//
+typedef enum _CM_SHARE_DISPOSITION
+{
+ CmResourceShareUndetermined,
+ CmResourceShareDeviceExclusive,
+ CmResourceShareDriverExclusive,
+ CmResourceShareShared
+} CM_SHARE_DISPOSITION;
+
+#endif
+
+//
+// Port Resource Descriptor Flags
+//
+#define CM_RESOURCE_PORT_MEMORY 0x0000
+#define CM_RESOURCE_PORT_IO 0x0001
+#define CM_RESOURCE_PORT_10_BIT_DECODE 0x0004
+#define CM_RESOURCE_PORT_12_BIT_DECODE 0x0008
+#define CM_RESOURCE_PORT_16_BIT_DECODE 0x0010
+#define CM_RESOURCE_PORT_POSITIVE_DECODE 0x0020
+#define CM_RESOURCE_PORT_PASSIVE_DECODE 0x0040
+#define CM_RESOURCE_PORT_WINDOW_DECODE 0x0080
+
+//
+// Interrupt Resource Descriptor Flags
+//
+#define CM_RESOURCE_INTERRUPT_LEVEL_SENSITIVE 0x0000
+#define CM_RESOURCE_INTERRUPT_LATCHED 0x0001
+
+//
+// Memory Resource Descriptor Flags
+//
+#define CM_RESOURCE_MEMORY_READ_WRITE 0x0000
+#define CM_RESOURCE_MEMORY_READ_ONLY 0x0001
+#define CM_RESOURCE_MEMORY_WRITE_ONLY 0x0002
+#define CM_RESOURCE_MEMORY_PREFETCHABLE 0x0004
+#define CM_RESOURCE_MEMORY_COMBINEDWRITE 0x0008
+#define CM_RESOURCE_MEMORY_24 0x0010
+#define CM_RESOURCE_MEMORY_CACHEABLE 0x0020
+
+//
+// DMA Resource Descriptor Flags
+//
+#define CM_RESOURCE_DMA_8 0x0000
+#define CM_RESOURCE_DMA_16 0x0001
+#define CM_RESOURCE_DMA_32 0x0002
+#define CM_RESOURCE_DMA_8_AND_16 0x0004
+#define CM_RESOURCE_DMA_BUS_MASTER 0x0008
+#define CM_RESOURCE_DMA_TYPE_A 0x0010
+#define CM_RESOURCE_DMA_TYPE_B 0x0020
+#define CM_RESOURCE_DMA_TYPE_F 0x0040
+
+#ifdef NTOS_MODE_USER
+
+//
+// Information Classes for NtQueryKey
+//
typedef enum _KEY_INFORMATION_CLASS
{
KeyBasicInformation,
@@ -57,8 +144,12 @@ typedef enum _KEY_SET_INFORMATION_CLASS
KeyUserFlagsInformation,
MaxKeySetInfoClass
} KEY_SET_INFORMATION_CLASS;
+
#endif
+//
+// Plag and Play Classes
+//
typedef enum _PLUGPLAY_CONTROL_CLASS
{
PlugPlayControlUserResponse = 0x07,
@@ -76,12 +167,18 @@ typedef enum _PLUGPLAY_BUS_CLASS
MaxPlugPlayBusClass
} PLUGPLAY_BUS_CLASS, *PPLUGPLAY_BUS_CLASS;
+//
+// Plag and Play Bus Types
+//
typedef enum _PLUGPLAY_VIRTUAL_BUS_TYPE
{
Root,
MaxPlugPlayVirtualBusType
} PLUGPLAY_VIRTUAL_BUS_TYPE, *PPLUGPLAY_VIRTUAL_BUS_TYPE;
+//
+// Plag and Play Event Categories
+//
typedef enum _PLUGPLAY_EVENT_CATEGORY
{
HardwareProfileChangeEvent,
@@ -95,9 +192,12 @@ typedef enum _PLUGPLAY_EVENT_CATEGORY
BlockedDriverEvent,
MaxPlugEventCategory
} PLUGPLAY_EVENT_CATEGORY;
-/* TYPES *********************************************************************/
#ifdef NTOS_MODE_USER
+
+//
+// Information Structures for NtQueryKeyInformation
+//
typedef struct _KEY_WRITE_TIME_INFORMATION
{
LARGE_INTEGER LastWriteTime;
@@ -177,6 +277,9 @@ typedef struct _KEY_BASIC_INFORMATION
#endif
+//
+// Plug and Play Event Block
+//
typedef struct _PLUGPLAY_EVENT_BLOCK
{
GUID EventGuid;
@@ -226,7 +329,11 @@ typedef struct _PLUGPLAY_EVENT_BLOCK
};
} PLUGPLAY_EVENT_BLOCK, *PPLUGPLAY_EVENT_BLOCK;
-/* Class 0x0A */
+//
+// Plug and Play Control Classes
+//
+
+//Class 0x0A
typedef struct _PLUGPLAY_CONTROL_PROPERTY_DATA
{
UNICODE_STRING DeviceInstance;
@@ -235,36 +342,39 @@ typedef struct _PLUGPLAY_CONTROL_PROPERTY_DATA
ULONG BufferSize;
} PLUGPLAY_CONTROL_PROPERTY_DATA, *PPLUGPLAY_CONTROL_PROPERTY_DATA;
-/* Class 0x0C */
+// Class 0x0C
typedef struct _PLUGPLAY_CONTROL_RELATED_DEVICE_DATA
{
UNICODE_STRING TargetDeviceInstance;
- ULONG Relation; /* 1: Parent 2: Child 3: Sibling */
+ ULONG Relation;
UNICODE_STRING RelatedDeviceInstance;
} PLUGPLAY_CONTROL_RELATED_DEVICE_DATA, *PPLUGPLAY_CONTROL_RELATED_DEVICE_DATA;
-/* Class 0x0E */
+// Class 0x0E
typedef struct _PLUGPLAY_CONTOL_STATUS_DATA
{
UNICODE_STRING DeviceInstance;
- ULONG Operation; /* 0: Get 1: Set 2: Clear */
- ULONG DeviceStatus; /* DN_ see cfg.h */
- ULONG DeviceProblem; /* CM_PROB_ see cfg.h */
+ ULONG Operation;
+ ULONG DeviceStatus;
+ ULONG DeviceProblem;
} PLUGPLAY_CONTROL_STATUS_DATA, *PPLUGPLAY_CONTROL_STATUS_DATA;
-/* Class 0x0F */
+// Class 0x0F
typedef struct _PLUGPLAY_CONTROL_DEPTH_DATA
{
UNICODE_STRING DeviceInstance;
ULONG Depth;
} PLUGPLAY_CONTROL_DEPTH_DATA, *PPLUGPLAY_CONTROL_DEPTH_DATA;
-/* Class 0x14 */
+// Class 0x14
typedef struct _PLUGPLAY_CONTROL_RESET_DEVICE_DATA
{
UNICODE_STRING DeviceInstance;
} PLUGPLAY_CONTROL_RESET_DEVICE_DATA, *PPLUGPLAY_CONTROL_RESET_DEVICE_DATA;
+//
+// Plug and Play Bus Type Definition
+//
typedef struct _PLUGPLAY_BUS_TYPE
{
PLUGPLAY_BUS_CLASS BusClass;
@@ -275,6 +385,9 @@ typedef struct _PLUGPLAY_BUS_TYPE
};
} PLUGPLAY_BUS_TYPE, *PPLUGPLAY_BUS_TYPE;
+//
+// Plug and Play Bus Instance Definition
+//
typedef struct _PLUGPLAY_BUS_INSTANCE
{
PLUGPLAY_BUS_TYPE BusType;
@@ -284,149 +397,110 @@ typedef struct _PLUGPLAY_BUS_INSTANCE
#ifdef NTOS_MODE_USER
+//
+// Partial Resource Descriptor and List for Hardware
+//
#include
-typedef struct _CM_PARTIAL_RESOURCE_DESCRIPTOR {
- UCHAR Type;
- UCHAR ShareDisposition;
- USHORT Flags;
- union {
- struct {
- PHYSICAL_ADDRESS Start;
- ULONG Length;
- } Generic;
- struct {
- PHYSICAL_ADDRESS Start;
- ULONG Length;
- } Port;
- struct {
- ULONG Level;
- ULONG Vector;
- ULONG Affinity;
- } Interrupt;
- struct {
- PHYSICAL_ADDRESS Start;
- ULONG Length;
- } Memory;
- struct {
- ULONG Channel;
- ULONG Port;
- ULONG Reserved1;
- } Dma;
- struct {
- ULONG Data[3];
- } DevicePrivate;
- struct {
- ULONG Start;
- ULONG Length;
- ULONG Reserved;
- } BusNumber;
- struct {
- ULONG DataSize;
- ULONG Reserved1;
- ULONG Reserved2;
- } DeviceSpecificData;
- } u;
+typedef struct _CM_PARTIAL_RESOURCE_DESCRIPTOR
+{
+ UCHAR Type;
+ UCHAR ShareDisposition;
+ USHORT Flags;
+ union
+ {
+ struct
+ {
+ PHYSICAL_ADDRESS Start;
+ ULONG Length;
+ } Generic;
+ struct
+ {
+ PHYSICAL_ADDRESS Start;
+ ULONG Length;
+ } Port;
+ struct
+ {
+ ULONG Level;
+ ULONG Vector;
+ ULONG Affinity;
+ } Interrupt;
+ struct
+ {
+ PHYSICAL_ADDRESS Start;
+ ULONG Length;
+ } Memory;
+ struct
+ {
+ ULONG Channel;
+ ULONG Port;
+ ULONG Reserved1;
+ } Dma;
+ struct
+ {
+ ULONG Data[3];
+ } DevicePrivate;
+ struct
+ {
+ ULONG Start;
+ ULONG Length;
+ ULONG Reserved;
+ } BusNumber;
+ struct
+ {
+ ULONG DataSize;
+ ULONG Reserved1;
+ ULONG Reserved2;
+ } DeviceSpecificData;
+ } u;
} CM_PARTIAL_RESOURCE_DESCRIPTOR, *PCM_PARTIAL_RESOURCE_DESCRIPTOR;
-/* CM_PARTIAL_RESOURCE_DESCRIPTOR.Type */
-
-#define CmResourceTypeNull 0
-#define CmResourceTypePort 1
-#define CmResourceTypeInterrupt 2
-#define CmResourceTypeMemory 3
-#define CmResourceTypeDma 4
-#define CmResourceTypeDeviceSpecific 5
-#define CmResourceTypeBusNumber 6
-#define CmResourceTypeMaximum 7
-#define CmResourceTypeNonArbitrated 128
-#define CmResourceTypeConfigData 128
-#define CmResourceTypeDevicePrivate 129
-#define CmResourceTypePcCardConfig 130
-#define CmResourceTypeMfCardConfig 131
-
-/* CM_PARTIAL_RESOURCE_DESCRIPTOR.ShareDisposition */
-
-typedef enum _CM_SHARE_DISPOSITION {
- CmResourceShareUndetermined,
- CmResourceShareDeviceExclusive,
- CmResourceShareDriverExclusive,
- CmResourceShareShared
-} CM_SHARE_DISPOSITION;
-
-/* CM_PARTIAL_RESOURCE_DESCRIPTOR.Flags if Type = CmResourceTypePort */
-
-#define CM_RESOURCE_PORT_MEMORY 0x0000
-#define CM_RESOURCE_PORT_IO 0x0001
-#define CM_RESOURCE_PORT_10_BIT_DECODE 0x0004
-#define CM_RESOURCE_PORT_12_BIT_DECODE 0x0008
-#define CM_RESOURCE_PORT_16_BIT_DECODE 0x0010
-#define CM_RESOURCE_PORT_POSITIVE_DECODE 0x0020
-#define CM_RESOURCE_PORT_PASSIVE_DECODE 0x0040
-#define CM_RESOURCE_PORT_WINDOW_DECODE 0x0080
-
-/* CM_PARTIAL_RESOURCE_DESCRIPTOR.Flags if Type = CmResourceTypeInterrupt */
-
-#define CM_RESOURCE_INTERRUPT_LEVEL_SENSITIVE 0x0000
-#define CM_RESOURCE_INTERRUPT_LATCHED 0x0001
-
-/* CM_PARTIAL_RESOURCE_DESCRIPTOR.Flags if Type = CmResourceTypeMemory */
-
-#define CM_RESOURCE_MEMORY_READ_WRITE 0x0000
-#define CM_RESOURCE_MEMORY_READ_ONLY 0x0001
-#define CM_RESOURCE_MEMORY_WRITE_ONLY 0x0002
-#define CM_RESOURCE_MEMORY_PREFETCHABLE 0x0004
-#define CM_RESOURCE_MEMORY_COMBINEDWRITE 0x0008
-#define CM_RESOURCE_MEMORY_24 0x0010
-#define CM_RESOURCE_MEMORY_CACHEABLE 0x0020
-
-/* CM_PARTIAL_RESOURCE_DESCRIPTOR.Flags if Type = CmResourceTypeDma */
-
-#define CM_RESOURCE_DMA_8 0x0000
-#define CM_RESOURCE_DMA_16 0x0001
-#define CM_RESOURCE_DMA_32 0x0002
-#define CM_RESOURCE_DMA_8_AND_16 0x0004
-#define CM_RESOURCE_DMA_BUS_MASTER 0x0008
-#define CM_RESOURCE_DMA_TYPE_A 0x0010
-#define CM_RESOURCE_DMA_TYPE_B 0x0020
-#define CM_RESOURCE_DMA_TYPE_F 0x0040
-
-typedef struct _CM_PARTIAL_RESOURCE_LIST {
- USHORT Version;
- USHORT Revision;
- ULONG Count;
- CM_PARTIAL_RESOURCE_DESCRIPTOR PartialDescriptors[1];
+typedef struct _CM_PARTIAL_RESOURCE_LIST
+{
+ USHORT Version;
+ USHORT Revision;
+ ULONG Count;
+ CM_PARTIAL_RESOURCE_DESCRIPTOR PartialDescriptors[1];
} CM_PARTIAL_RESOURCE_LIST, *PCM_PARTIAL_RESOURCE_LIST;
-typedef struct _CM_FULL_RESOURCE_DESCRIPTOR {
- INTERFACE_TYPE InterfaceType;
- ULONG BusNumber;
- CM_PARTIAL_RESOURCE_LIST PartialResourceList;
+//
+// Full Resource Descriptor and List for Hardware
+//
+typedef struct _CM_FULL_RESOURCE_DESCRIPTOR
+{
+ INTERFACE_TYPE InterfaceType;
+ ULONG BusNumber;
+ CM_PARTIAL_RESOURCE_LIST PartialResourceList;
} CM_FULL_RESOURCE_DESCRIPTOR, *PCM_FULL_RESOURCE_DESCRIPTOR;
-typedef struct _CM_RESOURCE_LIST {
- ULONG Count;
- CM_FULL_RESOURCE_DESCRIPTOR List[1];
+typedef struct _CM_RESOURCE_LIST
+{
+ ULONG Count;
+ CM_FULL_RESOURCE_DESCRIPTOR List[1];
} CM_RESOURCE_LIST, *PCM_RESOURCE_LIST;
-typedef struct _CM_INT13_DRIVE_PARAMETER {
- USHORT DriveSelect;
- ULONG MaxCylinders;
- USHORT SectorsPerTrack;
- USHORT MaxHeads;
- USHORT NumberDrives;
+//
+// Disk/INT13 Structures
+//
+typedef struct _CM_INT13_DRIVE_PARAMETER
+{
+ USHORT DriveSelect;
+ ULONG MaxCylinders;
+ USHORT SectorsPerTrack;
+ USHORT MaxHeads;
+ USHORT NumberDrives;
} CM_INT13_DRIVE_PARAMETER, *PCM_INT13_DRIVE_PARAMETER;
typedef struct _CM_DISK_GEOMETRY_DEVICE_DATA
{
- ULONG BytesPerSector;
- ULONG NumberOfCylinders;
- ULONG SectorsPerTrack;
- ULONG NumberOfHeads;
+ ULONG BytesPerSector;
+ ULONG NumberOfCylinders;
+ ULONG SectorsPerTrack;
+ ULONG NumberOfHeads;
} CM_DISK_GEOMETRY_DEVICE_DATA, *PCM_DISK_GEOMETRY_DEVICE_DATA;
#include
-#endif
+#endif // _!NTOS_MODE_USER
-#endif
+#endif // _CMTYPES_H
diff --git a/reactos/include/ndk/dbgktypes.h b/reactos/include/ndk/dbgktypes.h
index e3d696a7ad7..07287697073 100644
--- a/reactos/include/ndk/dbgktypes.h
+++ b/reactos/include/ndk/dbgktypes.h
@@ -1,41 +1,57 @@
-/*
- * 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
- */
+/*++ NDK Version: 0095
+
+Copyright (c) Alex Ionescu. All rights reserved.
+
+Header Name:
+
+ dbgktypes.h
+
+Abstract:
+
+ Type definitions for the Debug Subsystem.
+
+Author:
+
+ Alex Ionescu (alex.ionescu@reactos.com) 06-Oct-2004
+
+--*/
#ifndef _DBGKTYPES_H
#define _DBGKTYPES_H
-/* DEPENDENCIES **************************************************************/
+//
+// 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 **************************************************************/
+//
+// Debug Object Access Masks
+//
+#define DEBUG_OBJECT_WAIT_STATE_CHANGE 0x0001
+#define DEBUG_OBJECT_ADD_REMOVE_PROCESS 0x0002
+#define DEBUG_OBJECT_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x0F)
+//
+// Debug Object Information Classes for NtQueryDebugObject
+//
typedef enum _DEBUGOBJECTINFOCLASS
{
DebugObjectUnusedInformation,
DebugObjectKillProcessOnExitInformation
} DEBUGOBJECTINFOCLASS, *PDEBUGOBJECTINFOCLASS;
-/* TYPES *********************************************************************/
-
+//
+// Debug Object Information Structures
+//
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;
+} DEBUG_OBJECT_KILL_PROCESS_ON_EXIT_INFORMATION, *PDEBUG_OBJECT_KILL_PROCESS_ON_EXIT_INFORMATION;
#ifndef NTOS_MODE_USER
+
+//
+// Debug Object
+//
typedef struct _DBGK_DEBUG_OBJECT
{
KEVENT Event;
@@ -51,8 +67,12 @@ typedef struct _DBGK_DEBUG_OBJECT
};
};
} DBGK_DEBUG_OBJECT, *PDBGK_DEBUG_OBJECT;
+
#endif
+//
+// Debug States
+//
typedef enum _DBG_STATE
{
DbgIdle,
@@ -68,6 +88,9 @@ typedef enum _DBG_STATE
DbgUnloadDllStateChange
} DBG_STATE, *PDBG_STATE;
+//
+// Debug Message Structures
+//
typedef struct _DBGKM_EXCEPTION
{
EXCEPTION_RECORD ExceptionRecord;
@@ -113,6 +136,9 @@ typedef struct _DBGKM_UNLOAD_DLL
PVOID BaseAddress;
} DBGKM_UNLOAD_DLL, *PDBGKM_UNLOAD_DLL;
+//
+// User-Mode Debug State Change Structure
+//
typedef struct _DBGUI_WAIT_STATE_CHANGE
{
DBG_STATE NewState;
@@ -138,6 +164,9 @@ typedef struct _DBGUI_WAIT_STATE_CHANGE
} StateInfo;
} DBGUI_WAIT_STATE_CHANGE, *PDBGUI_WAIT_STATE_CHANGE;
+//
+// LPC Debug Message
+//
typedef struct _DBGKM_MSG
{
PORT_MESSAGE h;
@@ -145,12 +174,12 @@ typedef struct _DBGKM_MSG
ULONG Status;
union
{
- DBGKM_EXCEPTION Exception;
+ DBGKM_EXCEPTION Exception;
DBGKM_CREATE_THREAD CreateThread;
DBGKM_CREATE_PROCESS CreateProcess;
- DBGKM_EXIT_THREAD ExitThread;
+ DBGKM_EXIT_THREAD ExitThread;
DBGKM_EXIT_PROCESS ExitProcess;
- DBGKM_LOAD_DLL LoadDll;
+ DBGKM_LOAD_DLL LoadDll;
DBGKM_UNLOAD_DLL UnloadDll;
};
} DBGKM_MSG, *PDBGKM_MSG;
diff --git a/reactos/include/ndk/exfuncs.h b/reactos/include/ndk/exfuncs.h
index 7aa43719294..5f9dc11d914 100644
--- a/reactos/include/ndk/exfuncs.h
+++ b/reactos/include/ndk/exfuncs.h
@@ -1,20 +1,31 @@
-/*
- * PROJECT: ReactOS Native Headers
- * FILE: include/ndk/exfuncs.h
- * PURPOSE: Prototypes for exported Executive Functions 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:
+
+ exfuncs.h
+
+Abstract:
+
+ Function definitions for the Executive.
+
+Author:
+
+ Alex Ionescu (alex.ionescu@reactos.com) 06-Oct-2004
+
+--*/
+
#ifndef _EXFUNCS_H
#define _EXFUNCS_H
-/* DEPENDENCIES **************************************************************/
-
-/* FUNCTION TYPES ************************************************************/
-
-/* PROTOTYPES ****************************************************************/
+//
+// Dependencies
+//
+//
+// Fast Mutex functions
+//
VOID
FASTCALL
ExEnterCriticalRegionAndAcquireFastMutexUnsafe(PFAST_MUTEX FastMutex);
diff --git a/reactos/include/ndk/extypes.h b/reactos/include/ndk/extypes.h
index 460af7811a6..ff8a150e17c 100644
--- a/reactos/include/ndk/extypes.h
+++ b/reactos/include/ndk/extypes.h
@@ -1,16 +1,27 @@
-/*
- * PROJECT: ReactOS Native Headers
- * FILE: include/ndk/extypes.h
- * PURPOSE: Definitions for exported Executive Functions 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:
+
+ extypes.h
+
+Abstract:
+
+ Type definitions for the Executive.
+
+Author:
+
+ Alex Ionescu (alex.ionescu@reactos.com) 06-Oct-2004
+
+--*/
#ifndef _EXTYPES_H
#define _EXTYPES_H
-/* DEPENDENCIES **************************************************************/
+//
+// Dependencies
+//
#include
#if defined(_MSC_VER) && !defined(NTOS_MODE_USER)
#include
@@ -20,38 +31,71 @@
#include "pstypes.h"
#include "potypes.h"
-/* EXPORTED DATA *************************************************************/
+//
+// Atom and Language IDs
+//
+typedef USHORT LANGID, *PLANGID;
+typedef USHORT RTL_ATOM, *PRTL_ATOM;
+
#ifndef NTOS_MODE_USER
+
+//
+// Kernel Exported Object Types
+//
extern POBJECT_TYPE NTSYSAPI ExIoCompletionType;
extern POBJECT_TYPE NTSYSAPI ExMutantObjectType;
extern POBJECT_TYPE NTSYSAPI ExTimerType;
+
+//
+// Invalid Handle Value Constant
+//
+#define INVALID_HANDLE_VALUE (HANDLE)-1
+
#endif
-/* CONSTANTS *****************************************************************/
-#ifndef NTOS_MODE_USER
-#define INVALID_HANDLE_VALUE (HANDLE)-1
-#endif
+//
+// Increments
+//
+#define MUTANT_INCREMENT 1
-/* Increments */
-#define MUTANT_INCREMENT 1
+//
+// Callback Object Access Mask
+//
+#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)
-/* Executive 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)
-#define EVENT_READ_ACCESS 1
-#define EVENT_WRITE_ACCESS 2
-#define PORT_ALL_ACCESS 0x1
-#define EVENT_PAIR_ALL_ACCESS 0x1F0000L
+//
+// Event Object Access Masks
+//
#ifdef NTOS_MODE_USER
-#define EVENT_QUERY_STATE 0x0001
-#define SEMAPHORE_QUERY_STATE 0x0001
+#define EVENT_QUERY_STATE 0x0001
+
+//
+// Semaphore Object Acess Masks
+//
+#define SEMAPHORE_QUERY_STATE 0x0001
#endif
-#define MAXIMUM_HARDERROR_PARAMETERS 4
+//
+// Port Object Access Masks (FIXME: lpctypes.h?)
+//
+#define PORT_ALL_ACCESS 0x1
-/* ENUMERATIONS **************************************************************/
+//
+// Event Pair Access Masks
+//
+#define EVENT_PAIR_ALL_ACCESS 0x1F0000L
+
+//
+// Maximum Parameters for NtRaiseHardError
+//
+#define MAXIMUM_HARDERROR_PARAMETERS 4
+
+//
+// Shutdown types for NtShutdownSystem
+//
typedef enum _SHUTDOWN_ACTION
{
ShutdownNoReboot,
@@ -59,6 +103,9 @@ typedef enum _SHUTDOWN_ACTION
ShutdownPowerOff
} SHUTDOWN_ACTION;
+//
+// Responses for NtRaiseHardError
+//
typedef enum _HARDERROR_RESPONSE_OPTION
{
OptionAbortRetryIgnore,
@@ -83,13 +130,16 @@ typedef enum _HARDERROR_RESPONSE
ResponseYes
} HARDERROR_RESPONSE, *PHARDERROR_RESPONSE;
+//
+// System Information Classes for NtQuerySystemInformation
+//
typedef enum _SYSTEM_INFORMATION_CLASS
{
SystemBasicInformation,
SystemProcessorInformation,
SystemPerformanceInformation,
SystemTimeOfDayInformation,
- SystemPathInformation, /* OBSOLETE: USE KUSER_SHARED_DATA */
+ SystemPathInformation, /// Obsolete: Use KUSER_SHARED_DATA
SystemProcessInformation,
SystemCallCountInformation,
SystemDeviceInformation,
@@ -127,7 +177,7 @@ typedef enum _SYSTEM_INFORMATION_CLASS
SystemPrioritySeperation,
SystemPlugPlayBusInformation,
SystemDockInformation,
- _SystemPowerInformation, /* FIXME */
+ _SystemPowerInformation, // FIXME
SystemProcessorSpeedInformation,
SystemCurrentTimeZoneInformation,
SystemLookasideInformation,
@@ -142,38 +192,52 @@ typedef enum _SYSTEM_INFORMATION_CLASS
SystemInformationClassMax
} SYSTEM_INFORMATION_CLASS;
+//
+// System Information Classes for NtQueryMutant
+//
typedef enum _MUTANT_INFORMATION_CLASS
{
MutantBasicInformation
} MUTANT_INFORMATION_CLASS;
+//
+// System Information Classes for NtQueryAtom
+//
typedef enum _ATOM_INFORMATION_CLASS
{
AtomBasicInformation,
AtomTableInformation,
} ATOM_INFORMATION_CLASS;
+//
+// System Information Classes for NtQueryTimer
+//
typedef enum _TIMER_INFORMATION_CLASS
{
TimerBasicInformation
} TIMER_INFORMATION_CLASS;
+//
+// System Information Classes for NtQuerySemaphore
+//
typedef enum _SEMAPHORE_INFORMATION_CLASS
{
SemaphoreBasicInformation
} SEMAPHORE_INFORMATION_CLASS;
+//
+// System Information Classes for NtQueryEvent
+//
typedef enum _EVENT_INFORMATION_CLASS
{
EventBasicInformation
} EVENT_INFORMATION_CLASS;
-/* TYPES *********************************************************************/
-
-typedef USHORT LANGID, *PLANGID;
-typedef USHORT RTL_ATOM, *PRTL_ATOM;
-
#ifndef NTOS_MODE_USER
+
+//
+// Executive Work Queue Structures
+//
typedef struct _EX_QUEUE_WORKER_INFO
{
ULONG QueueDisabled:1;
@@ -192,6 +256,9 @@ typedef struct _EX_WORK_QUEUE
EX_QUEUE_WORKER_INFO Info;
} EX_WORK_QUEUE, *PEX_WORK_QUEUE;
+//
+// Executive Fast Reference Structure
+//
typedef struct _EX_FAST_REF
{
union
@@ -202,17 +269,18 @@ typedef struct _EX_FAST_REF
};
} EX_FAST_REF, *PEX_FAST_REF;
-typedef struct _HANDLE_TABLE_ENTRY_INFO
-{
- ULONG AuditMask;
-} HANDLE_TABLE_ENTRY_INFO, *PHANDLE_TABLE_ENTRY_INFO;
-
+//
+// FIXME
+//
typedef struct _RUNDOWN_DESCRIPTOR
{
ULONG_PTR References;
KEVENT RundownEvent;
} RUNDOWN_DESCRIPTOR, *PRUNDOWN_DESCRIPTOR;
+//
+// Callback Object
+//
typedef struct _CALLBACK_OBJECT
{
ULONG Name;
@@ -221,6 +289,14 @@ typedef struct _CALLBACK_OBJECT
ULONG AllowMultipleCallbacks;
} CALLBACK_OBJECT , *PCALLBACK_OBJECT;
+//
+// Handle Table Structures
+//
+typedef struct _HANDLE_TABLE_ENTRY_INFO
+{
+ ULONG AuditMask;
+} HANDLE_TABLE_ENTRY_INFO, *PHANDLE_TABLE_ENTRY_INFO;
+
typedef struct _HANDLE_TABLE_ENTRY
{
union
@@ -254,6 +330,9 @@ typedef struct _HANDLE_TABLE
#endif
+//
+// Information Structures for NtQueryMutant
+//
typedef struct _MUTANT_BASIC_INFORMATION
{
LONG CurrentCount;
@@ -261,6 +340,9 @@ typedef struct _MUTANT_BASIC_INFORMATION
BOOLEAN AbandonedState;
} MUTANT_BASIC_INFORMATION, *PMUTANT_BASIC_INFORMATION;
+//
+// Information Structures for NtQueryAtom
+//
typedef struct _ATOM_BASIC_INFORMATION
{
USHORT UsageCount;
@@ -275,25 +357,36 @@ typedef struct _ATOM_TABLE_INFORMATION
USHORT Atoms[1];
} ATOM_TABLE_INFORMATION, *PATOM_TABLE_INFORMATION;
+//
+// Information Structures for NtQueryTimer
+//
typedef struct _TIMER_BASIC_INFORMATION
{
LARGE_INTEGER TimeRemaining;
BOOLEAN SignalState;
} TIMER_BASIC_INFORMATION, *PTIMER_BASIC_INFORMATION;
+//
+// Information Structures for NtQuerySemaphore
+//
typedef struct _SEMAPHORE_BASIC_INFORMATION
{
LONG CurrentCount;
LONG MaximumCount;
} SEMAPHORE_BASIC_INFORMATION, *PSEMAPHORE_BASIC_INFORMATION;
+//
+// Information Structures for NtQueryEvent
+//
typedef struct _EVENT_BASIC_INFORMATION
{
EVENT_TYPE EventType;
LONG EventState;
} EVENT_BASIC_INFORMATION, *PEVENT_BASIC_INFORMATION;
-/* Class 0 */
+//
+// Information Structures for NtQuerySystemInformation
+//
typedef struct _SYSTEM_BASIC_INFORMATION
{
ULONG Reserved;
@@ -309,7 +402,7 @@ typedef struct _SYSTEM_BASIC_INFORMATION
CCHAR NumberOfProcessors;
} SYSTEM_BASIC_INFORMATION, *PSYSTEM_BASIC_INFORMATION;
-/* Class 1 */
+// Class 1
typedef struct _SYSTEM_PROCESSOR_INFORMATION
{
USHORT ProcessorArchitecture;
@@ -319,7 +412,7 @@ typedef struct _SYSTEM_PROCESSOR_INFORMATION
ULONG ProcessorFeatureBits;
} SYSTEM_PROCESSOR_INFORMATION, *PSYSTEM_PROCESSOR_INFORMATION;
-/* Class 2 */
+// Class 2
typedef struct _SYSTEM_PERFORMANCE_INFORMATION
{
LARGE_INTEGER IdleProcessTime;
@@ -398,7 +491,7 @@ typedef struct _SYSTEM_PERFORMANCE_INFORMATION
ULONG SystemCalls;
} SYSTEM_PERFORMANCE_INFORMATION, *PSYSTEM_PERFORMANCE_INFORMATION;
-/* Class 3 */
+// Class 3
typedef struct _SYSTEM_TIMEOFDAY_INFORMATION
{
LARGE_INTEGER BootTime;
@@ -408,10 +501,10 @@ typedef struct _SYSTEM_TIMEOFDAY_INFORMATION
ULONG Reserved;
} SYSTEM_TIMEOFDAY_INFORMATION, *PSYSTEM_TIMEOFDAY_INFORMATION;
-/* Class 4 */
-/* This class is obsoleted, please use KUSER_SHARED_DATA instead */
+// Class 4
+// This class is obsolete, please use KUSER_SHARED_DATA instead
-/* Class 5 */
+// Class 5
typedef struct _SYSTEM_THREAD_INFORMATION
{
LARGE_INTEGER KernelTime;
@@ -445,10 +538,10 @@ typedef struct _SYSTEM_PROCESS_INFORMATION
ULONG SessionId;
ULONG PageDirectoryFrame;
- /*
- * This part corresponds to VM_COUNTERS_EX.
- * NOTE: *NOT* THE SAME AS VM_COUNTERS!
- */
+ //
+ // This part corresponds to VM_COUNTERS_EX.
+ // NOTE: *NOT* THE SAME AS VM_COUNTERS!
+ //
ULONG PeakVirtualSize;
ULONG VirtualSize;
ULONG PageFaultCount;
@@ -462,7 +555,9 @@ typedef struct _SYSTEM_PROCESS_INFORMATION
ULONG PeakPagefileUsage;
ULONG PrivateUsage;
- /* This part corresponds to IO_COUNTERS */
+ //
+ // This part corresponds to IO_COUNTERS
+ //
LARGE_INTEGER ReadOperationCount;
LARGE_INTEGER WriteOperationCount;
LARGE_INTEGER OtherOperationCount;
@@ -470,18 +565,17 @@ typedef struct _SYSTEM_PROCESS_INFORMATION
LARGE_INTEGER WriteTransferCount;
LARGE_INTEGER OtherTransferCount;
- /* Finally, the array of Threads */
SYSTEM_THREAD_INFORMATION TH[1];
} SYSTEM_PROCESS_INFORMATION, *PSYSTEM_PROCESS_INFORMATION;
-/* Class 6 */
+// Class 6
typedef struct _SYSTEM_CALL_COUNT_INFORMATION
{
ULONG Length;
ULONG NumberOfTables;
} SYSTEM_CALL_COUNT_INFORMATION, *PSYSTEM_CALL_COUNT_INFORMATION;
-/* Class 7 */
+// Class 7
typedef struct _SYSTEM_DEVICE_INFORMATION
{
ULONG NumberOfDisks;
@@ -492,7 +586,7 @@ typedef struct _SYSTEM_DEVICE_INFORMATION
ULONG NumberOfParallelPorts;
} SYSTEM_DEVICE_INFORMATION, *PSYSTEM_DEVICE_INFORMATION;
-/* Class 8 */
+// Class 8
typedef struct _SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION
{
LARGE_INTEGER IdleTime;
@@ -503,13 +597,13 @@ typedef struct _SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION
ULONG InterruptCount;
} SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION, *PSYSTEM_PROCESSOR_PERFORMANCE_INFORMATION;
-/* Class 9 */
+// Class 9
typedef struct _SYSTEM_FLAGS_INFORMATION
{
ULONG Flags;
} SYSTEM_FLAGS_INFORMATION, *PSYSTEM_FLAGS_INFORMATION;
-/* Class 10 */
+// Class 10
typedef struct _SYSTEM_CALL_TIME_INFORMATION
{
ULONG Length;
@@ -517,7 +611,7 @@ typedef struct _SYSTEM_CALL_TIME_INFORMATION
LARGE_INTEGER TimeOfCalls[1];
} SYSTEM_CALL_TIME_INFORMATION, *PSYSTEM_CALL_TIME_INFORMATION;
-/* Class 11 */
+// Class 11
typedef struct _SYSTEM_MODULE_INFORMATION_ENTRY
{
ULONG Unknown1;
@@ -537,7 +631,7 @@ typedef struct _SYSTEM_MODULE_INFORMATION
SYSTEM_MODULE_INFORMATION_ENTRY Module[1];
} SYSTEM_MODULE_INFORMATION, *PSYSTEM_MODULE_INFORMATION;
-/* Class 12 */
+// Class 12
typedef struct _SYSTEM_RESOURCE_LOCK_ENTRY
{
ULONG ResourceAddress;
@@ -556,22 +650,20 @@ typedef struct _SYSTEM_RESOURCE_LOCK_INFO
SYSTEM_RESOURCE_LOCK_ENTRY Lock[1];
} SYSTEM_RESOURCE_LOCK_INFO, *PSYSTEM_RESOURCE_LOCK_INFO;
-/* Class 13 */
+// FIXME: Class 13
typedef struct _SYSTEM_BACKTRACE_INFORMATION_ENTRY
{
ULONG Dummy;
- /* FIXME */
} SYSTEM_BACKTRACE_INFORMATION_ENTRY, *PSYSTEM_BACKTRACE_INFORMATION_ENTRY;
typedef struct _SYSTEM_BACKTRACE_INFORMATION
{
- /* FIXME */
ULONG Unknown[4];
ULONG Count;
SYSTEM_BACKTRACE_INFORMATION_ENTRY Trace[1];
} SYSTEM_BACKTRACE_INFORMATION, *PSYSTEM_BACKTRACE_INFORMATION;
-/* Class 14 - 15 */
+// Class 14 - 15
typedef struct _SYSTEM_POOL_ENTRY
{
BOOLEAN Allocated;
@@ -597,7 +689,7 @@ typedef struct _SYSTEM_POOL_INFORMATION
SYSTEM_POOL_ENTRY Entries[1];
} SYSTEM_POOL_INFORMATION, *PSYSTEM_POOL_INFORMATION;
-/* Class 16 */
+// Class 16
typedef struct _SYSTEM_HANDLE_TABLE_ENTRY_INFO
{
USHORT UniqueProcessId;
@@ -615,7 +707,7 @@ typedef struct _SYSTEM_HANDLE_INFORMATION
SYSTEM_HANDLE_TABLE_ENTRY_INFO Handles[1];
} SYSTEM_HANDLE_INFORMATION, *PSYSTEM_HANDLE_INFORMATION;
-/* Class 17 */
+// Class 17
typedef struct _SYSTEM_OBJECTTYPE_INFORMATION
{
ULONG NextEntryOffset;
@@ -647,7 +739,7 @@ typedef struct _SYSTEM_OBJECT_INFORMATION
OBJECT_NAME_INFORMATION NameInfo;
} SYSTEM_OBJECT_INFORMATION, *PSYSTEM_OBJECT_INFORMATION;
-/* Class 18 */
+// Class 18
typedef struct _SYSTEM_PAGEFILE_INFORMATION
{
ULONG NextEntryOffset;
@@ -657,7 +749,7 @@ typedef struct _SYSTEM_PAGEFILE_INFORMATION
UNICODE_STRING PageFileName;
} SYSTEM_PAGEFILE_INFORMATION, *PSYSTEM_PAGEFILE_INFORMATION;
-/* Class 19 */
+// Class 19
typedef struct _SYSTEM_VDM_INSTEMUL_INFO
{
ULONG SegmentNotPresent;
@@ -696,14 +788,13 @@ typedef struct _SYSTEM_VDM_INSTEMUL_INFO
ULONG BopCount;
} SYSTEM_VDM_INSTEMUL_INFO, *PSYSTEM_VDM_INSTEMUL_INFO;
-/* Class 20 */
+// FIXME: Class 20
typedef struct _SYSTEM_VDM_BOP_INFO
{
- /* FIXME */
PVOID Dummy;
} SYSTEM_VDM_BOP_INFO, *PSYSTEM_VDM_BOP_INFO;
-/* Class 21 */
+// Class 21
typedef struct _SYSTEM_CACHE_INFORMATION
{
ULONG CurrentSize;
@@ -716,7 +807,7 @@ typedef struct _SYSTEM_CACHE_INFORMATION
ULONG Unused[2];
} SYSTEM_CACHE_INFORMATION, *PSYSTEM_CACHE_INFORMATION;
-/* Class 22 */
+// Class 22
typedef struct _SYSTEM_POOLTAG
{
union
@@ -737,7 +828,7 @@ typedef struct _SYSTEM_POOLTAG_INFORMATION
SYSTEM_POOLTAG TagInfo[1];
} SYSTEM_POOLTAG_INFORMATION, *PSYSTEM_POOLTAG_INFORMATION;
-/* Class 23 */
+// Class 23
typedef struct _SYSTEM_INTERRUPT_INFORMATION
{
ULONG ContextSwitches;
@@ -748,7 +839,7 @@ typedef struct _SYSTEM_INTERRUPT_INFORMATION
ULONG ApcBypassCount;
} SYSTEM_INTERRUPT_INFORMATION, *PSYSTEM_INTERRUPT_INFORMATION;
-/* Class 24 */
+// Class 24
typedef struct _SYSTEM_DPC_BEHAVIOR_INFORMATION
{
ULONG Spare;
@@ -758,7 +849,7 @@ typedef struct _SYSTEM_DPC_BEHAVIOR_INFORMATION
ULONG IdealDpcRate;
} SYSTEM_DPC_BEHAVIOR_INFORMATION, *PSYSTEM_DPC_BEHAVIOR_INFORMATION;
-/* Class 25 */
+// Class 25
typedef struct _SYSTEM_MEMORY_INFO
{
PUCHAR StringOffset;
@@ -774,7 +865,7 @@ typedef struct _SYSTEM_MEMORY_INFORMATION
SYSTEM_MEMORY_INFO Memory[1];
} SYSTEM_MEMORY_INFORMATION, *PSYSTEM_MEMORY_INFORMATION;
-/* Class 26 */
+// Class 26
typedef struct _SYSTEM_GDI_DRIVER_INFORMATION
{
UNICODE_STRING DriverName;
@@ -784,10 +875,10 @@ typedef struct _SYSTEM_GDI_DRIVER_INFORMATION
PIMAGE_EXPORT_DIRECTORY ExportSectionPointer;
} SYSTEM_GDI_DRIVER_INFORMATION, *PSYSTEM_GDI_DRIVER_INFORMATION;
-/* Class 27 */
-/* Not an actuall class, simply a PVOID to the ImageAddress */
+// Class 27
+// Not an actually class, simply a PVOID to the ImageAddress
-/* Class 28 */
+// Class 28
typedef struct _SYSTEM_QUERY_TIME_ADJUST_INFORMATION
{
ULONG TimeAdjustment;
@@ -801,18 +892,17 @@ typedef struct _SYSTEM_SET_TIME_ADJUST_INFORMATION
BOOLEAN Enable;
} SYSTEM_SET_TIME_ADJUST_INFORMATION, *PSYSTEM_SET_TIME_ADJUST_INFORMATION;
-/* Class 29 - Same as 25 */
+// Class 29 - Same as 25
-/* Class 30 - 31 */
-/* FIXME */
+// FIXME: Class 30 - 31
-/* Class 32 */
+// Class 32
typedef struct _SYSTEM_CRASH_DUMP_INFORMATION
{
HANDLE CrashDumpSection;
} SYSTEM_CRASH_DUMP_INFORMATION, *PSYSTEM_CRASH_DUMP_INFORMATION;
-/* Class 33 */
+// Class 33
typedef struct _SYSTEM_EXCEPTION_INFORMATION
{
ULONG AlignmentFixupCount;
@@ -821,20 +911,20 @@ typedef struct _SYSTEM_EXCEPTION_INFORMATION
ULONG ByteWordEmulationCount;
} SYSTEM_EXCEPTION_INFORMATION, *PSYSTEM_EXCEPTION_INFORMATION;
-/* Class 34 */
+// Class 34
typedef struct _SYSTEM_CRASH_STATE_INFORMATION
{
ULONG ValidCrashDump;
} SYSTEM_CRASH_STATE_INFORMATION, *PSYSTEM_CRASH_STATE_INFORMATION;
-/* Class 35 */
+// Class 35
typedef struct _SYSTEM_KERNEL_DEBUGGER_INFORMATION
{
BOOLEAN KernelDebuggerEnabled;
BOOLEAN KernelDebuggerNotPresent;
} SYSTEM_KERNEL_DEBUGGER_INFORMATION, *PSYSTEM_KERNEL_DEBUGGER_INFORMATION;
-/* Class 36 */
+// Class 36
typedef struct _SYSTEM_CONTEXT_SWITCH_INFORMATION
{
ULONG ContextSwitches;
@@ -851,7 +941,7 @@ typedef struct _SYSTEM_CONTEXT_SWITCH_INFORMATION
ULONG SwitchToIdle;
} SYSTEM_CONTEXT_SWITCH_INFORMATION, *PSYSTEM_CONTEXT_SWITCH_INFORMATION;
-/* Class 37 */
+// Class 37
typedef struct _SYSTEM_REGISTRY_QUOTA_INFORMATION
{
ULONG RegistryQuotaAllowed;
@@ -859,20 +949,20 @@ typedef struct _SYSTEM_REGISTRY_QUOTA_INFORMATION
ULONG PagedPoolSize;
} SYSTEM_REGISTRY_QUOTA_INFORMATION, *PSYSTEM_REGISTRY_QUOTA_INFORMATION;
-/* Class 38 */
-/* Not a structure, simply send the UNICODE_STRING */
+// Class 38
+// Not a structure, simply send the UNICODE_STRING
-/* Class 39 */
-/* Not a structure, simply send a ULONG containing the new separation */
+// Class 39
+// Not a structure, simply send a ULONG containing the new separation
-/* Class 40 */
+// Class 40
typedef struct _SYSTEM_PLUGPLAY_BUS_INFORMATION
{
ULONG BusCount;
PLUGPLAY_BUS_INSTANCE BusInstance[1];
} SYSTEM_PLUGPLAY_BUS_INFORMATION, *PSYSTEM_PLUGPLAY_BUS_INFORMATION;
-/* Class 41 */
+// Class 41
typedef struct _SYSTEM_DOCK_INFORMATION
{
SYSTEM_DOCK_STATE DockState;
@@ -881,8 +971,8 @@ typedef struct _SYSTEM_DOCK_INFORMATION
ULONG SlotNumber;
} SYSTEM_DOCK_INFORMATION, *PSYSTEM_DOCK_INFORMATION;
-/* Class 42 */
-/* FIXME: Conflict with WINNT.H */
+// Class 42
+// FIXME: Conflict with WINNT.H
typedef struct __SYSTEM_POWER_INFORMATION
{
BOOLEAN SystemSuspendSupported;
@@ -897,18 +987,18 @@ typedef struct __SYSTEM_POWER_INFORMATION
LARGE_INTEGER SpindownDrives;
} _SYSTEM_POWER_INFORMATION, *P_SYSTEM_POWER_INFORMATION;
-/* Class 43 */
+// Class 43
typedef struct _SYSTEM_LEGACY_DRIVER_INFORMATION
{
PNP_VETO_TYPE VetoType;
UNICODE_STRING VetoDriver;
- /* Buffer Follows */
+ // CHAR Buffer[0];
} SYSTEM_LEGACY_DRIVER_INFORMATION, *PSYSTEM_LEGACY_DRIVER_INFORMATION;
-/* Class 44 */
+// Class 44
typedef struct _TIME_ZONE_INFORMATION RTL_TIME_ZONE_INFORMATION;
-/* Class 45 */
+// Class 45
typedef struct _SYSTEM_LOOKASIDE_INFORMATION
{
USHORT CurrentDepth;
@@ -922,34 +1012,30 @@ typedef struct _SYSTEM_LOOKASIDE_INFORMATION
ULONG Size;
} SYSTEM_LOOKASIDE_INFORMATION, *PSYSTEM_LOOKASIDE_INFORMATION;
-/* Class 46 */
-/* Not a structure. Only a HANDLE for the SlipEvent; */
+// Class 46
+// Not a structure. Only a HANDLE for the SlipEvent;
-/* Class 47 */
-/* Not a structure. Only a ULONG for the SessionId; */
+// Class 47
+// Not a structure. Only a ULONG for the SessionId;
-/* Class 48 */
-/* Not a structure. Only a ULONG for the SessionId; */
+// Class 48
+// Not a structure. Only a ULONG for the SessionId;
-/* Class 49 */
-/* FIXME */
+// FIXME: Class 49
-/* Class 50 */
-/* Not a structure. Only a ULONG_PTR for the SystemRangeStart */
+// Class 50
+// Not a structure. Only a ULONG_PTR for the SystemRangeStart
-/* Class 51 */
-/* FIXME. Based on MM_DRIVER_VERIFIER_DATA */
+// FIXME: Class 51 (Based on MM_DRIVER_VERIFIER_DATA)
-/* Class 52 */
-/* FIXME */
+// FIXME: Class 52
-/* Class 53 */
+// Class 53
typedef struct _SYSTEM_SESSION_PROCESSES_INFORMATION
{
- ULONG SessionId;
- ULONG BufferSize;
- PVOID Buffer; /* same format as in SystemProcessInformation */
-} SYSTEM_SESSION_PROCESSES_INFORMATION, * PSYSTEM_SESSION_PROCESSES_INFORMATION;
+ ULONG SessionId;
+ ULONG BufferSize;
+ PVOID Buffer; // Same format as in SystemProcessInformation
+} SYSTEM_SESSION_PROCESSES_INFORMATION, *PSYSTEM_SESSION_PROCESSES_INFORMATION;
#endif
-
diff --git a/reactos/include/ndk/fixmes.txt b/reactos/include/ndk/fixmes.txt
index 62c08ce2c86..6d1e973b213 100644
--- a/reactos/include/ndk/fixmes.txt
+++ b/reactos/include/ndk/fixmes.txt
@@ -1,42 +1,8 @@
-NDK FIXMES
------------
+Complete list of NDK Fixmes before 1.0 Release (Nov 25th 2005)
+--------------------------------------------------------------
-Order:
- * Priority 1 = Most important to fix.
- * Priority 5 = Least important to fix.
-Format:
-
- - FIXME Description (Assigned Fixer) [FIXME location(s)]
+List of ReactOS Applications compiling with the NDK
+--------------------------------------------------------------
-List:
- Priority 1:
- - FIXED: LDR_DATA_TABLE_ENTRY has a ROSSYM Hack (Alex) [ldrtypes.h]
- - FIXED: LDR_FLAGS are not correct (Alex) [ldrtypes.h]
- - FIXED: Remove extra Process Info classes from ddk (Alex) [zwtypes.h]
- - FIXED: PsEstablishWin32Callouts + Parameters don't match NT (Alex) [obtypes.h]
- - FIXED: PROCESS_SET_PORT was removed, ThomasW did a patch about this? (Thomas) [pstypes.h]
- - FIXED: Some files need cleanup (Alex + Eric) [zwfuncs.h, rtlfuncs.h, rtltypes.h]
- Priority 2:
- - FIXED: DEVICE_NODE has 2 fields not part of NT's defintion (Alex) [iotypes.h]
- - Object Callbacks don't match NT's (Alex) [obtypes.h]
- - Remove Create Callback Hack (Alex) [obtypes.h]
- - Object header doesn't match NT (Alex) [obtypes.h] blocks on ->
- - Object Directory + implementation doesn't match NT (Alex) [obtypes.h]
-
- Priority 3:
- - FIXED: Some RTL Structures need review (Alex) [rtltypes.h]
- - Pushlock support is needed to fix EPROCESS (Alex) [pstypes.h]
- - MADDRESS_SPACE must be converted into the NT Type (Alex) [pstypes.h, mmtypes.h]
-
- Priority 4:
- - FIXED: Kernel and Memory Types are not architecture-specific (Eric) [ketypes.h, mmtypes.h]
- - FIXED: Win32K Builds with windows.h (Filip) [extypes.h, ketypes.h]
- - FIXED: Modify design of NDK so that all the types are in their respective files (Alex) [*.h]
-
- Priority 5:
- - FIXED: LPC Types are totally wrong. (Alex) [lpctypes.h]
- - Missing System Info Classes [zwtypes.h]
- - FIXED: Process Priority Classes are messed up (Alex) [pstypes.h]
-
diff --git a/reactos/include/ndk/halfuncs.h b/reactos/include/ndk/halfuncs.h
index f105e04799d..3f95631064c 100644
--- a/reactos/include/ndk/halfuncs.h
+++ b/reactos/include/ndk/halfuncs.h
@@ -1,29 +1,96 @@
-/*
- * PROJECT: ReactOS Native Headers
- * FILE: include/ndk/halfuncs.h
- * PURPOSE: Prototypes for exported HAL Functions 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:
+
+ halfuncs.h
+
+Abstract:
+
+ Function definitions for the HAL.
+
+Author:
+
+ Alex Ionescu (alex.ionescu@reactos.com) 06-Oct-2004
+
+--*/
+
#ifndef _HALFUNCS_H
#define _HALFUNCS_H
-/* DEPENDENCIES **************************************************************/
+//
+// Dependencies
+//
+
#include "haltypes.h"
-/* FUNCTION TYPES ************************************************************/
+//
+// Display Functions
+//
+BOOLEAN
+NTAPI
+HalQueryDisplayOwnership(
+ VOID
+);
-/* PROTOTYPES ****************************************************************/
+VOID
+NTAPI
+HalDisplayString(
+ IN PCHAR String
+);
BOOLEAN
NTAPI
-HalQueryDisplayOwnership(VOID);
+HalQueryDisplayOwnership(
+ VOID
+);
+
+VOID
+NTAPI
+HalReleaseDisplayOwnership(
+ VOID
+);
+
+//
+// Initialization Functions
+//
+BOOLEAN
+NTAPI
+HalAllProcessorsStarted(
+ VOID
+);
+
+VOID
+NTAPI
+HalInitializeProcessor(
+ ULONG ProcessorNumber,
+ PVOID ProcessorStack
+);
BOOLEAN
NTAPI
-HalAllProcessorsStarted(VOID);
+HalInitSystem(
+ ULONG BootPhase,
+ PLOADER_PARAMETER_BLOCK LoaderBlock
+);
+VOID
+NTAPI
+HalReturnToFirmware(
+ FIRMWARE_REENTRY Action
+);
+
+BOOLEAN
+NTAPI
+HalStartNextProcessor(
+ ULONG Unknown1,
+ ULONG Unknown2
+);
+
+//
+// Interrupt Functions
+//
BOOLEAN
NTAPI
HalBeginSystemInterrupt(
@@ -39,12 +106,6 @@ HalDisableSystemInterrupt(
KIRQL Irql
);
-VOID
-NTAPI
-HalDisplayString (
- IN PCHAR String
-);
-
BOOLEAN
NTAPI
HalEnableSystemInterrupt(
@@ -70,62 +131,25 @@ HalGetEnvironmentVariable(
VOID
NTAPI
-HalInitializeProcessor(
- ULONG ProcessorNumber,
- PVOID ProcessorStack
+HalReportResourceUsage(
+ VOID
);
-BOOLEAN
-NTAPI
-HalInitSystem(
- ULONG BootPhase,
- PLOADER_PARAMETER_BLOCK LoaderBlock
-);
-
-BOOLEAN
-NTAPI
-HalQueryDisplayOwnership(VOID);
-
-VOID
-NTAPI
-HalReportResourceUsage(VOID);
-
VOID
FASTCALL
HalRequestSoftwareInterrupt(
KIRQL SoftwareInterruptRequested
);
-VOID
-NTAPI
-HalReleaseDisplayOwnership(VOID);
-
-VOID
-NTAPI
-HalReturnToFirmware(
- FIRMWARE_REENTRY Action
-);
-
VOID
NTAPI
HalRequestIpi(
ULONG Unknown
);
-BOOLEAN
-NTAPI
-HalSetEnvironmentVariable(
- IN PCH Name,
- IN PCH Value
-);
-
-BOOLEAN
-NTAPI
-HalStartNextProcessor(
- ULONG Unknown1,
- ULONG Unknown2
-);
-
+//
+// I/O Functions
+//
VOID
NTAPI
IoAssignDriveLetters(
@@ -135,4 +159,15 @@ IoAssignDriveLetters(
PSTRING NtSystemPathString
);
+//
+// Environment Functions
+//
+BOOLEAN
+NTAPI
+HalSetEnvironmentVariable(
+ IN PCH Name,
+ IN PCH Value
+);
+
+
#endif
diff --git a/reactos/include/ndk/haltypes.h b/reactos/include/ndk/haltypes.h
index 1f09fb414c7..ba808d81a41 100644
--- a/reactos/include/ndk/haltypes.h
+++ b/reactos/include/ndk/haltypes.h
@@ -1,37 +1,48 @@
-/*
- * 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 **************************************************************/
+//
+// Dependencies
+//
-/* EXPORTED DATA *************************************************************/
-extern ULONG NTSYSAPI KdComPortInUse;
+//
+// Multi-Boot Flags (FIXME)
+//
+#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)
-/* 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)
-#define MB_FLAGS_ACPI_TABLE (0x1000)
-
-/* ENUMERATIONS **************************************************************/
+//
+// HalShutdownSystem Types
+//
typedef enum _FIRMWARE_ENTRY
{
HalHaltRoutine,
@@ -42,21 +53,18 @@ typedef enum _FIRMWARE_ENTRY
HalMaximumRoutine
} FIRMWARE_REENTRY, *PFIRMWARE_REENTRY;
-/* TYPES *********************************************************************/
-
+//
+// Hal Private dispatch Table
+//
+#define HAL_PRIVATE_DISPATCH_VERSION 1
typedef struct _HAL_PRIVATE_DISPATCH
{
ULONG Version;
} HAL_PRIVATE_DISPATCH, *PHAL_PRIVATE_DISPATCH;
-#ifdef __NTOSKRNL__
-extern HAL_PRIVATE_DISPATCH NTSYSAPI HalPrivateDispatchTable;
-#else
-extern PHAL_PRIVATE_DISPATCH NTSYSAPI HalPrivateDispatchTable;
-#endif
-
-#define HAL_PRIVATE_DISPATCH_VERSION 1
-
+//
+// Loader Parameter Block Structures (FIXME)
+//
typedef struct _LOADER_MODULE
{
ULONG ModStart;
@@ -86,5 +94,15 @@ typedef struct _LOADER_PARAMETER_BLOCK
ULONG KernelBase;
} LOADER_PARAMETER_BLOCK, *PLOADER_PARAMETER_BLOCK;
+//
+// Kernel Exports
+//
+#ifdef __NTOSKRNL__
+extern HAL_PRIVATE_DISPATCH NTSYSAPI HalPrivateDispatchTable;
+#else
+extern PHAL_PRIVATE_DISPATCH NTSYSAPI HalPrivateDispatchTable;
+#endif
+extern ULONG NTSYSAPI KdComPortInUse;
+
#endif
diff --git a/reactos/include/ndk/i386/floatsave.h b/reactos/include/ndk/i386/floatsave.h
deleted file mode 100644
index 833f1ffc423..00000000000
--- a/reactos/include/ndk/i386/floatsave.h
+++ /dev/null
@@ -1,11 +0,0 @@
-#ifndef _FLOATSAVE_H_
-#define _FLOATSAVE_H_
-
-#define FLOAT_SAVE_CONTROL (0xFFFF037F)
-#define FLOAT_SAVE_STATUS (0xFFFF0000)
-#define FLOAT_SAVE_TAG (0xFFFFFFFF)
-#define FLOAT_SAVE_DATA (0xFFFF0000)
-
-#endif /* __NAPI_I386_FLOATSAVE_H__ */
-
-/* EOF */
diff --git a/reactos/include/ndk/i386/ketypes.h b/reactos/include/ndk/i386/ketypes.h
index 2e3be267015..7a63b589c29 100644
--- a/reactos/include/ndk/i386/ketypes.h
+++ b/reactos/include/ndk/i386/ketypes.h
@@ -1,37 +1,49 @@
-/*
- * PROJECT: ReactOS Native Headers
- * FILE: include/ndk/i386/ketypes.h
- * PURPOSE: I386-specific definitions for Kernel 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:
+
+ ketypes.h (X86)
+
+Abstract:
+
+ i386 Type definitions for the Kernel services.
+
+Author:
+
+ Alex Ionescu (alex.ionescu@reactos.com) 06-Oct-2004
+
+--*/
+
#ifndef _I386_KETYPES_H
#define _I386_KETYPES_H
-/* DEPENDENCIES **************************************************************/
+//
+// Dependencies
+//
-/* CONSTANTS *****************************************************************/
-
-/* X86 80386 Segment Types */
-#define I386_TSS 0x9
-#define I386_ACTIVE_TSS 0xB
-#define I386_CALL_GATE 0xC
-#define I386_INTERRUPT_GATE 0xE
-#define I386_TRAP_GATE 0xF
+//
+// X86 80386 Segment Types
+//
+#define I386_TSS 0x9
+#define I386_ACTIVE_TSS 0xB
+#define I386_CALL_GATE 0xC
+#define I386_INTERRUPT_GATE 0xE
+#define I386_TRAP_GATE 0xF
+//
+// IPI Types
+//
#define IPI_APC 1
#define IPI_DPC 2
#define IPI_FREEZE 3
#define IPI_PACKET_READY 4
#define IPI_SYNCH_REQUEST 10
-/* EXPORTED DATA *************************************************************/
-
-/* ENUMERATIONS **************************************************************/
-
-/* TYPES *********************************************************************/
-
+//
+// FN/FX (FPU) Save Area Structures
+//
typedef struct _FNSAVE_FORMAT
{
ULONG ControlWord;
@@ -73,7 +85,9 @@ typedef struct _FX_SAVE_AREA
ULONG Cr0NpxState;
} FX_SAVE_AREA, *PFX_SAVE_AREA;
-/* FIXME: The names need to be fixed! */
+//
+// FIXME: Trap Frame Definition
+//
typedef struct _KTRAP_FRAME
{
ULONG DebugEbp;
@@ -113,6 +127,9 @@ typedef struct _KTRAP_FRAME
ULONG V86_Gs;
} KTRAP_FRAME, *PKTRAP_FRAME;
+//
+// LDT Entry Definition
+//
typedef struct _LDT_ENTRY
{
USHORT LimitLow;
@@ -142,6 +159,9 @@ typedef struct _LDT_ENTRY
} HighWord;
} LDT_ENTRY, *PLDT_ENTRY, *LPLDT_ENTRY;
+//
+// GDT Entry Definition
+//
typedef struct _KGDTENTRY
{
USHORT LimitLow;
@@ -171,6 +191,9 @@ typedef struct _KGDTENTRY
} HighWord;
} KGDTENTRY, *PKGDTENTRY;
+//
+// IDT Entry Access Definition
+//
typedef struct _KIDT_ACCESS
{
union
@@ -187,6 +210,9 @@ typedef struct _KIDT_ACCESS
};
} KIDT_ACCESS, *PKIDT_ACCESS;
+//
+// IDT Entry Definition
+//
typedef struct _KIDTENTRY
{
USHORT Offset;
@@ -195,6 +221,9 @@ typedef struct _KIDTENTRY
USHORT ExtendedOffset;
} KIDTENTRY, *PKIDTENTRY;
+//
+// Page Table Entry Definition
+//
typedef struct _HARDWARE_PTE_X86
{
ULONG Valid : 1;
@@ -219,6 +248,9 @@ typedef struct _DESCRIPTOR
ULONG Base;
} KDESCRIPTOR, *PKDESCRIPTOR;
+//
+// Special Registers Structure (outside of CONTEXT)
+//
typedef struct _KSPECIAL_REGISTERS
{
ULONG Cr0;
@@ -238,15 +270,19 @@ typedef struct _KSPECIAL_REGISTERS
ULONG Reserved[6];
} KSPECIAL_REGISTERS, *PKSPECIAL_REGISTERS;
+//
+// Processor State Data
+//
#pragma pack(push,4)
-
typedef struct _KPROCESSOR_STATE
{
PCONTEXT ContextFrame;
KSPECIAL_REGISTERS SpecialRegisters;
} KPROCESSOR_STATE;
-/* Processor Control Block */
+//
+// Processor Region Control Block
+//
typedef struct _KPRCB
{
USHORT MinorVersion;
@@ -377,9 +413,9 @@ typedef struct _KPRCB
PROCESSOR_POWER_STATE PowerState;
} KPRCB, *PKPRCB;
-/*
- * This is the complete, internal KPCR structure
- */
+//
+// Processor Control Region
+//
typedef struct _KIPCR
{
union
@@ -422,11 +458,12 @@ typedef struct _KIPCR
UCHAR KernelReserved2[0x48]; /* D8 */
KPRCB PrcbData; /* 120 */
} KIPCR, *PKIPCR;
-
#pragma pack(pop)
+//
+// FIXME: TSS without I/O Privilege Map
+//
#include
-
typedef struct _KTSSNOIOPM
{
USHORT PreviousTask;
@@ -471,30 +508,33 @@ typedef struct _KTSSNOIOPM
UCHAR IoBitmap[1];
} KTSSNOIOPM;
+//
+// TSS Definition
+//
typedef struct _KTSS
{
USHORT PreviousTask;
USHORT Reserved1;
- ULONG Esp0;
+ ULONG Esp0;
USHORT Ss0;
USHORT Reserved2;
- ULONG Esp1;
+ ULONG Esp1;
USHORT Ss1;
USHORT Reserved3;
- ULONG Esp2;
+ ULONG Esp2;
USHORT Ss2;
USHORT Reserved4;
- ULONG Cr3;
- ULONG Eip;
- ULONG Eflags;
- ULONG Eax;
- ULONG Ecx;
- ULONG Edx;
- ULONG Ebx;
- ULONG Esp;
- ULONG Ebp;
- ULONG Esi;
- ULONG Edi;
+ ULONG Cr3;
+ ULONG Eip;
+ ULONG Eflags;
+ ULONG Eax;
+ ULONG Ecx;
+ ULONG Edx;
+ ULONG Ebx;
+ ULONG Esp;
+ ULONG Ebp;
+ ULONG Esi;
+ ULONG Edi;
USHORT Es;
USHORT Reserved5;
USHORT Cs;
@@ -512,12 +552,13 @@ typedef struct _KTSS
USHORT Trap;
USHORT IoMapBase;
/* no interrupt redirection map */
- UCHAR IoBitmap[8193];
+ UCHAR IoBitmap[8193];
} KTSS;
-
#include
-/* i386 Doesn't have Exception Frames */
+//
+// i386 CPUs don't have exception frames
+//
typedef struct _KEXCEPTION_FRAME KEXCEPTION_FRAME, *PKEXCEPTION_FRAME;
#endif
diff --git a/reactos/include/ndk/i386/mmtypes.h b/reactos/include/ndk/i386/mmtypes.h
index a08f7fb0d9b..14194f7082e 100644
--- a/reactos/include/ndk/i386/mmtypes.h
+++ b/reactos/include/ndk/i386/mmtypes.h
@@ -1,25 +1,32 @@
-/*
- * PROJECT: ReactOS Native Headers
- * FILE: include/ndk/i386/mmtypes.h
- * PURPOSE: I386-specific definitions for Memory Manager 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:
+
+ mmtypes.h (X86)
+
+Abstract:
+
+ i386 Type definitions for the Memory Manager
+
+Author:
+
+ Alex Ionescu (alex.ionescu@reactos.com) 06-Oct-2004
+
+--*/
+
#ifndef _I386_MMTYPES_H
#define _I386_MMTYPES_H
-/* DEPENDENCIES **************************************************************/
-
-/* EXPORTED DATA *************************************************************/
-
-/* CONSTANTS *****************************************************************/
+//
+// Dependencies
+//
+//
+// Page-related Macros
+//
#define PAGE_SIZE 0x1000
#define PAGE_SHIFT 12L
-/* ENUMERATIONS **************************************************************/
-
-/* TYPES *********************************************************************/
-
#endif
diff --git a/reactos/include/ndk/i386/segment.h b/reactos/include/ndk/i386/segment.h
deleted file mode 100644
index 85f2aee33d2..00000000000
--- a/reactos/include/ndk/i386/segment.h
+++ /dev/null
@@ -1,14 +0,0 @@
-#ifndef _ASM_SEGMENT_H
-#define _ASM_SEGMENT_H
-
-#define KERNEL_CS (0x8)
-#define KERNEL_DS (0x10)
-#define USER_CS (0x18 + 0x3)
-#define USER_DS (0x20 + 0x3)
-#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 */
diff --git a/reactos/include/ndk/ifssupp.h b/reactos/include/ndk/ifssupp.h
index 5c5cbdc1af3..1bf3cb360fc 100644
--- a/reactos/include/ndk/ifssupp.h
+++ b/reactos/include/ndk/ifssupp.h
@@ -1,22 +1,24 @@
-/*
- * PROJECT: ReactOS Native Headers
- * FILE: include/ndk/ifssupp.h
- * PURPOSE: Defintions present in IFS, required for NDK usage.
- * PROGRAMMER: Alex Ionescu (alex@relsoft.net)
- * UPDATE HISTORY:
- * Created 08/16/05
- */
+/*++ NDK Version: 0095
+
+Copyright (c) Alex Ionescu. All rights reserved.
+
+Header Name:
+
+ ifssupp.h
+
+Abstract:
+
+ NDK Support for usage without the IFS. Will be deprecated at WDK Release.
+
+Author:
+
+ Alex Ionescu (alex.ionescu@reactos.com) 06-Oct-2004
+
+--*/
+
#ifndef _NTIFS_
#define _NTIFS_
-/* DEPENDENCIES **************************************************************/
-
-/* EXPORTED DATA *************************************************************/
-
-/* CONSTANTS *****************************************************************/
-
-/* TYPES *********************************************************************/
-
typedef PVOID PRTL_HEAP_PARAMETERS;
typedef struct _RTL_SPLAY_LINKS
@@ -126,5 +128,4 @@ typedef enum _RTL_GENERIC_COMPARE_RESULTS
GenericEqual
} RTL_GENERIC_COMPARE_RESULTS;
-#endif
-
+#endif // _NTIFS_
diff --git a/reactos/include/ndk/inbvfuncs.h b/reactos/include/ndk/inbvfuncs.h
index 254538e950a..04c00244fc3 100644
--- a/reactos/include/ndk/inbvfuncs.h
+++ b/reactos/include/ndk/inbvfuncs.h
@@ -1,20 +1,31 @@
-/*
- * PROJECT: ReactOS Native Headers
- * FILE: include/ndk/haltypes.h
- * PURPOSE: Prototypes for Boot Video Driver 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:
+
+ inbvfuncs.h
+
+Abstract:
+
+ Function definitions for the Boot Video Driver.
+
+Author:
+
+ Alex Ionescu (alex.ionescu@reactos.com) 06-Oct-2004
+
+--*/
+
#ifndef _INBVFUNCS_H
#define _INBVFUNCS_H
-/* DEPENDENCIES **************************************************************/
-
-/* FUNCTION TYPES ************************************************************/
-
-/* PROTOTYPES ****************************************************************/
+//
+// Dependencies
+//
+//
+// Ownership Functions
+//
VOID
NTAPI
InbvAcquireDisplayOwnership(VOID);
@@ -23,24 +34,21 @@ BOOLEAN
NTAPI
InbvCheckDisplayOwnership(VOID);
-BOOLEAN
+VOID
NTAPI
-InbvDisplayString(
- IN PCHAR String
+InbvNotifyDisplayOwnershipLost(
+ IN PVOID Callback
);
+//
+// Installation Functions
+//
VOID
NTAPI
InbvEnableBootDriver(
IN BOOLEAN Enable
);
-BOOLEAN
-NTAPI
-InbvEnableDisplayString(
- IN BOOLEAN Enable
-);
-
VOID
NTAPI
InbvInstallDisplayStringFilter(
@@ -51,10 +59,19 @@ BOOLEAN
NTAPI
InbvIsBootDriverInstalled(VOID);
-VOID
+//
+// Display Functions
+//
+BOOLEAN
NTAPI
-InbvNotifyDisplayOwnershipLost(
- IN PVOID Callback
+InbvDisplayString(
+ IN PCHAR String
+);
+
+BOOLEAN
+NTAPI
+InbvEnableDisplayString(
+ IN BOOLEAN Enable
);
BOOLEAN
@@ -86,16 +103,4 @@ InbvSolidColorFill(
IN ULONG Color
);
-VOID
-NTAPI
-VidCleanUp(VOID);
-
-BOOLEAN
-NTAPI
-VidResetDisplay(VOID);
-
-BOOLEAN
-NTAPI
-VidIsBootDriverInstalled(VOID);
-
#endif
diff --git a/reactos/include/ndk/iofuncs.h b/reactos/include/ndk/iofuncs.h
index d9a45d28cbe..ce81b480814 100644
--- a/reactos/include/ndk/iofuncs.h
+++ b/reactos/include/ndk/iofuncs.h
@@ -1,20 +1,28 @@
-/*
- * PROJECT: ReactOS Native Headers
- * FILE: include/ndk/iofuncs.h
- * PURPOSE: Definitions for exported I/O Manager Functions 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:
+
+ iofuncs.h
+
+Abstract:
+
+ Function definitions for the I/O Manager.
+
+Author:
+
+ Alex Ionescu (alex.ionescu@reactos.com) 06-Oct-2004
+
+--*/
#ifndef _IOFUNCS_H
#define _IOFUNCS_H
-/* DEPENDENCIES **************************************************************/
+//
+// Dependencies
+//
-/* FUNCTION TYPES ************************************************************/
-
-/* PROTOTYPES ****************************************************************/
#endif
diff --git a/reactos/include/ndk/iotypes.h b/reactos/include/ndk/iotypes.h
index 50ce0a7ad0b..e816f0e9904 100644
--- a/reactos/include/ndk/iotypes.h
+++ b/reactos/include/ndk/iotypes.h
@@ -1,110 +1,131 @@
-/*
- * PROJECT: ReactOS Native Headers
- * FILE: include/ndk/iotypes.h
- * PURPOSE: Definitions for exported I/O Manager 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:
+
+ iotypes.h
+
+Abstract:
+
+ Type definitions for the I/O Manager.
+
+Author:
+
+ Alex Ionescu (alex.ionescu@reactos.com) 06-Oct-2004
+
+--*/
#ifndef _IOTYPES_H
#define _IOTYPES_H
-/* DEPENDENCIES **************************************************************/
+//
+// Dependencies
+//
-/* EXPORTED DATA *************************************************************/
#ifndef NTOS_MODE_USER
+
+//
+// Kernel Exported Object Types
+//
extern POBJECT_TYPE NTSYSAPI IoAdapterObjectType;
extern POBJECT_TYPE NTSYSAPI IoDeviceHandlerObjectType;
extern POBJECT_TYPE NTSYSAPI IoDeviceObjectType;
extern POBJECT_TYPE NTSYSAPI IoDriverObjectType;
+
+#else
+
+//
+// Symbolic Link Access Rights
+//
+#define SYMBOLIC_LINK_QUERY 0x0001
+#define SYMBOLIC_LINK_ALL_ACCESS STANDARD_RIGHTS_REQUIRED | 0x0001
#endif
-/* CONSTANTS *****************************************************************/
+//
+// NtCreateFile Result Flags
+//
+#define FILE_SUPERSEDED 0x00000000
+#define FILE_OPENED 0x00000001
+#define FILE_CREATED 0x00000002
+#define FILE_OVERWRITTEN 0x00000003
+#define FILE_EXISTS 0x00000004
+#define FILE_DOES_NOT_EXIST 0x00000005
-#ifdef NTOS_MODE_USER
-/* Object Access Rights */
-#define SYMBOLIC_LINK_QUERY 0x0001
-#define SYMBOLIC_LINK_ALL_ACCESS STANDARD_RIGHTS_REQUIRED | 0x0001
-#endif
+//
+// Pipe Flags
+//
+#define FILE_PIPE_BYTE_STREAM_TYPE 0x00000000
+#define FILE_PIPE_MESSAGE_TYPE 0x00000001
+#define FILE_PIPE_BYTE_STREAM_MODE 0x00000000
+#define FILE_PIPE_MESSAGE_MODE 0x00000001
+#define FILE_PIPE_QUEUE_OPERATION 0x00000000
+#define FILE_PIPE_COMPLETE_OPERATION 0x00000001
+#define FILE_PIPE_INBOUND 0x00000000
+#define FILE_PIPE_OUTBOUND 0x00000001
+#define FILE_PIPE_FULL_DUPLEX 0x00000002
+#define FILE_PIPE_CLIENT_END 0x00000000
+#define FILE_PIPE_SERVER_END 0x00000001
-/* File Result Flags */
-#define FILE_SUPERSEDED 0x00000000
-#define FILE_OPENED 0x00000001
-#define FILE_CREATED 0x00000002
-#define FILE_OVERWRITTEN 0x00000003
-#define FILE_EXISTS 0x00000004
-#define FILE_DOES_NOT_EXIST 0x00000005
+//
+// NtCreateFile Attributes
+//
+#define FILE_ATTRIBUTE_VALID_FLAGS 0x00007fb7
+#define FILE_ATTRIBUTE_VALID_SET_FLAGS 0x000031a7
-/* Pipe Flags */
-#define FILE_PIPE_BYTE_STREAM_TYPE 0x00000000
-#define FILE_PIPE_MESSAGE_TYPE 0x00000001
-#define FILE_PIPE_BYTE_STREAM_MODE 0x00000000
-#define FILE_PIPE_MESSAGE_MODE 0x00000001
-#define FILE_PIPE_QUEUE_OPERATION 0x00000000
-#define FILE_PIPE_COMPLETE_OPERATION 0x00000001
-#define FILE_PIPE_INBOUND 0x00000000
-#define FILE_PIPE_OUTBOUND 0x00000001
-#define FILE_PIPE_FULL_DUPLEX 0x00000002
-#define FILE_PIPE_CLIENT_END 0x00000000
-#define FILE_PIPE_SERVER_END 0x00000001
+//
+// NtCreateFile OpenType Flags
+//
+#define FILE_SUPERSEDE 0x00000000
+#define FILE_OPEN 0x00000001
+#define FILE_CREATE 0x00000002
+#define FILE_OPEN_IF 0x00000003
+#define FILE_OVERWRITE 0x00000004
+#define FILE_OVERWRITE_IF 0x00000005
+#define FILE_MAXIMUM_DISPOSITION 0x00000005
-/* File Attributes */
-#define FILE_ATTRIBUTE_VALID_FLAGS 0x00007fb7
-#define FILE_ATTRIBUTE_VALID_SET_FLAGS 0x000031a7
+//
+// NtCreateFile Flags
+//
+#define FILE_DIRECTORY_FILE 0x00000001
+#define FILE_WRITE_THROUGH 0x00000002
+#define FILE_SEQUENTIAL_ONLY 0x00000004
+#define FILE_NO_INTERMEDIATE_BUFFERING 0x00000008
+#define FILE_SYNCHRONOUS_IO_ALERT 0x00000010
+#define FILE_SYNCHRONOUS_IO_NONALERT 0x00000020
+#define FILE_NON_DIRECTORY_FILE 0x00000040
+#define FILE_CREATE_TREE_CONNECTION 0x00000080
+#define FILE_COMPLETE_IF_OPLOCKED 0x00000100
+#define FILE_NO_EA_KNOWLEDGE 0x00000200
+#define FILE_OPEN_FOR_RECOVERY 0x00000400
+#define FILE_RANDOM_ACCESS 0x00000800
+#define FILE_DELETE_ON_CLOSE 0x00001000
+#define FILE_OPEN_BY_FILE_ID 0x00002000
+#define FILE_OPEN_FOR_BACKUP_INTENT 0x00004000
+#define FILE_NO_COMPRESSION 0x00008000
+#define FILE_RESERVE_OPFILTER 0x00100000
+#define FILE_OPEN_REPARSE_POINT 0x00200000
+#define FILE_OPEN_NO_RECALL 0x00400000
+#define FILE_OPEN_FOR_FREE_SPACE_QUERY 0x00800000
-/* File Flags */
-#define FILE_SUPERSEDE 0x00000000
-#define FILE_OPEN 0x00000001
-#define FILE_CREATE 0x00000002
-#define FILE_OPEN_IF 0x00000003
-#define FILE_OVERWRITE 0x00000004
-#define FILE_OVERWRITE_IF 0x00000005
-#define FILE_MAXIMUM_DISPOSITION 0x00000005
+//
+// Device Charactertics
+//
+#define FILE_REMOVABLE_MEDIA 0x00000001
+#define FILE_REMOTE_DEVICE 0x00000010
-/* File Types */
-#define FILE_DIRECTORY_FILE 0x00000001
-#define FILE_WRITE_THROUGH 0x00000002
-#define FILE_SEQUENTIAL_ONLY 0x00000004
-#define FILE_NO_INTERMEDIATE_BUFFERING 0x00000008
-#define FILE_SYNCHRONOUS_IO_ALERT 0x00000010
-#define FILE_SYNCHRONOUS_IO_NONALERT 0x00000020
-#define FILE_NON_DIRECTORY_FILE 0x00000040
-#define FILE_CREATE_TREE_CONNECTION 0x00000080
-#define FILE_COMPLETE_IF_OPLOCKED 0x00000100
-#define FILE_NO_EA_KNOWLEDGE 0x00000200
-#define FILE_OPEN_FOR_RECOVERY 0x00000400
-#define FILE_RANDOM_ACCESS 0x00000800
-#define FILE_DELETE_ON_CLOSE 0x00001000
-#define FILE_OPEN_BY_FILE_ID 0x00002000
-#define FILE_OPEN_FOR_BACKUP_INTENT 0x00004000
-#define FILE_NO_COMPRESSION 0x00008000
-#define FILE_RESERVE_OPFILTER 0x00100000
-#define FILE_OPEN_REPARSE_POINT 0x00200000
-#define FILE_OPEN_NO_RECALL 0x00400000
-#define FILE_OPEN_FOR_FREE_SPACE_QUERY 0x00800000
+//
+// 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
-/* For DeviceMap DosDevice Type */
-#define DOSDEVICE_DRIVE_UNKNOWN 0
-#define DOSDEVICE_DRIVE_CALCULATE 1
-#define DOSDEVICE_DRIVE_REMOVABLE 2
-#define DOSDEVICE_DRIVE_FIXED 3
-#define DOSDEVICE_DRIVE_REMOTE 4
-#define DOSDEVICE_DRIVE_CDROM 5
-#define DOSDEVICE_DRIVE_RAMDISK 6
-
-/* Device Charactertics */
-#define FILE_REMOVABLE_MEDIA 0x00000001
-#define FILE_REMOTE_DEVICE 0x00000010
-
-/* 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 */
+//
+// Device Node Flags
+//
#define DNF_PROCESSED 0x00000001
#define DNF_STARTED 0x00000002
#define DNF_START_FAILED 0x00000004
@@ -137,18 +158,26 @@ extern POBJECT_TYPE NTSYSAPI IoDriverObjectType;
#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 **************************************************************/
+//
+// Device Node User Flags
+//
+#define DNUF_DONT_SHOW_IN_UI 0x0002
+#define DNUF_NOT_DISABLEABLE 0x0008
+//
+// I/O Completion Information Class for NtQueryIoCompletionInformation
+//
typedef enum _IO_COMPLETION_INFORMATION_CLASS
{
IoCompletionBasicInformation
} IO_COMPLETION_INFORMATION_CLASS;
#ifdef NTOS_MODE_USER
+
+//
+// Hardware Interface Type
+//
typedef enum _INTERFACE_TYPE
{
InterfaceTypeUndefined = -1,
@@ -171,6 +200,9 @@ typedef enum _INTERFACE_TYPE
MaximumInterfaceType
}INTERFACE_TYPE, *PINTERFACE_TYPE;
+//
+// File Information Classes for NtQueryInformationFile
+//
typedef enum _FILE_INFORMATION_CLASS
{
FileDirectoryInformation = 1,
@@ -216,6 +248,9 @@ typedef enum _FILE_INFORMATION_CLASS
FileMaximumInformation
} FILE_INFORMATION_CLASS, *PFILE_INFORMATION_CLASS;
+//
+// File Information Classes for NtQueryInformationFileSystem
+//
typedef enum _FSINFOCLASS
{
FileFsVolumeInformation = 1,
@@ -229,8 +264,12 @@ typedef enum _FSINFOCLASS
FileFsDriverPathInformation,
FileFsMaximumInformation
} FS_INFORMATION_CLASS, *PFS_INFORMATION_CLASS;
+
#endif
+//
+// Device Node States
+//
typedef enum _PNP_DEVNODE_STATE
{
DeviceNodeUnspecified = 0x300,
@@ -257,9 +296,11 @@ typedef enum _PNP_DEVNODE_STATE
MaxDeviceNodeState = 0x315,
} PNP_DEVNODE_STATE;
-/* TYPES *********************************************************************/
-
#ifdef NTOS_MODE_USER
+
+//
+// File Information structures for NtQueryInformationFile
+//
typedef struct _FILE_BASIC_INFORMATION
{
LARGE_INTEGER CreationTime;
@@ -440,6 +481,9 @@ typedef struct _FILE_VALID_DATA_LENGTH_INFORMATION
LARGE_INTEGER ValidDataLength;
} FILE_VALID_DATA_LENGTH_INFORMATION, *PFILE_VALID_DATA_LENGTH_INFORMATION;
+//
+// File System Information structures for NtQueryInformationFile
+//
typedef struct _FILE_FS_DEVICE_INFORMATION
{
DEVICE_TYPE DeviceType;
@@ -477,6 +521,9 @@ typedef struct _FILE_FS_VOLUME_INFORMATION
WCHAR VolumeLabel[1];
} FILE_FS_VOLUME_INFORMATION, *PFILE_FS_VOLUME_INFORMATION;
+//
+// Pipe Structures for IOCTL_PIPE_XXX
+//
typedef struct _FILE_PIPE_WAIT_FOR_BUFFER
{
LARGE_INTEGER Timeout;
@@ -494,6 +541,9 @@ typedef struct _FILE_PIPE_PEEK_BUFFER
CHAR Data[1];
} FILE_PIPE_PEEK_BUFFER, *PFILE_PIPE_PEEK_BUFFER;
+//
+// I/O Status Block
+//
typedef struct _IO_STATUS_BLOCK
{
union
@@ -504,6 +554,9 @@ typedef struct _IO_STATUS_BLOCK
ULONG_PTR Information;
} IO_STATUS_BLOCK, *PIO_STATUS_BLOCK;
+//
+// I/O Error Log Structures
+//
typedef struct _IO_ERROR_LOG_PACKET
{
UCHAR MajorFunctionCode;
@@ -530,29 +583,37 @@ typedef struct _IO_ERROR_LOG_MESSAGE
ULONG DriverNameOffset;
IO_ERROR_LOG_PACKET EntryData;
} IO_ERROR_LOG_MESSAGE, *PIO_ERROR_LOG_MESSAGE;
+
#endif
+//
+// Parameters for NtCreateMailslotFile/NtCreateNamedPipeFile
+//
typedef struct _MAILSLOT_CREATE_PARAMETERS
{
- ULONG MailslotQuota;
- ULONG MaximumMessageSize;
- LARGE_INTEGER ReadTimeout;
- BOOLEAN TimeoutSpecified;
+ ULONG MailslotQuota;
+ ULONG MaximumMessageSize;
+ LARGE_INTEGER ReadTimeout;
+ BOOLEAN TimeoutSpecified;
} MAILSLOT_CREATE_PARAMETERS, *PMAILSLOT_CREATE_PARAMETERS;
typedef struct _NAMED_PIPE_CREATE_PARAMETERS
{
- ULONG NamedPipeType;
- ULONG ReadMode;
- ULONG CompletionMode;
- ULONG MaximumInstances;
- ULONG InboundQuota;
- ULONG OutboundQuota;
- LARGE_INTEGER DefaultTimeout;
- BOOLEAN TimeoutSpecified;
+ ULONG NamedPipeType;
+ ULONG ReadMode;
+ ULONG CompletionMode;
+ ULONG MaximumInstances;
+ ULONG InboundQuota;
+ ULONG OutboundQuota;
+ LARGE_INTEGER DefaultTimeout;
+ BOOLEAN TimeoutSpecified;
} NAMED_PIPE_CREATE_PARAMETERS, *PNAMED_PIPE_CREATE_PARAMETERS;
#ifndef NTOS_MODE_USER
+
+//
+// I/O Timer Object
+//
typedef struct _IO_TIMER
{
USHORT Type;
@@ -563,6 +624,9 @@ typedef struct _IO_TIMER
PDEVICE_OBJECT DeviceObject;
} IO_TIMER, *PIO_TIMER;
+//
+// Device Node
+//
typedef struct _DEVICE_NODE
{
struct _DEVICE_NODE *Parent;
@@ -626,6 +690,9 @@ typedef struct _DEVICE_NODE
ULONG DeletedChidren;
} DEVICE_NODE, *PDEVICE_NODE;
+//
+// Resource Aribtrer Entry
+//
typedef struct _PI_RESOURCE_ARBITER_ENTRY
{
LIST_ENTRY DeviceArbiterList;
@@ -639,7 +706,10 @@ typedef struct _PI_RESOURCE_ARBITER_ENTRY
UCHAR State;
UCHAR ResourcesChanged;
} PI_RESOURCE_ARBITER_ENTRY, *PPI_RESOURCE_ARBITER_ENTRY;
-
+
+//
+// Extended Device Object Extension Structure
+//
typedef struct _EXTENDED_DEVOBJ_EXTENSION
{
CSHORT Type;
@@ -656,6 +726,9 @@ typedef struct _EXTENDED_DEVOBJ_EXTENSION
struct _VPB *Vpb;
} EXTENDED_DEVOBJ_EXTENSION, *PEXTENDED_DEVOBJ_EXTENSION;
+//
+// Private Driver Extension Descriptor
+//
typedef struct _PRIVATE_DRIVER_EXTENSIONS
{
struct _PRIVATE_DRIVER_EXTENSIONS *Link;
@@ -663,6 +736,9 @@ typedef struct _PRIVATE_DRIVER_EXTENSIONS
CHAR Extension[1];
} PRIVATE_DRIVER_EXTENSIONS, *PPRIVATE_DRIVER_EXTENSIONS;
+//
+// Extended I/O Stack Location Structure
+//
#if !defined(_ALPHA_)
#include
#endif
@@ -910,22 +986,26 @@ typedef struct _EXTENDED_IO_STACK_LOCATION
#endif
#endif
-/* FUNCTION TYPES ************************************************************/
-
+//
+// APC Callback for NtCreateFile
+//
typedef VOID
(NTAPI *PIO_APC_ROUTINE)(
IN PVOID ApcContext,
IN PIO_STATUS_BLOCK IoStatusBlock,
IN ULONG Reserved);
-/* I/O CONTROL CODES *********************************************************/
-
#ifdef NTOS_MODE_USER
-/* Mailslots */
+
+//
+// Mailslot IOCTL Codes
+//
#define FSCTL_MAILSLOT_PEEK \
CTL_CODE(FILE_DEVICE_MAILSLOT, 0, METHOD_NEITHER, FILE_READ_DATA)
-/* Pipes */
+//
+// Pipe IOCTL Codes
+//
#define FSCTL_PIPE_ASSIGN_EVENT \
CTL_CODE(FILE_DEVICE_NAMED_PIPE, 0, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_PIPE_DISCONNECT \
@@ -955,7 +1035,9 @@ typedef VOID
#define FSCTL_PIPE_INTERNAL_READ_OVFLOW \
CTL_CODE(FILE_DEVICE_NAMED_PIPE, 2048, METHOD_BUFFERED, FILE_READ_DATA)
-/* Tapes */
+//
+// Tape IOCTL Codes
+//
#define IOCTL_TAPE_ERASE \
CTL_CODE(FILE_DEVICE_TAPE, 0, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
#define IOCTL_TAPE_PREPARE \
@@ -979,6 +1061,6 @@ typedef VOID
#define IOCTL_TAPE_CREATE_PARTITION \
CTL_CODE(FILE_DEVICE_TAPE, 10, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
-#endif
-#endif
+#endif // NTOS_MODE_USER
+#endif
diff --git a/reactos/include/ndk/kdfuncs.h b/reactos/include/ndk/kdfuncs.h
index 295662d6306..9b846721158 100644
--- a/reactos/include/ndk/kdfuncs.h
+++ b/reactos/include/ndk/kdfuncs.h
@@ -1,19 +1,32 @@
-/*
- * PROJECT: ReactOS Native Headers
- * FILE: include/ndk/kdfuncs.h
- * PURPOSE: Prototypes for Kernel Debugger Functions 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:
+
+ kdfuncs.h
+
+Abstract:
+
+ Function definitions for the Kernel Debugger.
+
+Author:
+
+ Alex Ionescu (alex.ionescu@reactos.com) 06-Oct-2004
+
+--*/
+
#ifndef _KDFUNCS_H
#define _KDFUNCS_H
-/* DEPENDENCIES **************************************************************/
+//
+// Dependencies
+//
#include "kdtypes.h"
-/* PROTOTYPES ****************************************************************/
-
+//
+// Port Functions
+//
UCHAR
NTAPI
KdPollBreakIn(VOID);
diff --git a/reactos/include/ndk/kdtypes.h b/reactos/include/ndk/kdtypes.h
index fd219b531f0..d6f0c5c1cf9 100644
--- a/reactos/include/ndk/kdtypes.h
+++ b/reactos/include/ndk/kdtypes.h
@@ -1,25 +1,40 @@
-/*
- * PROJECT: ReactOS Native Headers
- * FILE: include/ndk/kdtypes.h
- * PURPOSE: Definitions for Kernel Debugger 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:
+
+ kdtypes.h
+
+Abstract:
+
+ Type definitions for the Kernel Debugger.
+
+Author:
+
+ Alex Ionescu (alex.ionescu@reactos.com) 06-Oct-2004
+
+--*/
+
#ifndef _KDTYPES_H
#define _KDTYPES_H
-/* DEPENDENCIES **************************************************************/
+//
+// Dependencies
+//
-/* EXPORTED DATA *************************************************************/
-
-/* CONSTANTS *****************************************************************/
+//
+// Debug Filter Levels
+//
#define DPFLTR_ERROR_LEVEL 0
#define DPFLTR_WARNING_LEVEL 1
#define DPFLTR_TRACE_LEVEL 2
#define DPFLTR_INFO_LEVEL 3
#define DPFLTR_MASK 0x80000000
+//
+// Debug Status Codes
+//
#define DBG_STATUS_CONTROL_C 1
#define DBG_STATUS_SYSRQ 2
#define DBG_STATUS_BUGCHECK_FIRST 3
@@ -28,10 +43,15 @@
#define DBG_STATUS_DEBUG_CONTROL 6
#define DBG_STATUS_WORKER 7
+//
+// DebugService Control Types
+//
#define BREAKPOINT_PRINT 1
#define BREAKPOINT_PROMPT 2
-/* ENUMERATIONS **************************************************************/
+//
+// Debug Control Codes for NtSystemDebugcontrol
+//
typedef enum _DEBUG_CONTROL_CODE
{
DebugGetTraceInformation = 1,
@@ -43,8 +63,9 @@ typedef enum _DEBUG_CONTROL_CODE
DebugDbgLoadSymbols
} DEBUG_CONTROL_CODE;
-/* TYPES *********************************************************************/
-
+//
+// Kernel Debugger Port Definition
+//
typedef struct _KD_PORT_INFORMATION
{
ULONG ComPort;
@@ -52,4 +73,4 @@ typedef struct _KD_PORT_INFORMATION
ULONG BaseAddress;
} KD_PORT_INFORMATION, *PKD_PORT_INFORMATION;
-#endif
+#endif // _KDTYPES_H
diff --git a/reactos/include/ndk/kefuncs.h b/reactos/include/ndk/kefuncs.h
index e457afd737c..5eaa19416a2 100644
--- a/reactos/include/ndk/kefuncs.h
+++ b/reactos/include/ndk/kefuncs.h
@@ -1,18 +1,87 @@
-/*
- * PROJECT: ReactOS Native Headers
- * FILE: include/ndk/kefuncs.h
- * PURPOSE: Prototypes for Kernel Functions 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:
+
+ kefuncs.h
+
+Abstract:
+
+ Functions definitions for the Kernel services.
+
+Author:
+
+ Alex Ionescu (alex.ionescu@reactos.com) 06-Oct-2004
+
+--*/
+
#ifndef _KEFUNCS_H
#define _KEFUNCS_H
-/* DEPENDENCIES **************************************************************/
+//
+// Dependencies
+//
#include "ketypes.h"
-/* PROTOTYPES ****************************************************************/
+//
+// APC Functions
+//
+VOID
+NTAPI
+KeInitializeApc(
+ IN PKAPC Apc,
+ IN PKTHREAD Thread,
+ IN KAPC_ENVIRONMENT TargetEnvironment,
+ IN PKKERNEL_ROUTINE KernelRoutine,
+ IN PKRUNDOWN_ROUTINE RundownRoutine OPTIONAL,
+ IN PKNORMAL_ROUTINE NormalRoutine,
+ IN KPROCESSOR_MODE Mode,
+ IN PVOID Context
+);
+
+VOID
+NTAPI
+KiDeliverApc(
+ IN KPROCESSOR_MODE PreviousMode,
+ IN PVOID Reserved,
+ IN PKTRAP_FRAME TrapFrame
+);
+
+//
+// Process/Thread Functions
+//
+VOID
+NTAPI
+KeTerminateThread(
+ IN KPRIORITY Increment
+);
+
+BOOLEAN
+NTAPI
+KeIsAttachedProcess(
+ VOID
+);
+
+VOID
+NTAPI
+KeSetEventBoostPriority(
+ IN PKEVENT Event,
+ IN PKTHREAD *Thread OPTIONAL
+);
+
+NTSTATUS
+NTAPI
+KeSetAffinityThread(
+ PKTHREAD Thread,
+ KAFFINITY Affinity
+);
+
+PKPROCESS
+NTAPI
+KeGetCurrentProcess(
+ VOID
+);
BOOLEAN
NTAPI
@@ -24,23 +93,9 @@ KeAddSystemServiceTable(
ULONG Index
);
-VOID
-NTAPI
-KeInitializeApc(
- IN PKAPC Apc,
- IN PKTHREAD Thread,
- IN KAPC_ENVIRONMENT TargetEnvironment,
- IN PKKERNEL_ROUTINE KernelRoutine,
- IN PKRUNDOWN_ROUTINE RundownRoutine OPTIONAL,
- IN PKNORMAL_ROUTINE NormalRoutine,
- IN KPROCESSOR_MODE Mode,
- IN PVOID Context
-);
-
-VOID
-NTAPI
-KeEnterKernelDebugger(VOID);
-
+//
+// Spinlock Functions
+//
VOID
FASTCALL
KiAcquireSpinLock(
@@ -53,115 +108,9 @@ KiReleaseSpinLock(
PKSPIN_LOCK SpinLock
);
-VOID
-NTAPI
-KiDeliverApc(
- IN KPROCESSOR_MODE PreviousMode,
- IN PVOID Reserved,
- IN PKTRAP_FRAME TrapFrame
-);
-
-VOID
-NTAPI
-KiDispatchInterrupt(VOID);
-
-VOID
-NTAPI
-KeTerminateThread(
- IN KPRIORITY Increment
-);
-
-BOOLEAN
-NTAPI
-KeIsAttachedProcess(VOID);
-
-BOOLEAN
-NTAPI
-KeIsExecutingDpc(
- VOID
-);
-
-VOID
-NTAPI
-KeSetEventBoostPriority(
- IN PKEVENT Event,
- IN PKTHREAD *Thread OPTIONAL
-);
-
-PCONFIGURATION_COMPONENT_DATA
-NTAPI
-KeFindConfigurationNextEntry(
- IN PCONFIGURATION_COMPONENT_DATA Child,
- IN CONFIGURATION_CLASS Class,
- IN CONFIGURATION_TYPE Type,
- IN PULONG ComponentKey OPTIONAL,
- IN PCONFIGURATION_COMPONENT_DATA *NextLink
-);
-
-PCONFIGURATION_COMPONENT_DATA
-NTAPI
-KeFindConfigurationEntry(
- IN PCONFIGURATION_COMPONENT_DATA Child,
- IN CONFIGURATION_CLASS Class,
- IN CONFIGURATION_TYPE Type,
- IN PULONG ComponentKey OPTIONAL
-);
-
-VOID
-NTAPI
-KeFlushEntireTb(
- IN BOOLEAN Unknown,
- IN BOOLEAN CurrentCpuOnly
-);
-
-VOID
-NTAPI
-KiCoprocessorError(
- VOID
-);
-
-VOID
-NTAPI
-KiUnexpectedInterrupt(
- VOID
-);
-
-VOID
-NTAPI
-KeSetDmaIoCoherency(
- IN ULONG Coherency
-);
-
-VOID
-NTAPI
-KeSetProfileIrql(
- IN KIRQL ProfileIrql
-);
-
-NTSTATUS
-NTAPI
-KeSetAffinityThread(
- PKTHREAD Thread,
- KAFFINITY Affinity
-);
-
-NTSTATUS
-NTAPI
-KeUserModeCallback(
- IN ULONG FunctionID,
- IN PVOID InputBuffer,
- IN ULONG InputLength,
- OUT PVOID *OutputBuffer,
- OUT PULONG OutputLength
-);
-
-VOID
-NTAPI
-KeSetTimeIncrement(
- IN ULONG MaxIncrement,
- IN ULONG MinIncrement
-);
-
+//
+// Interrupt Functions
+//
VOID
NTAPI
KeInitializeInterrupt(
@@ -190,12 +139,74 @@ KeDisconnectInterrupt(
PKINTERRUPT InterruptObject
);
-PKPROCESS
+VOID
NTAPI
-KeGetCurrentProcess(
+KiDispatchInterrupt(
VOID
);
+VOID
+NTAPI
+KiCoprocessorError(
+ VOID
+);
+
+VOID
+NTAPI
+KiUnexpectedInterrupt(
+ VOID
+);
+
+VOID
+NTAPI
+KeEnterKernelDebugger(
+ VOID
+);
+
+BOOLEAN
+NTAPI
+KeIsExecutingDpc(
+ VOID
+);
+
+//
+// ARC Configuration Functions
+//
+PCONFIGURATION_COMPONENT_DATA
+NTAPI
+KeFindConfigurationNextEntry(
+ IN PCONFIGURATION_COMPONENT_DATA Child,
+ IN CONFIGURATION_CLASS Class,
+ IN CONFIGURATION_TYPE Type,
+ IN PULONG ComponentKey OPTIONAL,
+ IN PCONFIGURATION_COMPONENT_DATA *NextLink
+);
+
+PCONFIGURATION_COMPONENT_DATA
+NTAPI
+KeFindConfigurationEntry(
+ IN PCONFIGURATION_COMPONENT_DATA Child,
+ IN CONFIGURATION_CLASS Class,
+ IN CONFIGURATION_TYPE Type,
+ IN PULONG ComponentKey OPTIONAL
+);
+
+//
+// Low-level Hardware/CPU Control Functions
+//
+VOID
+NTAPI
+KeFlushEntireTb(
+ IN BOOLEAN Unknown,
+ IN BOOLEAN CurrentCpuOnly
+);
+
+VOID
+NTAPI
+KeSetDmaIoCoherency(
+ IN ULONG Coherency
+);
+
VOID
KeSetGdtSelector(
ULONG Entry,
@@ -203,10 +214,36 @@ KeSetGdtSelector(
ULONG Value2
);
+VOID
+NTAPI
+KeSetProfileIrql(
+ IN KIRQL ProfileIrql
+);
+
+VOID
+NTAPI
+KeSetTimeIncrement(
+ IN ULONG MaxIncrement,
+ IN ULONG MinIncrement
+);
+
+//
+// Misc. Functions
+//
+NTSTATUS
+NTAPI
+KeUserModeCallback(
+ IN ULONG FunctionID,
+ IN PVOID InputBuffer,
+ IN ULONG InputLength,
+ OUT PVOID *OutputBuffer,
+ OUT PULONG OutputLength
+);
+
NTSTATUS
NTAPI
KeRaiseUserException(
IN NTSTATUS ExceptionCode
- );
+);
#endif
diff --git a/reactos/include/ndk/ketypes.h b/reactos/include/ndk/ketypes.h
index 2f89577550e..50a197aad3a 100644
--- a/reactos/include/ndk/ketypes.h
+++ b/reactos/include/ndk/ketypes.h
@@ -1,51 +1,94 @@
-/*
- * PROJECT: ReactOS Native Headers
- * FILE: include/ndk/ketypes.h
- * PURPOSE: Definitions for Kernel 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:
+
+ lpctypes.h
+
+Abstract:
+
+ Type definitions for the Loader.
+
+Author:
+
+ Alex Ionescu (alex.ionescu@reactos.com) 06-Oct-2004
+
+--*/
+
#ifndef _KETYPES_H
#define _KETYPES_H
-/* DEPENDENCIES **************************************************************/
+//
+// Dependencies
+//
#ifndef NTOS_MODE_USER
#include
#include "arch/ketypes.h"
#endif
-/* CONSTANTS *****************************************************************/
-#define SSDT_MAX_ENTRIES 4
-#define CONTEXT_DEBUGGER (CONTEXT_FULL | CONTEXT_FLOATING_POINT)
+//
+// Context Record Flags
+//
+#define CONTEXT_DEBUGGER (CONTEXT_FULL | CONTEXT_FLOATING_POINT)
+
+//
+// Maximum System Descriptor Table Entries
+//
+#define SSDT_MAX_ENTRIES 4
#ifdef NTOS_MODE_USER
-#define SharedUserData ((KUSER_SHARED_DATA * CONST) USER_SHARED_DATA)
-#define MAX_WOW64_SHARED_ENTRIES 16
-#define PROCESSOR_FEATURE_MAX 64
-#endif
-/* ENUMERATIONS **************************************************************/
+//
+// KPROCESSOR_MODE Type
+//
+typedef CCHAR KPROCESSOR_MODE;
-#ifdef NTOS_MODE_USER
+//
+// Dereferencable pointer to KUSER_SHARED_DATA in User-Mode
+//
+#define SharedUserData ((KUSER_SHARED_DATA *CONST)USER_SHARED_DATA)
+
+//
+// Maximum WOW64 Entries in KUSER_SHARED_DATA
+//
+#define MAX_WOW64_SHARED_ENTRIES 16
+
+//
+// Maximum Processor Features supported in KUSER_SHARED_DATA
+//
+#define PROCESSOR_FEATURE_MAX 64
+
+//
+// Event Types
+//
typedef enum _EVENT_TYPE
{
NotificationEvent,
SynchronizationEvent
} EVENT_TYPE;
+//
+// Timer Types
+//
typedef enum _TIMER_TYPE
{
NotificationTimer,
SynchronizationTimer
} TIMER_TYPE;
+//
+// Wait Types
+//
typedef enum _WAIT_TYPE
{
WaitAll,
WaitAny
} WAIT_TYPE;
+//
+// Processor Execution Modes
+//
typedef enum _MODE
{
KernelMode,
@@ -53,6 +96,9 @@ typedef enum _MODE
MaximumMode
} MODE;
+//
+// Wait Reasons
+//
typedef enum _KWAIT_REASON
{
Executive,
@@ -92,6 +138,9 @@ typedef enum _KWAIT_REASON
MaximumWaitReason
} KWAIT_REASON;
+//
+// Profiling Sources
+//
typedef enum _KPROFILE_SOURCE
{
ProfileTime,
@@ -121,6 +170,9 @@ typedef enum _KPROFILE_SOURCE
ProfileMaximum
} KPROFILE_SOURCE;
+//
+// NT Product and Architecture Types
+//
typedef enum _NT_PRODUCT_TYPE
{
NtProductWinNt = 1,
@@ -134,8 +186,12 @@ typedef enum _ALTERNATIVE_ARCHITECTURE_TYPE
NEC98x86,
EndAlternatives
} ALTERNATIVE_ARCHITECTURE_TYPE;
+
#endif
+//
+// Thread States
+//
typedef enum _KTHREAD_STATE
{
Initialized,
@@ -148,6 +204,9 @@ typedef enum _KTHREAD_STATE
DeferredReady,
} KTHREAD_STATE, *PKTHREAD_STATE;
+//
+// Process States
+//
typedef enum _KPROCESS_STATE
{
ProcessInMemory,
@@ -155,27 +214,31 @@ typedef enum _KPROCESS_STATE
ProcessInTransition,
} KPROCESS_STATE, *PKPROCESS_STATE;
-/* FUNCTION TYPES ************************************************************/
-
#ifdef NTOS_MODE_USER
+
+//
+// APC Normal Routine
+//
typedef VOID
(NTAPI *PKNORMAL_ROUTINE)(
- IN PVOID NormalContext,
- IN PVOID SystemArgument1,
- IN PVOID SystemArgument2);
+ IN PVOID NormalContext,
+ IN PVOID SystemArgument1,
+ IN PVOID SystemArgument2
+);
+//
+// Timer Routine
+//
typedef VOID
(NTAPI *PTIMER_APC_ROUTINE)(
- IN PVOID TimerContext,
- IN ULONG TimerLowValue,
- IN LONG TimerHighValue);
-#endif
-
-/* TYPES *********************************************************************/
-
-#ifdef NTOS_MODE_USER
-typedef CCHAR KPROCESSOR_MODE;
+ IN PVOID TimerContext,
+ IN ULONG TimerLowValue,
+ IN LONG TimerHighValue
+);
+//
+// System Time Structure
+//
typedef struct _KSYSTEM_TIME
{
ULONG LowPart;
@@ -183,6 +246,9 @@ typedef struct _KSYSTEM_TIME
LONG High2Time;
} KSYSTEM_TIME, *PKSYSTEM_TIME;
+//
+// Shared Kernel User Data
+//
typedef struct _KUSER_SHARED_DATA
{
ULONG TickCountLowDeprecated;
@@ -231,9 +297,12 @@ typedef struct _KUSER_SHARED_DATA
ULONG Wow64SharedInformation[MAX_WOW64_SHARED_ENTRIES];
ULONG UserModeGlobalLogging;
} KUSER_SHARED_DATA, *PKUSER_SHARED_DATA;
-#endif
-#ifndef NTOS_MODE_USER
+#else
+
+//
+// ARC Component Data
+//
typedef struct _CONFIGURATION_COMPONENT_DATA
{
struct _CONFIGURATION_COMPONENT_DATA *Parent;
@@ -242,6 +311,9 @@ typedef struct _CONFIGURATION_COMPONENT_DATA
CONFIGURATION_COMPONENT Component;
} CONFIGURATION_COMPONENT_DATA, *PCONFIGURATION_COMPONENT_DATA;
+//
+// APC Environment Types
+//
typedef enum _KAPC_ENVIRONMENT
{
OriginalApcEnvironment,
@@ -249,20 +321,26 @@ typedef enum _KAPC_ENVIRONMENT
CurrentApcEnvironment
} KAPC_ENVIRONMENT;
+//
+// Kernel Memory Node (FIXME: mmtypes?
+//
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;
+ 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;
+//
+// Kernel Profile Object (FIXME: Fix with new defs)
+//
typedef struct _KPROFILE
{
CSHORT Type;
@@ -278,6 +356,9 @@ typedef struct _KPROFILE
struct _KPROCESS *Process;
} KPROFILE, *PKPROFILE;
+//
+// Kernel Interrupt Object (FIXME: Verify)
+//
typedef struct _KINTERRUPT
{
CSHORT Type;
@@ -302,6 +383,9 @@ typedef struct _KINTERRUPT
ULONG DispatchCode[106];
} KINTERRUPT, *PKINTERRUPT;
+//
+// Kernel Event Pair Object
+//
typedef struct _KEVENT_PAIR
{
CSHORT Type;
@@ -310,6 +394,9 @@ typedef struct _KEVENT_PAIR
KEVENT HighEvent;
} KEVENT_PAIR, *PKEVENT_PAIR;
+//
+// Kernel No Execute Options
+//
typedef struct _KEXECUTE_OPTIONS
{
UCHAR ExecuteDisable:1;
@@ -321,6 +408,9 @@ typedef struct _KEXECUTE_OPTIONS
UCHAR Spare:2;
} KEXECUTE_OPTIONS, *PKEXECUTE_OPTIONS;
+//
+// Kernel Object Types
+//
typedef enum _KOBJECTS
{
EventNotificationObject = 0,
@@ -351,8 +441,10 @@ typedef enum _KOBJECTS
MaximumKernelObject = 25
} KOBJECTS;
+//
+// Kernel Thread (KTHREAD)
+//
#include
-
typedef struct _KTHREAD
{
DISPATCHER_HEADER DispatcherHeader; /* 00 */
@@ -528,9 +620,11 @@ typedef struct _KTHREAD
LIST_ENTRY ThreadListEntry; /* 1A8 */
PVOID SListFaultAddress; /* 1B0 */
} KTHREAD; /* sizeof: 1B4 */
-
#include
+//
+// Kernel Process (KPROCESS)
+//
typedef struct _KPROCESS
{
DISPATCHER_HEADER Header; /* 000 */
@@ -575,6 +669,9 @@ typedef struct _KPROCESS
LIST_ENTRY ProcessListEntry; /* 070 */
} KPROCESS;
+//
+// System Service Table Descriptor
+//
typedef struct _KSERVICE_TABLE_DESCRIPTOR
{
PULONG_PTR Base;
@@ -585,21 +682,34 @@ typedef struct _KSERVICE_TABLE_DESCRIPTOR
#endif
PUCHAR Number;
} KSERVICE_TABLE_DESCRIPTOR, *PKSERVICE_TABLE_DESCRIPTOR;
-#endif /* !NTOS_MODE_USER */
-/* EXPORTED DATA *************************************************************/
-#ifndef NTOS_MODE_USER
-extern CHAR NTSYSAPI KeNumberProcessors;
+//
+// Exported Loader Parameter Block
+//
extern LOADER_PARAMETER_BLOCK NTSYSAPI KeLoaderBlock;
-extern ULONG NTSYSAPI KeDcacheFlushCount;
-extern ULONG NTSYSAPI KeIcacheFlushCount;
+
+//
+// Exported Hardware Data
+//
extern KAFFINITY NTSYSAPI KeActiveProcessors;
-extern ULONG NTSYSAPI KiDmaIoCoherency; /* RISC Architectures only */
+extern CHAR NTSYSAPI KeNumberProcessors;
+extern ULONG NTSYSAPI KiDmaIoCoherency;
extern ULONG NTSYSAPI KeMaximumIncrement;
extern ULONG NTSYSAPI KeMinimumIncrement;
+extern ULONG NTSYSAPI KeDcacheFlushCount;
+extern ULONG NTSYSAPI KeIcacheFlushCount;
+
+//
+// Exported NT Build Number (FIXME: move?)
+//
extern ULONG NTSYSAPI NtBuildNumber;
+
+//
+// Exported System Service Descriptor Tables
+//
extern KSERVICE_TABLE_DESCRIPTOR NTSYSAPI KeServiceDescriptorTable[SSDT_MAX_ENTRIES];
extern KSERVICE_TABLE_DESCRIPTOR NTSYSAPI KeServiceDescriptorTableShadow[SSDT_MAX_ENTRIES];
-#endif
-#endif
+#endif // !NTOS_MODE_USER
+
+#endif // _KETYPES_H
diff --git a/reactos/include/ndk/ldrfuncs.h b/reactos/include/ndk/ldrfuncs.h
index 6776c00d7c1..e8b899eac2f 100644
--- a/reactos/include/ndk/ldrfuncs.h
+++ b/reactos/include/ndk/ldrfuncs.h
@@ -1,30 +1,40 @@
-/*
- * PROJECT: ReactOS Native Headers
- * FILE: include/ndk/ldrfuncs.h
- * PURPOSE: Defintions for Loader Functions 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:
+
+ ldrfuncs.h
+
+Abstract:
+
+ Functions definitions for the Loader.
+
+Author:
+
+ Alex Ionescu (alex.ionescu@reactos.com) 06-Oct-2004
+
+--*/
+
#ifndef _LDRFUNCS_H
#define _LDRFUNCS_H
-/* DEPENDENCIES **************************************************************/
+//
+// Dependencies
+//
#include "ldrtypes.h"
-/* FIXME: this needs be implemented in the w32api ddk */
#if defined(_MSC_VER) && !defined(NTOS_MODE_USER)
#include
#endif
-/* FUNCTION TYPES ************************************************************/
-
-/* PROTOTYPES ****************************************************************/
-
+//
+// Resource Functions
+//
NTSTATUS
NTAPI
LdrAccessResource(
- IN PVOID BaseAddress,
- IN PIMAGE_RESOURCE_DATA_ENTRY ResourceDataEntry,
+ IN PVOID BaseAddress,
+ IN PIMAGE_RESOURCE_DATA_ENTRY ResourceDataEntry,
OUT PVOID *Resource OPTIONAL,
OUT PULONG Size OPTIONAL
);
@@ -32,9 +42,9 @@ LdrAccessResource(
NTSTATUS
NTAPI
LdrFindResource_U(
- IN PVOID BaseAddress,
- IN PLDR_RESOURCE_INFO ResourceInfo,
- IN ULONG Level,
+ IN PVOID BaseAddress,
+ IN PLDR_RESOURCE_INFO ResourceInfo,
+ IN ULONG Level,
OUT PIMAGE_RESOURCE_DATA_ENTRY *ResourceDataEntry
);
@@ -47,6 +57,9 @@ LdrFindResourceDirectory_U(
OUT PIMAGE_RESOURCE_DIRECTORY *ResourceDirectory
);
+//
+// Misc. Functions
+//
NTSTATUS
NTAPI
LdrGetProcedureAddress(
diff --git a/reactos/include/ndk/ldrtypes.h b/reactos/include/ndk/ldrtypes.h
index 5f74d5da347..664482a0a66 100644
--- a/reactos/include/ndk/ldrtypes.h
+++ b/reactos/include/ndk/ldrtypes.h
@@ -1,55 +1,72 @@
-/*
- * PROJECT: ReactOS Native Headers
- * FILE: include/ndk/ldrtypes.h
- * PURPOSE: Definitions for Loader 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:
+
+ ldrtypes.h
+
+Abstract:
+
+ Type definitions for the Loader.
+
+Author:
+
+ Alex Ionescu (alex.ionescu@reactos.com) 06-Oct-2004
+
+--*/
+
#ifndef _LDRTYPES_H
#define _LDRTYPES_H
-/* DEPENDENCIES **************************************************************/
+//
+// Dependencies
+//
-/* EXPORTED DATA *************************************************************/
+//
+// Resource Type Levels
+//
+#define RESOURCE_TYPE_LEVEL 0
+#define RESOURCE_NAME_LEVEL 1
+#define RESOURCE_LANGUAGE_LEVEL 2
+#define RESOURCE_DATA_LEVEL 3
-/* CONSTANTS *****************************************************************/
-#define RESOURCE_TYPE_LEVEL 0
-#define RESOURCE_NAME_LEVEL 1
-#define RESOURCE_LANGUAGE_LEVEL 2
-#define RESOURCE_DATA_LEVEL 3
+//
+// Loader Data Table Entry Flags
+//
+#define LDRP_STATIC_LINK 0x00000002
+#define LDRP_IMAGE_DLL 0x00000004
+#define LDRP_LOAD_IN_PROGRESS 0x00001000
+#define LDRP_UNLOAD_IN_PROGRESS 0x00002000
+#define LDRP_ENTRY_PROCESSED 0x00004000
+#define LDRP_ENTRY_INSERTED 0x00008000
+#define LDRP_CURRENT_LOAD 0x00010000
+#define LDRP_FAILED_BUILTIN_LOAD 0x00020000
+#define LDRP_DONT_CALL_FOR_THREADS 0x00040000
+#define LDRP_PROCESS_ATTACH_CALLED 0x00080000
+#define LDRP_DEBUG_SYMBOLS_LOADED 0x00100000
+#define LDRP_IMAGE_NOT_AT_BASE 0x00200000
+#define LDRP_COR_IMAGE 0x00400000
+#define LDR_COR_OWNS_UNMAP 0x00800000
+#define LDRP_REDIRECTED 0x10000000
-/* LDR_DATA_TABLE_ENTRY Flags */
-#define LDRP_STATIC_LINK 0x00000002
-#define LDRP_IMAGE_DLL 0x00000004
-#define LDRP_LOAD_IN_PROGRESS 0x00001000
-#define LDRP_UNLOAD_IN_PROGRESS 0x00002000
-#define LDRP_ENTRY_PROCESSED 0x00004000
-#define LDRP_ENTRY_INSERTED 0x00008000
-#define LDRP_CURRENT_LOAD 0x00010000
-#define LDRP_FAILED_BUILTIN_LOAD 0x00020000
-#define LDRP_DONT_CALL_FOR_THREADS 0x00040000
-#define LDRP_PROCESS_ATTACH_CALLED 0x00080000
-#define LDRP_DEBUG_SYMBOLS_LOADED 0x00100000
-#define LDRP_IMAGE_NOT_AT_BASE 0x00200000
-#define LDRP_COR_IMAGE 0x00400000
-#define LDR_COR_OWNS_UNMAP 0x00800000
-#define LDRP_REDIRECTED 0x10000000
-
-/* ENUMERATIONS **************************************************************/
-
-/* TYPES *********************************************************************/
+//
+// Loader Data stored in the PEB
+//
typedef struct _PEB_LDR_DATA
{
- ULONG Length;
- BOOLEAN Initialized;
- PVOID SsHandle;
- LIST_ENTRY InLoadOrderModuleList;
- LIST_ENTRY InMemoryOrderModuleList;
- LIST_ENTRY InInitializationOrderModuleList;
- PVOID EntryInProgress;
+ ULONG Length;
+ BOOLEAN Initialized;
+ PVOID SsHandle;
+ LIST_ENTRY InLoadOrderModuleList;
+ LIST_ENTRY InMemoryOrderModuleList;
+ LIST_ENTRY InInitializationOrderModuleList;
+ PVOID EntryInProgress;
} PEB_LDR_DATA, *PPEB_LDR_DATA;
+//
+// Loader Data Table Entry
+//
typedef struct _LDR_DATA_TABLE_ENTRY
{
LIST_ENTRY InLoadOrderModuleList;
@@ -78,6 +95,9 @@ typedef struct _LDR_DATA_TABLE_ENTRY
PVOID PatchInformation;
} LDR_DATA_TABLE_ENTRY, *PLDR_DATA_TABLE_ENTRY;
+//
+// Loader Resource Information
+//
typedef struct _LDR_RESOURCE_INFO
{
ULONG Type;
diff --git a/reactos/include/ndk/lpctypes.h b/reactos/include/ndk/lpctypes.h
index 453b48f2e78..78f9be2cd79 100644
--- a/reactos/include/ndk/lpctypes.h
+++ b/reactos/include/ndk/lpctypes.h
@@ -1,20 +1,36 @@
-/*
- * PROJECT: ReactOS Native Headers
- * FILE: include/ndk/lpctypes.h
- * PURPOSE: Definitions for Local Procedure Call 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:
+
+ lpctypes.h
+
+Abstract:
+
+ Type definitions for the Loader.
+
+Author:
+
+ Alex Ionescu (alex.ionescu@reactos.com) 06-Oct-2004
+
+--*/
+
#ifndef _LPCTYPES_H
#define _LPCTYPES_H
-/* DEPENDENCIES **************************************************************/
+//
+// Dependencies
+//
-/* EXPORTED DATA *************************************************************/
-
-/* ENUMERATIONS **************************************************************/
+//
+// Maximum message size that can be sent through an LPC Port without a section
+//
+#define PORT_MAXIMUM_MESSAGE_LENGTH 256
+//
+// LPC Message Types
+//
typedef enum _LPC_TYPE
{
LPC_NEW_MESSAGE,
@@ -32,16 +48,20 @@ typedef enum _LPC_TYPE
LPC_MAXIMUM
} LPC_TYPE;
+//
+// Information Classes for NtQueryInformationPort
+//
typedef enum _PORT_INFORMATION_CLASS
{
PortNoInformation
} PORT_INFORMATION_CLASS;
-/* TYPES *********************************************************************/
-
#ifdef NTOS_MODE_USER
-#if defined(USE_LPC6432)
+//
+// Portable LPC Types for 32/64-bit compatibility
+//
+#ifdef USE_LPC6432
#define LPC_CLIENT_ID CLIENT_ID64
#define LPC_SIZE_T ULONGLONG
#define LPC_PVOID ULONGLONG
@@ -53,6 +73,9 @@ typedef enum _PORT_INFORMATION_CLASS
#define LPC_HANDLE HANDLE
#endif
+//
+// LPC Port Message
+//
typedef struct _PORT_MESSAGE
{
union
@@ -86,6 +109,9 @@ typedef struct _PORT_MESSAGE
};
} PORT_MESSAGE, *PPORT_MESSAGE;
+//
+// Local and Remove Port Views
+//
typedef struct _PORT_VIEW
{
ULONG Length;
@@ -103,6 +129,9 @@ typedef struct _REMOTE_PORT_VIEW
LPC_PVOID ViewBase;
} REMOTE_PORT_VIEW, *PREMOTE_PORT_VIEW;
+//
+// LPC Kernel-Mode Message Structures defined for size only
+//
typedef struct _LPCP_MESSAGE
{
UCHAR Data[0x14];
@@ -114,9 +143,11 @@ typedef struct _LPCP_CONNECTION_MESSAGE
UCHAR Data[0x2C];
} LPCP_CONNECTION_MESSAGE;
-/* Kernel-Mode Structures */
#else
+//
+// LPC Paged and Non-Paged Port Queues
+//
typedef struct _LPCP_NONPAGED_PORT_QUEUE
{
KSEMAPHORE Semaphore;
@@ -130,6 +161,9 @@ typedef struct _LPCP_PORT_QUEUE
LIST_ENTRY ReceiveHead;
} LPCP_PORT_QUEUE, *PLPCP_PORT_QUEUE;
+//
+// LPC Port Object
+//
typedef struct _LPCP_PORT_OBJECT
{
ULONG Length;
@@ -150,6 +184,9 @@ typedef struct _LPCP_PORT_OBJECT
LIST_ENTRY LpcDataInfoChainHead;
} LPCP_PORT_OBJECT, *PLPCP_PORT_OBJECT;
+//
+// LPC Kernel-Mode Message Structures
+//
typedef struct _LPCP_MESSAGE
{
union
@@ -174,8 +211,12 @@ typedef struct _LPCP_CONNECTION_MESSAGE
PVOID SectionToMap;
REMOTE_PORT_VIEW ServerView;
} LPCP_CONNECTION_MESSAGE, *PLPCP_CONNECTION_MESSAGE;
+
#endif
+//
+// Hard Error LPC Message (FIXME: should go in extypes.h?)
+//
typedef struct _HARDERROR_MSG
{
PORT_MESSAGE h;
@@ -188,28 +229,36 @@ typedef struct _HARDERROR_MSG
ULONG Parameters[MAXIMUM_HARDERROR_PARAMETERS];
} HARDERROR_MSG, *PHARDERROR_MSG;
+//
+// Client Died LPC Message (FIXME: should go in pstypes.h?)
+//
typedef struct _CLIENT_DIED_MSG
{
PORT_MESSAGE h;
LARGE_INTEGER CreateTime;
} CLIENT_DIED_MSG, *PCLIENT_DIED_MSG;
-/* CONSTANTS *****************************************************************/
-
-#define PORT_MAXIMUM_MESSAGE_LENGTH 256
-
+//
+// Maximum total Kernel-Mode LPC Message Structure Size
+//
#define LPCP_MAX_MESSAGE_SIZE \
ROUND_UP(PORT_MAXIMUM_MESSAGE_LENGTH + \
sizeof(LPCP_MESSAGE) + \
sizeof(LPCP_CONNECTION_MESSAGE), 16)
+//
+// Maximum actual LPC Message Length
+//
#define LPC_MAX_MESSAGE_LENGTH \
(LPCP_MAX_MESSAGE_SIZE - \
FIELD_OFFSET(LPCP_MESSAGE, Request))
+//
+// Maximum actual size of LPC Message Data
+//
#define LPC_MAX_DATA_LENGTH \
(LPC_MAX_MESSAGE_LENGTH - \
sizeof(PORT_MESSAGE) - \
sizeof(LPCP_CONNECTION_MESSAGE))
-#endif
+#endif // _LPCTYPES_H
diff --git a/reactos/include/ndk/mmfuncs.h b/reactos/include/ndk/mmfuncs.h
index 79302221691..596cc0bdeda 100644
--- a/reactos/include/ndk/mmfuncs.h
+++ b/reactos/include/ndk/mmfuncs.h
@@ -1,18 +1,31 @@
-/*
- * PROJECT: ReactOS Native Headers
- * FILE: include/ndk/halfuncs.h
- * PURPOSE: Prototypes for exported HAL Functions 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:
+
+ mmfuncs.h
+
+Abstract:
+
+ Functions definitions for the Memory Manager.
+
+Author:
+
+ Alex Ionescu (alex.ionescu@reactos.com) 06-Oct-2004
+
+--*/
+
#ifndef _MMFUNCS_H
#define _MMFUNCS_H
-/* DEPENDENCIES **************************************************************/
+//
+// Dependencies
+//
-
-/* PROTOTYPES ****************************************************************/
+//
+// Section Functions
+//
NTSTATUS
NTAPI
MmUnmapViewOfSection(
diff --git a/reactos/include/ndk/mmtypes.h b/reactos/include/ndk/mmtypes.h
index 438ce2877c2..ed9a2c6c2c8 100644
--- a/reactos/include/ndk/mmtypes.h
+++ b/reactos/include/ndk/mmtypes.h
@@ -1,34 +1,61 @@
-/*
- * PROJECT: ReactOS Native Headers
- * FILE: include/ndk/mmtypes.h
- * PURPOSE: Definitions for Memory Manager 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:
+
+ mmtypes.h
+
+Abstract:
+
+ Type definitions for the Memory Manager
+
+Author:
+
+ Alex Ionescu (alex.ionescu@reactos.com) 06-Oct-2004
+
+--*/
+
#ifndef _MMTYPES_H
#define _MMTYPES_H
-/* DEPENDENCIES **************************************************************/
-#include "arch/mmtypes.h"
+//
+// Dependencies
+//
+#include
-/* EXPORTED DATA *************************************************************/
+//
+// Page-Rounding Macros
+//
+#define PAGE_ROUND_DOWN(x) (((ULONG)x)&(~(PAGE_SIZE-1)))
+#define PAGE_ROUND_UP(x) \
+ ( (((ULONG)x)%PAGE_SIZE) ? ((((ULONG)x)&(~(PAGE_SIZE-1)))+PAGE_SIZE) : ((ULONG)x) )
-/* CONSTANTS *****************************************************************/
-#ifdef NTOS_MODE_USER
-#define SEC_BASED 0x00200000
-#define SEC_NO_CHANGE 0x00400000
-#endif
-
-/* ENUMERATIONS **************************************************************/
+//
+// Macro for generating pool tags
+//
+#define TAG(A, B, C, D) (ULONG)(((A)<<0) + ((B)<<8) + ((C)<<16) + ((D)<<24))
#ifdef NTOS_MODE_USER
+
+//
+// Section Flags for NtCreateSection
+//
+#define SEC_BASED 0x00200000
+#define SEC_NO_CHANGE 0x00400000
+
+//
+// Section Inherit Flags for NtCreateSection
+//
typedef enum _SECTION_INHERIT
{
ViewShare = 1,
ViewUnmap = 2
} SECTION_INHERIT;
+//
+// Pool Types
+//
typedef enum _POOL_TYPE
{
NonPagedPool,
@@ -49,6 +76,9 @@ typedef enum _POOL_TYPE
} POOL_TYPE;
#endif
+//
+// Per Processor Non Paged Lookaside List IDs
+//
typedef enum _PP_NPAGED_LOOKASIDE_NUMBER
{
LookasideSmallIrpList = 0,
@@ -61,6 +91,9 @@ typedef enum _PP_NPAGED_LOOKASIDE_NUMBER
LookasideMaximumList = 7
} PP_NPAGED_LOOKASIDE_NUMBER;
+//
+// Memory Information Classes for NtQueryVirtualMemory
+//
typedef enum _MEMORY_INFORMATION_CLASS
{
MemoryBasicInformation,
@@ -69,15 +102,20 @@ typedef enum _MEMORY_INFORMATION_CLASS
MemoryBasicVlmInformation
} MEMORY_INFORMATION_CLASS;
+//
+// Section Information Clasess for NtQuerySection
+//
typedef enum _SECTION_INFORMATION_CLASS
{
SectionBasicInformation,
SectionImageInformation,
} SECTION_INFORMATION_CLASS;
-/* TYPES *********************************************************************/
-
#ifdef NTOS_MODE_USER
+
+//
+// Virtual Memory Counters
+//
typedef struct _VM_COUNTERS
{
SIZE_T PeakVirtualSize;
@@ -110,18 +148,27 @@ typedef struct _VM_COUNTERS_EX
} VM_COUNTERS_EX, *PVM_COUNTERS_EX;
#endif
+//
+// List of Working Sets
+//
typedef struct _MEMORY_WORKING_SET_LIST
{
ULONG NumberOfPages;
ULONG WorkingSetList[1];
} MEMORY_WORKING_SET_LIST, *PMEMORY_WORKING_SET_LIST;
+//
+// Memory Information Structures for NtQueryVirtualMemory
+//
typedef struct
{
UNICODE_STRING SectionFileName;
- WCHAR NameBuffer[ANYSIZE_ARRAY];
+ WCHAR NameBuffer[ANYSIZE_ARRAY];
} MEMORY_SECTION_NAME, *PMEMORY_SECTION_NAME;
+//
+// Section Information Structures for NtQuerySection
+//
typedef struct _SECTION_BASIC_INFORMATION
{
PVOID BaseAddress;
@@ -150,7 +197,10 @@ typedef struct _SECTION_IMAGE_INFORMATION
} SECTION_IMAGE_INFORMATION, *PSECTION_IMAGE_INFORMATION;
#ifndef NTOS_MODE_USER
-/* FIXME: Forced to do this for now, because of EPROCESS, will go away before 0.3.0 */
+
+//
+// FIXME: REACTOS SPECIFIC HACK IN EPROCESS
+//
typedef struct _MADDRESS_SPACE
{
struct _MEMORY_AREA *MemoryAreaRoot;
@@ -161,6 +211,9 @@ typedef struct _MADDRESS_SPACE
ULONG PageTableRefCountTableSize;
} MADDRESS_SPACE, *PMADDRESS_SPACE;
+//
+// Generic Address Range Structure
+//
typedef struct _ADDRESS_RANGE
{
ULONG BaseAddrLow;
@@ -170,6 +223,9 @@ typedef struct _ADDRESS_RANGE
ULONG Type;
} ADDRESS_RANGE, *PADDRESS_RANGE;
+//
+// Node in Memory Manager's AVL Table
+//
typedef struct _MMADDRESS_NODE
{
union
@@ -183,6 +239,9 @@ typedef struct _MMADDRESS_NODE
ULONG EndingVpn;
} MMADDRESS_NODE, *PMMADDRESS_NODE;
+//
+// Memory Manager AVL Table for VADs and other descriptors
+//
typedef struct _MM_AVL_TABLE
{
MMADDRESS_NODE BalancedRoot;
@@ -193,6 +252,9 @@ typedef struct _MM_AVL_TABLE
PVOID NodeFreeHint;
} MM_AVL_TABLE, *PMM_AVL_TABLE;
+//
+// Memory Manager Working Set Structures
+//
typedef struct _MMWSLENTRY
{
ULONG Valid:1;
@@ -241,6 +303,9 @@ typedef struct _MMWSL
ULONG CommittedPageTables[24];
} MMWSL, *PMMWSL;
+//
+// Flags for Memory Support Structure
+//
typedef struct _MMSUPPORT_FLAGS
{
ULONG SessionSpace:1;
@@ -254,6 +319,9 @@ typedef struct _MMSUPPORT_FLAGS
ULONG MemoryPriority:8;
} MMSUPPORT_FLAGS, *PMMSUPPORT_FLAGS;
+//
+// Per-Process Memory Manager Data
+//
typedef struct _MMSUPPORT
{
LARGE_INTEGER LastTrimTime;
@@ -272,5 +340,6 @@ typedef struct _MMSUPPORT
ULONG GrowthSinceLastEstimate;
} MMSUPPORT, *PMMSUPPORT;
-#endif
-#endif
+#endif // !NTOS_MODE_USER
+
+#endif // _MMTYPES_H
diff --git a/reactos/include/ndk/ntndk.h b/reactos/include/ndk/ntndk.h
index 4439bfe7ac2..500388baefc 100644
--- a/reactos/include/ndk/ntndk.h
+++ b/reactos/include/ndk/ntndk.h
@@ -1,60 +1,77 @@
-/*
- * PROJECT: ReactOS Native Headers
- * FILE: include/ndk/ntndk.h
- * PURPOSE: Main Native Development Kit Header file to include all others.
- * PROGRAMMER: Alex Ionescu (alex@relsoft.net)
- * UPDATE HISTORY:
- * Created 06/10/04
- */
+/*++ NDK Version: 0095
+
+Copyright (c) Alex Ionescu. All rights reserved.
+
+Header Name:
+
+ ntndk.h
+
+Abstract:
+
+ Master include file for the Native Development Kit.
+
+Author:
+
+ Alex Ionescu (alex.ionescu@reactos.com) 06-Oct-2004
+
+--*/
+
#ifndef _NTNDK_
#define _NTNDK_
-/* C Standard Headers */
+//
+// Rounding Macros
+//
+#define ROUNDUP(a,b) ((((a)+(b)-1)/(b))*(b))
+#define ROUNDDOWN(a,b) (((a)/(b))*(b))
+#define ROUND_UP ROUNDUP
+#define ROUND_DOWN ROUNDDOWN
+
#include
-/* Helper Header */
-#include
-
-/* A version of ntdef.h to be used with PSDK headers. */
-#include "umtypes.h"
-
-/* Kernel-Mode NDK */
#ifndef NTOS_MODE_USER
-#include "ifssupp.h" /* IFS Support Header */
-#include "kdfuncs.h" /* Kernel Debugger Functions */
-#include "cctypes.h" /* Cache Manager Types */
-#include "potypes.h" /* Power Manager Types */
-#include "haltypes.h" /* Hardware Abstraction Layer Types */
-#include "halfuncs.h" /* Hardware Abstraction Layer Functions */
-#include "inbvfuncs.h" /* Initialization Boot Video Functions */
-#include "exfuncs.h" /* Executive Functions */
-#include "iofuncs.h" /* Input/Output Manager Functions */
-#include "kefuncs.h" /* Kernel Functions */
-#include "mmfuncs.h" /* Memory Manager Functions */
-#include "obfuncs.h" /* Object Manager Functions */
-#include "psfuncs.h" /* Process Manager Functions */
-#include "sefuncs.h" /* Security Subsystem Functions */
-#endif /* !NTOS_MODE_USER */
-/* Shared NDK */
-#include "extypes.h" /* Executive Types */
-#include "cmtypes.h" /* Configuration Manager Types */
-#include "kdtypes.h" /* Kernel Debugger Types */
-#include "ketypes.h" /* Kernel Types */
-#include "iotypes.h" /* Input/Output Manager Types */
-#include "ldrtypes.h" /* Loader Types */
-#include "ldrfuncs.h" /* Loader Functions */
-#include "mmtypes.h" /* Memory Manager Types */
-#include "obtypes.h" /* Object Manager Types */
-#include "pstypes.h" /* Process Manager Types */
-#include "lpctypes.h" /* Local Procedure Call Types */
-#include "dbgktypes.h" /* User-Mode Kernel Debugging Types */
-#include "zwfuncs.h" /* Native Functions (System Calls) */
-#include "rtltypes.h" /* Runtime Library Types */
-#include "rtlfuncs.h" /* Runtime Library Functions */
-#include "setypes.h" /* Security Subsystem Types */
-#include "umfuncs.h" /* User-Mode NT Library Functions */
-#include "i386/floatsave.h" /* Floating Point Save Area Definitions for i386 */
-#include "i386/segment.h" /* Kernel CPU Segment Definitions for i386 */
+//
+// Headers that are only useful to Kernel Mode modules
+//
+#include // IFS Support Header
+#include // Kernel Debugger Functions
+#include // Cache Manager Types
+#include // Power Manager Types
+#include // Hardware Abstraction Layer Types
+#include // Hardware Abstraction Layer Functions
+#include // Initialization Boot Video Functions
+#include // Executive Functions
+#include // Input/Output Manager Functions
+#include // Kernel Functions
+#include // Memory Manager Functions
+#include // Object Manager Functions
+#include // Process Manager Functions
+#include // Security Subsystem Functions
-#endif
+#endif // !NTOS_MODE_USER
+
+//
+// Headers used both in User Mode and Kernel Mode
+//
+#include // General Definitions
+#include // Executive Types
+#include // Configuration Manager Types
+#include // Kernel Debugger Types
+#include // Kernel Types
+#include // Input/Output Manager Types
+#include // Loader Types
+#include // Loader Functions
+#include // Memory Manager Types
+#include // Object Manager Types
+#include // Process Manager Types
+#include // Local Procedure Call Types
+#include // User-Mode Kernel Debugging Types
+#include // Native Functions (System Calls)
+#include // Runtime Library Types
+#include // Runtime Library Functions
+#include // Security Subsystem Types
+#include // User-Mode NT Library Functions
+#include // Assembly Offsets
+
+#endif // _NTNDK_
diff --git a/reactos/include/ndk/obfuncs.h b/reactos/include/ndk/obfuncs.h
index 1fd722e8b16..0dc62f62f91 100644
--- a/reactos/include/ndk/obfuncs.h
+++ b/reactos/include/ndk/obfuncs.h
@@ -1,51 +1,62 @@
-/*
- * PROJECT: ReactOS Native Headers
- * FILE: include/ndk/obfuncs.h
- * PURPOSE: Protoypes for OBject Manager Functions 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:
+
+ obtypes.h
+
+Abstract:
+
+ Type definitions for the Object Manager
+
+Author:
+
+ Alex Ionescu (alex.ionescu@reactos.com) 06-Oct-2004
+
+--*/
+
#ifndef _OBFUNCS_H
#define _OBFUNCS_H
-/* DEPENDENCIES **************************************************************/
-
-/* FUNCTION TYPES ************************************************************/
-
-/* PROTOTYPES ****************************************************************/
+//
+// Dependencies
+//
+//
+// Object Functions
+//
NTSTATUS
NTAPI
-ObCreateObject (
- IN KPROCESSOR_MODE ObjectAttributesAccessMode OPTIONAL,
- IN POBJECT_TYPE ObjectType,
- IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
- IN KPROCESSOR_MODE AccessMode,
- IN OUT PVOID ParseContext OPTIONAL,
- IN ULONG ObjectSize,
- IN ULONG PagedPoolCharge OPTIONAL,
- IN ULONG NonPagedPoolCharge OPTIONAL,
- OUT PVOID *Object
+ObCreateObject(
+ IN KPROCESSOR_MODE ObjectAttributesAccessMode OPTIONAL,
+ IN POBJECT_TYPE ObjectType,
+ IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
+ IN KPROCESSOR_MODE AccessMode,
+ IN OUT PVOID ParseContext OPTIONAL,
+ IN ULONG ObjectSize,
+ IN ULONG PagedPoolCharge OPTIONAL,
+ IN ULONG NonPagedPoolCharge OPTIONAL,
+ OUT PVOID *Object
);
ULONG
NTAPI
-ObGetObjectPointerCount (
+ObGetObjectPointerCount(
IN PVOID Object
);
NTSTATUS
NTAPI
-ObReferenceObjectByName (
- IN PUNICODE_STRING ObjectName,
- IN ULONG Attributes,
- IN PACCESS_STATE PassedAccessState OPTIONAL,
- IN ACCESS_MASK DesiredAccess OPTIONAL,
- IN POBJECT_TYPE ObjectType,
- IN KPROCESSOR_MODE AccessMode,
- IN OUT PVOID ParseContext OPTIONAL,
- OUT PVOID *Object
+ObReferenceObjectByName(
+ IN PUNICODE_STRING ObjectName,
+ IN ULONG Attributes,
+ IN PACCESS_STATE PassedAccessState OPTIONAL,
+ IN ACCESS_MASK DesiredAccess OPTIONAL,
+ IN POBJECT_TYPE ObjectType,
+ IN KPROCESSOR_MODE AccessMode,
+ IN OUT PVOID ParseContext OPTIONAL,
+ OUT PVOID *Object
);
NTSTATUS
diff --git a/reactos/include/ndk/obtypes.h b/reactos/include/ndk/obtypes.h
index 9aa9dd0f781..2ba2dc6e5a5 100644
--- a/reactos/include/ndk/obtypes.h
+++ b/reactos/include/ndk/obtypes.h
@@ -1,68 +1,77 @@
-/*
- * PROJECT: ReactOS Native Headers
- * FILE: include/ndk/obtypes.h
- * PURPOSE: Defintions for Object Manager 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:
+
+ obtypes.h
+
+Abstract:
+
+ Type definitions for the Object Manager
+
+Author:
+
+ Alex Ionescu (alex.ionescu@reactos.com) 06-Oct-2004
+
+--*/
+
#ifndef _OBTYPES_H
#define _OBTYPES_H
-/* DEPENDENCIES **************************************************************/
-
-/* CONSTANTS *****************************************************************/
+//
+// Dependencies
+//
#ifdef NTOS_MODE_USER
-/* Definitions for Object Creation */
-#define OBJ_INHERIT 2L
-#define OBJ_PERMANENT 16L
-#define OBJ_EXCLUSIVE 32L
-#define OBJ_CASE_INSENSITIVE 64L
-#define OBJ_OPENIF 128L
-#define OBJ_OPENLINK 256L
-#define OBJ_VALID_ATTRIBUTES 498L
+
+//
+// Definitions for Object Creation
+//
+#define OBJ_INHERIT 0x00000002L
+#define OBJ_PERMANENT 0x00000010L
+#define OBJ_EXCLUSIVE 0x00000020L
+#define OBJ_CASE_INSENSITIVE 0x00000040L
+#define OBJ_OPENIF 0x00000080L
+#define OBJ_OPENLINK 0x00000100L
+#define OBJ_KERNEL_HANDLE 0x00000200L
+#define OBJ_FORCE_ACCESS_CHECK 0x00000400L
+#define OBJ_VALID_ATTRIBUTES 0x000007F2L
+
#define InitializeObjectAttributes(p,n,a,r,s) { \
- (p)->Length = sizeof(OBJECT_ATTRIBUTES); \
- (p)->RootDirectory = (r); \
- (p)->Attributes = (a); \
- (p)->ObjectName = (n); \
- (p)->SecurityDescriptor = (s); \
- (p)->SecurityQualityOfService = NULL; \
+ (p)->Length = sizeof(OBJECT_ATTRIBUTES); \
+ (p)->RootDirectory = (r); \
+ (p)->Attributes = (a); \
+ (p)->ObjectName = (n); \
+ (p)->SecurityDescriptor = (s); \
+ (p)->SecurityQualityOfService = NULL; \
}
-/* Directory Object Access Rights */
-#define DIRECTORY_QUERY 0x0001
-#define DIRECTORY_TRAVERSE 0x0002
-#define DIRECTORY_CREATE_OBJECT 0x0004
-#define DIRECTORY_CREATE_SUBDIRECTORY 0x0008
-#define DIRECTORY_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | 0xF)
-#endif
+//
+// Directory Object Access Rights
+//
+#define DIRECTORY_QUERY 0x0001
+#define DIRECTORY_TRAVERSE 0x0002
+#define DIRECTORY_CREATE_OBJECT 0x0004
+#define DIRECTORY_CREATE_SUBDIRECTORY 0x0008
+#define DIRECTORY_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | 0xF)
-/* Duplication Flags */
-#define DUPLICATE_SAME_ATTRIBUTES 0x00000004
+#else
-/* Values for DosDeviceDriveType */
-#define DOSDEVICE_DRIVE_UNKNOWN 0
-#define DOSDEVICE_DRIVE_CALCULATE 1
-#define DOSDEVICE_DRIVE_REMOVABLE 2
-#define DOSDEVICE_DRIVE_FIXED 3
-#define DOSDEVICE_DRIVE_REMOTE 4
-#define DOSDEVICE_DRIVE_CDROM 5
-#define DOSDEVICE_DRIVE_RAMDISK 6
-
-#ifndef NTOS_MODE_USER
-/* Object Flags */
-#define OB_FLAG_CREATE_INFO 0x01
-#define OB_FLAG_KERNEL_MODE 0x02
-#define OB_FLAG_CREATOR_INFO 0x04
-#define OB_FLAG_EXCLUSIVE 0x08
-#define OB_FLAG_PERMANENT 0x10
-#define OB_FLAG_SECURITY 0x20
-#define OB_FLAG_SINGLE_PROCESS 0x40
-
-/* ENUMERATIONS **************************************************************/
+//
+// Object Flags
+//
+#define OB_FLAG_CREATE_INFO 0x01
+#define OB_FLAG_KERNEL_MODE 0x02
+#define OB_FLAG_CREATOR_INFO 0x04
+#define OB_FLAG_EXCLUSIVE 0x08
+#define OB_FLAG_PERMANENT 0x10
+#define OB_FLAG_SECURITY 0x20
+#define OB_FLAG_SINGLE_PROCESS 0x40
+//
+// Reasons for Open Callback
+//
typedef enum _OB_OPEN_REASON
{
ObCreateHandle,
@@ -71,8 +80,33 @@ typedef enum _OB_OPEN_REASON
ObInheritHandle,
ObMaxOpenReason
} OB_OPEN_REASON;
+
#endif
+//
+// Object Duplication Flags
+//
+#define DUPLICATE_SAME_ATTRIBUTES 0x00000004
+
+//
+// Number of hash entries in an Object Directory
+//
+#define NUMBER_HASH_BUCKETS 37
+
+//
+// Types for DosDeviceDriveType
+//
+#define DOSDEVICE_DRIVE_UNKNOWN 0
+#define DOSDEVICE_DRIVE_CALCULATE 1
+#define DOSDEVICE_DRIVE_REMOVABLE 2
+#define DOSDEVICE_DRIVE_FIXED 3
+#define DOSDEVICE_DRIVE_REMOTE 4
+#define DOSDEVICE_DRIVE_CDROM 5
+#define DOSDEVICE_DRIVE_RAMDISK 6
+
+//
+// Object Information Classes for NtQueryInformationObject
+//
typedef enum _OBJECT_INFORMATION_CLASS
{
ObjectBasicInformation,
@@ -85,48 +119,55 @@ typedef enum _OBJECT_INFORMATION_CLASS
/* FUNCTION TYPES ************************************************************/
#ifndef NTOS_MODE_USER
-/* Object Callbacks FIXME: Update these soon */
+
+//
+// FIXME: Object Callbacks
+//
typedef NTSTATUS
(NTAPI *OB_OPEN_METHOD)(
- OB_OPEN_REASON Reason,
- PVOID ObjectBody,
- PEPROCESS Process,
- ULONG HandleCount,
- ACCESS_MASK GrantedAccess
+ OB_OPEN_REASON Reason,
+ PVOID ObjectBody,
+ PEPROCESS Process,
+ ULONG HandleCount,
+ ACCESS_MASK GrantedAccess
);
typedef NTSTATUS
(NTAPI *OB_PARSE_METHOD)(
- PVOID Object,
- PVOID *NextObject,
- PUNICODE_STRING FullPath,
- PWSTR *Path,
- ULONG Attributes
+ PVOID Object,
+ PVOID *NextObject,
+ PUNICODE_STRING FullPath,
+ PWSTR *Path,
+ ULONG Attributes
);
typedef VOID
(NTAPI *OB_DELETE_METHOD)(
- PVOID DeletedObject
+ PVOID DeletedObject
);
typedef VOID
(NTAPI *OB_CLOSE_METHOD)(
- PVOID ClosedObject,
- ULONG HandleCount
+ PVOID ClosedObject,
+ ULONG HandleCount
);
typedef VOID
-(NTAPI *OB_DUMP_METHOD)(VOID);
+(NTAPI *OB_DUMP_METHOD)(
+ VOID
+);
typedef NTSTATUS
-(NTAPI *OB_OKAYTOCLOSE_METHOD)(VOID);
+(NTAPI *OB_OKAYTOCLOSE_METHOD)(
+ VOID
+);
typedef NTSTATUS
(NTAPI *OB_QUERYNAME_METHOD)(
- PVOID ObjectBody,
- POBJECT_NAME_INFORMATION ObjectNameInfo,
- ULONG Length,
- PULONG ReturnLength
+ PVOID ObjectBody,
+ POBJECT_NAME_INFORMATION ObjectNameInfo,
+ ULONG Length,
+ PULONG ReturnLength
);
typedef PVOID
@@ -148,23 +189,24 @@ typedef NTSTATUS
PGENERIC_MAPPING GenericMapping
);
-/* FIXME: TEMPORARY HACK */
typedef NTSTATUS
(NTAPI *OB_CREATE_METHOD)(
- PVOID ObjectBody,
- PVOID Parent,
- PWSTR RemainingPath,
- struct _OBJECT_ATTRIBUTES* ObjectAttributes
+ PVOID ObjectBody,
+ PVOID Parent,
+ PWSTR RemainingPath,
+ struct _OBJECT_ATTRIBUTES* ObjectAttributes
);
-#endif
-/* TYPES *********************************************************************/
+#else
-#ifdef NTOS_MODE_USER
+//
+// Object Information Types for NtQueryInformationObject
+//
typedef struct _OBJECT_NAME_INFORMATION
{
UNICODE_STRING Name;
} OBJECT_NAME_INFORMATION, *POBJECT_NAME_INFORMATION;
+
#endif
typedef struct _OBJECT_HANDLE_ATTRIBUTE_INFORMATION
@@ -180,6 +222,7 @@ typedef struct _OBJECT_DIRECTORY_INFORMATION
} OBJECT_DIRECTORY_INFORMATION, *POBJECT_DIRECTORY_INFORMATION;
#ifndef NTOS_MODE_USER
+
typedef struct _OBJECT_BASIC_INFORMATION
{
ULONG Attributes;
@@ -195,15 +238,6 @@ typedef struct _OBJECT_BASIC_INFORMATION
LARGE_INTEGER CreateTime;
} OBJECT_BASIC_INFORMATION, *POBJECT_BASIC_INFORMATION;
-typedef struct _OBJECT_HEADER_NAME_INFO
-{
- struct _DIRECTORY_OBJECT *Directory;
- UNICODE_STRING Name;
- ULONG QueryReferences;
- ULONG Reserved2;
- ULONG DbgReferenceCount;
-} OBJECT_HEADER_NAME_INFO, *POBJECT_HEADER_NAME_INFO;
-
typedef struct _OBJECT_CREATE_INFORMATION
{
ULONG Attributes;
@@ -218,6 +252,9 @@ typedef struct _OBJECT_CREATE_INFORMATION
SECURITY_QUALITY_OF_SERVICE SecurityQualityOfService;
} OBJECT_CREATE_INFORMATION, *POBJECT_CREATE_INFORMATION;
+//
+// Object Type Initialize for ObCreateObjectType
+//
typedef struct _OBJECT_TYPE_INITIALIZER
{
USHORT Length;
@@ -242,6 +279,9 @@ typedef struct _OBJECT_TYPE_INITIALIZER
OB_OKAYTOCLOSE_METHOD OkayToCloseProcedure;
} OBJECT_TYPE_INITIALIZER, *POBJECT_TYPE_INITIALIZER;
+//
+// Object Type Object
+//
typedef struct _OBJECT_TYPE
{
ERESOURCE Mutex;
@@ -258,6 +298,18 @@ typedef struct _OBJECT_TYPE
ERESOURCE ObjectLocks[4];
} OBJECT_TYPE;
+//
+// Object Header Addon Information
+//
+typedef struct _OBJECT_HEADER_NAME_INFO
+{
+ struct _DIRECTORY_OBJECT *Directory;
+ UNICODE_STRING Name;
+ ULONG QueryReferences;
+ ULONG Reserved2;
+ ULONG DbgReferenceCount;
+} OBJECT_HEADER_NAME_INFO, *POBJECT_HEADER_NAME_INFO;
+
typedef struct _OBJECT_HANDLE_COUNT_ENTRY
{
struct _EPROCESS *Process;
@@ -287,9 +339,12 @@ typedef struct _OBJECT_HEADER_CREATOR_INFO
USHORT Reserved;
} OBJECT_HEADER_CREATOR_INFO, *POBJECT_HEADER_CREATOR_INFO;
+//
+// FIXME: Object Header
+//
typedef struct _OBJECT_HEADER
{
- LIST_ENTRY Entry; /* FIXME: REMOVE THIS SOON */
+ LIST_ENTRY Entry;
LONG PointerCount;
union
{
@@ -310,11 +365,9 @@ typedef struct _OBJECT_HEADER
QUAD Body;
} OBJECT_HEADER, *POBJECT_HEADER;
-/*
- * FIXME: These will eventually become centerfold in the compliant Ob Manager
- * For now, they are only here so Device Map is properly defined before the header
- * changes
- */
+//
+// Object Directory Structures
+//
typedef struct _OBJECT_DIRECTORY_ENTRY
{
struct _OBJECT_DIRECTORY_ENTRY *ChainLink;
@@ -322,7 +375,6 @@ typedef struct _OBJECT_DIRECTORY_ENTRY
ULONG HashValue;
} OBJECT_DIRECTORY_ENTRY, *POBJECT_DIRECTORY_ENTRY;
-#define NUMBER_HASH_BUCKETS 37
typedef struct _OBJECT_DIRECTORY
{
struct _OBJECT_DIRECTORY_ENTRY *HashBuckets[NUMBER_HASH_BUCKETS];
@@ -331,6 +383,9 @@ typedef struct _OBJECT_DIRECTORY
ULONG SessionId;
} OBJECT_DIRECTORY, *POBJECT_DIRECTORY;
+//
+// Device Map
+//
typedef struct _DEVICE_MAP
{
POBJECT_DIRECTORY DosDevicesDirectory;
@@ -340,10 +395,12 @@ typedef struct _DEVICE_MAP
UCHAR DriveType[32];
} DEVICE_MAP, *PDEVICE_MAP;
-/* EXPORTED DATA *************************************************************/
-
+//
+// Kernel Exports
+//
extern POBJECT_TYPE NTSYSAPI ObDirectoryType;
extern PDEVICE_MAP NTSYSAPI ObSystemDeviceMap;
-#endif
-#endif
+#endif // !NTOS_MODE_USER
+
+#endif // _OBTYPES_H
diff --git a/reactos/include/ndk/potypes.h b/reactos/include/ndk/potypes.h
index 3ee9be08582..a2fdd38738f 100644
--- a/reactos/include/ndk/potypes.h
+++ b/reactos/include/ndk/potypes.h
@@ -1,24 +1,34 @@
-/*
- * PROJECT: ReactOS Native Headers
- * FILE: include/ndk/potypes.h
- * PURPOSE: Defintions for Power Manager Types not documented 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:
+
+ potypes.h
+
+Abstract:
+
+ Type definitions for the Power Subystem
+
+Author:
+
+ Alex Ionescu (alex.ionescu@reactos.com) 06-Oct-2004
+
+--*/
+
#ifndef _POTYPES_H
#define _POTYPES_H
-/* DEPENDENCIES **************************************************************/
+//
+// Dependencies
+//
#ifndef NTOS_MODE_USER
#include
#endif
-/* EXPORTED DATA *************************************************************/
-
-/* CONSTANTS *****************************************************************/
-
-/* ENUMERATIONS **************************************************************/
+//
+// Docking states
+//
typedef enum _SYSTEM_DOCK_STATE
{
SystemDockStateUnknown,
@@ -26,9 +36,11 @@ typedef enum _SYSTEM_DOCK_STATE
SystemDocked
} SYSTEM_DOCK_STATE, *PSYSTEM_DOCK_STATE;
-/* TYPES *********************************************************************/
-
#ifndef NTOS_MODE_USER
+
+//
+// Processor Power State Data
+//
typedef struct _PROCESSOR_POWER_STATE
{
PVOID IdleFunction;
@@ -77,6 +89,9 @@ typedef struct _PROCESSOR_POWER_STATE
ULONG Spare1[1];
} PROCESSOR_POWER_STATE, *PPROCESSOR_POWER_STATE;
+//
+// Device Notification Structure
+//
typedef struct _PO_DEVICE_NOTIFY
{
LIST_ENTRY Link;
@@ -90,5 +105,7 @@ typedef struct _PO_DEVICE_NOTIFY
ULONG ChildCount;
ULONG ActiveChild;
} PO_DEVICE_NOTIFY, *PPO_DEVICE_NOTIFY;
-#endif
-#endif
+
+#endif // !NTOS_MODE_USER
+
+#endif // _POTYPES_H
diff --git a/reactos/include/ndk/psfuncs.h b/reactos/include/ndk/psfuncs.h
index 244bc3b282b..a192df8bbc4 100644
--- a/reactos/include/ndk/psfuncs.h
+++ b/reactos/include/ndk/psfuncs.h
@@ -1,28 +1,49 @@
-/*
- * PROJECT: ReactOS Native Headers
- * FILE: include/ndk/psfuncs.h
- * PURPOSE: Defintions for Process Manager Functions not documented 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:
+
+ psfuncs.h
+
+Abstract:
+
+ Function definitions for the Process Manager
+
+Author:
+
+ Alex Ionescu (alex.ionescu@reactos.com) 06-Oct-2004
+
+--*/
+
#ifndef _PSFUNCS_H
#define _PSFUNCS_H
-/* DEPENDENCIES **************************************************************/
+//
+// Dependencies
+//
#include "pstypes.h"
-/* PROTOTYPES ****************************************************************/
+//
+// Win32K Process/Thread Functions
+//
+struct _W32THREAD*
+NTAPI
+PsGetWin32Thread(
+ VOID
+);
-struct _W32THREAD* NTAPI
-PsGetWin32Thread(VOID);
-
-struct _W32PROCESS* NTAPI
-PsGetWin32Process(VOID);
+struct _W32PROCESS*
+NTAPI
+PsGetWin32Process(
+ VOID
+);
PVOID
NTAPI
-PsGetProcessWin32Process(PEPROCESS Process);
+PsGetProcessWin32Process(
+ PEPROCESS Process
+);
VOID
NTAPI
@@ -40,32 +61,30 @@ PsSetThreadWin32Thread(
PVOID
NTAPI
-PsGetThreadWin32Thread(PETHREAD Thread);
-
-VOID
-NTAPI
-PsRevertThreadToSelf(
- IN struct _ETHREAD* Thread
-);
-
-struct _W32THREAD*
-NTAPI
-PsGetWin32Thread(
- VOID
-);
-
-struct _W32PROCESS*
-NTAPI
-PsGetWin32Process(
- VOID
+PsGetThreadWin32Thread(
+ PETHREAD Thread
);
VOID
NTAPI
-PsEstablishWin32Callouts(PW32_CALLOUT_DATA CalloutData);
+PsEstablishWin32Callouts(
+ PW32_CALLOUT_DATA CalloutData
+);
+//
+// Process Impersonation Functions
+//
+VOID
+NTAPI
+PsRevertThreadToSelf(
+ IN PETHREAD Thread
+);
+
+//
+// Misc. Functions
+//
HANDLE
NTAPI
-PsGetProcessId(struct _EPROCESS *Process);
+PsGetProcessId(PEPROCESS Process);
#endif
diff --git a/reactos/include/ndk/pstypes.h b/reactos/include/ndk/pstypes.h
index cfda8e52bf5..c34361d4508 100644
--- a/reactos/include/ndk/pstypes.h
+++ b/reactos/include/ndk/pstypes.h
@@ -1,15 +1,27 @@
-/*
- * PROJECT: ReactOS Native Headers
- * FILE: include/ndk/pstypes.h
- * PURPOSE: Defintions for Process Manager Types not documented 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:
+
+ pstypes.h
+
+Abstract:
+
+ Type definitions for the Process Manager
+
+Author:
+
+ Alex Ionescu (alex.ionescu@reactos.com) 06-Oct-2004
+
+--*/
+
#ifndef _PSTYPES_H
#define _PSTYPES_H
-/* DEPENDENCIES **************************************************************/
+//
+// Dependencies
+//
#include "ldrtypes.h"
#include "mmtypes.h"
#include "obtypes.h"
@@ -18,36 +30,55 @@
#include "setypes.h"
#endif
-/* EXPORTED DATA *************************************************************/
+//
+// KUSER_SHARED_DATA location in User Mode
+//
+#define USER_SHARED_DATA (0x7FFE0000)
+//
+// Kernel Exports
+//
#ifndef NTOS_MODE_USER
+
extern NTSYSAPI struct _EPROCESS* PsInitialSystemProcess;
extern NTSYSAPI POBJECT_TYPE PsProcessType;
+
#endif
-/* CONSTANTS *****************************************************************/
+//
+// Global Flags
+//
+#define FLG_STOP_ON_EXCEPTION 0x00000001
+#define FLG_SHOW_LDR_SNAPS 0x00000002
+#define FLG_DEBUG_INITIAL_COMMAND 0x00000004
+#define FLG_STOP_ON_HUNG_GUI 0x00000008
+#define FLG_HEAP_ENABLE_TAIL_CHECK 0x00000010
+#define FLG_HEAP_ENABLE_FREE_CHECK 0x00000020
+#define FLG_HEAP_VALIDATE_PARAMETERS 0x00000040
+#define FLG_HEAP_VALIDATE_ALL 0x00000080
+#define FLG_POOL_ENABLE_TAIL_CHECK 0x00000100
+#define FLG_POOL_ENABLE_FREE_CHECK 0x00000200
+#define FLG_POOL_ENABLE_TAGGING 0x00000400
+#define FLG_HEAP_ENABLE_TAGGING 0x00000800
+#define FLG_USER_STACK_TRACE_DB 0x00001000
+#define FLG_KERNEL_STACK_TRACE_DB 0x00002000
+#define FLG_MAINTAIN_OBJECT_TYPELIST 0x00004000
+#define FLG_HEAP_ENABLE_TAG_BY_DLL 0x00008000
+#define FLG_IGNORE_DEBUG_PRIV 0x00010000
+#define FLG_ENABLE_CSRDEBUG 0x00020000
+#define FLG_ENABLE_KDEBUG_SYMBOL_LOAD 0x00040000
+#define FLG_DISABLE_PAGE_KERNEL_STACKS 0x00080000
+#define FLG_HEAP_ENABLE_CALL_TRACING 0x00100000
+#define FLG_HEAP_DISABLE_COALESCING 0x00200000
+#define FLG_ENABLE_CLOSE_EXCEPTIONS 0x00400000
+#define FLG_ENABLE_EXCEPTION_LOGGING 0x00800000
+#define FLG_ENABLE_HANDLE_TYPE_TAGGING 0x01000000
+#define FLG_HEAP_PAGE_ALLOCS 0x02000000
+#define FLG_DEBUG_INITIAL_COMMAND_EX 0x04000000
-/* These are not exposed to drivers normally */
-#ifndef NTOS_MODE_USER
- #define JOB_OBJECT_ASSIGN_PROCESS 1
- #define JOB_OBJECT_SET_ATTRIBUTES 2
- #define JOB_OBJECT_QUERY 4
- #define JOB_OBJECT_TERMINATE 8
- #define JOB_OBJECT_SET_SECURITY_ATTRIBUTES 16
- #define JOB_OBJECT_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|31)
-#endif
-
-#define USER_SHARED_DATA (0x7FFE0000)
-
-#ifdef NTOS_MODE_USER
-/* Macros for current Process/Thread built-in 'special' ID */
-#define NtCurrentProcess() ((HANDLE)(LONG_PTR)-1)
-#define ZwCurrentProcess() NtCurrentProcess()
-#define NtCurrentThread() ((HANDLE)(LONG_PTR)-2)
-#define ZwCurrentThread() NtCurrentThread()
-#endif
-
-/* Process priority classes */
+//
+// Process priority classes
+//
#define PROCESS_PRIORITY_CLASS_INVALID 0
#define PROCESS_PRIORITY_CLASS_IDLE 1
#define PROCESS_PRIORITY_CLASS_NORMAL 2
@@ -56,43 +87,37 @@ extern NTSYSAPI POBJECT_TYPE PsProcessType;
#define PROCESS_PRIORITY_CLASS_BELOW_NORMAL 5
#define PROCESS_PRIORITY_CLASS_ABOVE_NORMAL 6
-/* Process base priorities */
+//
+// Process base priorities
+//
#define PROCESS_PRIORITY_IDLE 3
#define PROCESS_PRIORITY_NORMAL 8
#define PROCESS_PRIORITY_NORMAL_FOREGROUND 9
-/* Global Flags */
-#define FLG_STOP_ON_EXCEPTION 0x00000001
-#define FLG_SHOW_LDR_SNAPS 0x00000002
-#define FLG_DEBUG_INITIAL_COMMAND 0x00000004
-#define FLG_STOP_ON_HUNG_GUI 0x00000008
-#define FLG_HEAP_ENABLE_TAIL_CHECK 0x00000010
-#define FLG_HEAP_ENABLE_FREE_CHECK 0x00000020
-#define FLG_HEAP_VALIDATE_PARAMETERS 0x00000040
-#define FLG_HEAP_VALIDATE_ALL 0x00000080
-#define FLG_POOL_ENABLE_TAIL_CHECK 0x00000100
-#define FLG_POOL_ENABLE_FREE_CHECK 0x00000200
-#define FLG_POOL_ENABLE_TAGGING 0x00000400
-#define FLG_HEAP_ENABLE_TAGGING 0x00000800
-#define FLG_USER_STACK_TRACE_DB 0x00001000
-#define FLG_KERNEL_STACK_TRACE_DB 0x00002000
-#define FLG_MAINTAIN_OBJECT_TYPELIST 0x00004000
-#define FLG_HEAP_ENABLE_TAG_BY_DLL 0x00008000
-#define FLG_IGNORE_DEBUG_PRIV 0x00010000
-#define FLG_ENABLE_CSRDEBUG 0x00020000
-#define FLG_ENABLE_KDEBUG_SYMBOL_LOAD 0x00040000
-#define FLG_DISABLE_PAGE_KERNEL_STACKS 0x00080000
-#define FLG_HEAP_ENABLE_CALL_TRACING 0x00100000
-#define FLG_HEAP_DISABLE_COALESCING 0x00200000
-#define FLG_ENABLE_CLOSE_EXCEPTIONS 0x00400000
-#define FLG_ENABLE_EXCEPTION_LOGGING 0x00800000
-#define FLG_ENABLE_HANDLE_TYPE_TAGGING 0x01000000
-#define FLG_HEAP_PAGE_ALLOCS 0x02000000
-#define FLG_DEBUG_INITIAL_COMMAND_EX 0x04000000
-
-/* ENUMERATIONS **************************************************************/
+#if 0
+//
+// Job Access Types
+//
+#define JOB_OBJECT_ASSIGN_PROCESS 0x1
+#define JOB_OBJECT_SET_ATTRIBUTES 0x2
+#define JOB_OBJECT_QUERY 0x4
+#define JOB_OBJECT_TERMINATE 0x8
+#define JOB_OBJECT_SET_SECURITY_ATTRIBUTES 0x10
+#define JOB_OBJECT_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 31)
+#endif
#ifdef NTOS_MODE_USER
+//
+// Current Process/Thread built-in 'special' handles
+//
+#define NtCurrentProcess() ((HANDLE)(LONG_PTR)-1)
+#define ZwCurrentProcess() NtCurrentProcess()
+#define NtCurrentThread() ((HANDLE)(LONG_PTR)-2)
+#define ZwCurrentThread() NtCurrentThread()
+
+//
+// Process/Thread/Job Information Classes for NtQueryInformationProcess/Thread/Job
+//
typedef enum _PROCESSINFOCLASS
{
ProcessBasicInformation,
@@ -169,9 +194,9 @@ typedef enum _THREADINFOCLASS
ThreadActualBasePriority,
MaxThreadInfoClass
} THREADINFOCLASS;
-#endif
-#ifndef NTOS_MODE_USER
+#else
+
typedef enum _JOBOBJECTINFOCLASS
{
JobObjectBasicAccountingInformation = 1,
@@ -186,12 +211,18 @@ typedef enum _JOBOBJECTINFOCLASS
JobObjectJobSetInformation,
MaxJobObjectInfoClass
} JOBOBJECTINFOCLASS;
-#endif
-/* FUNCTION TYPES ************************************************************/
-typedef VOID (NTAPI *PPEBLOCKROUTINE)(PVOID);
+//
+// Declare empty structure definitions so that they may be referenced by
+// routines before they are defined
+//
+struct _W32THREAD;
+struct _W32PROCESS;
+struct _ETHREAD;
-#ifndef NTOS_MODE_USER
+//
+// Win32K Process and Thread Callbacks
+//
typedef NTSTATUS
(NTAPI *PW32_PROCESS_CALLBACK)(
struct _EPROCESS *Process,
@@ -203,35 +234,51 @@ typedef NTSTATUS
struct _ETHREAD *Thread,
BOOLEAN Create
);
+
#endif
-/* TYPES *********************************************************************/
-
-struct _W32THREAD;
-struct _W32PROCESS;
-
-struct _ETHREAD;
-
#ifdef NTOS_MODE_USER
+
+//
+// ClientID Structure
+//
typedef struct _CLIENT_ID
{
HANDLE UniqueProcess;
HANDLE UniqueThread;
} CLIENT_ID, *PCLIENT_ID;
+
#endif
+//
+// Descriptor Table Entry Definition
+//
typedef struct _DESCRIPTOR_TABLE_ENTRY
{
ULONG Selector;
LDT_ENTRY Descriptor;
} DESCRIPTOR_TABLE_ENTRY, *PDESCRIPTOR_TABLE_ENTRY;
+//
+// PEB Lock Routine
+//
+typedef VOID
+(NTAPI *PPEBLOCKROUTINE)(
+ PVOID PebLock
+);
+
+//
+// PEB Free Block Descriptor
+//
typedef struct _PEB_FREE_BLOCK
{
struct _PEB_FREE_BLOCK* Next;
ULONG Size;
} PEB_FREE_BLOCK, *PPEB_FREE_BLOCK;
+//
+// Process Environment Block (PEB)
+//
typedef struct _PEB
{
UCHAR InheritedAddressSpace; /* 00h */
@@ -293,6 +340,9 @@ typedef struct _PEB
UNICODE_STRING CSDVersion; /* 1DCh */
} PEB, *PPEB;
+//
+// GDI Batch Descriptor
+//
typedef struct _GDI_TEB_BATCH
{
ULONG Offset;
@@ -300,6 +350,9 @@ typedef struct _GDI_TEB_BATCH
ULONG Buffer[0x136];
} GDI_TEB_BATCH, *PGDI_TEB_BATCH;
+//
+// Initial TEB
+//
typedef struct _INITIAL_TEB
{
PVOID PreviousStackBase;
@@ -309,6 +362,9 @@ typedef struct _INITIAL_TEB
PVOID AllocatedStackBase;
} INITIAL_TEB, *PINITIAL_TEB;
+//
+// TEB Active Frame Structures
+//
typedef struct _TEB_ACTIVE_FRAME_CONTEXT
{
ULONG Flags;
@@ -322,6 +378,9 @@ typedef struct _TEB_ACTIVE_FRAME
PTEB_ACTIVE_FRAME_CONTEXT Context;
} TEB_ACTIVE_FRAME, *PTEB_ACTIVE_FRAME;
+//
+// Thread Environment Block (TEB)
+//
typedef struct _TEB
{
NT_TIB Tib; /* 00h */
@@ -398,6 +457,10 @@ typedef struct _TEB
} TEB, *PTEB;
#ifdef NTOS_MODE_USER
+
+//
+// Process Information Structures for NtQueryProcessInformation
+//
typedef struct _PROCESS_BASIC_INFORMATION
{
NTSTATUS ExitStatus;
@@ -442,6 +505,7 @@ typedef struct _PROCESS_SESSION_INFORMATION
{
ULONG SessionId;
} PROCESS_SESSION_INFORMATION, *PPROCESS_SESSION_INFORMATION;
+
#endif
typedef struct _PROCESS_PRIORITY_CLASS
@@ -450,6 +514,9 @@ typedef struct _PROCESS_PRIORITY_CLASS
UCHAR PriorityClass;
} PROCESS_PRIORITY_CLASS, *PPROCESS_PRIORITY_CLASS;
+//
+// Thread Information Structures for NtQueryProcessInformation
+//
typedef struct _THREAD_BASIC_INFORMATION
{
NTSTATUS ExitStatus;
@@ -466,6 +533,9 @@ typedef struct _THREAD_BASIC_INFORMATION
#include
#endif
+//
+// EPROCESS Quota Structures
+//
typedef struct _EPROCESS_QUOTA_ENTRY
{
SIZE_T Usage;
@@ -482,6 +552,9 @@ typedef struct _EPROCESS_QUOTA_BLOCK
ULONG ProcessCount;
} EPROCESS_QUOTA_BLOCK, *PEPROCESS_QUOTA_BLOCK;
+//
+// FIXME: This really belongs in mmtypes.h
+//
typedef struct _PAGEFAULT_HISTORY
{
ULONG CurrentIndex;
@@ -491,20 +564,29 @@ typedef struct _PAGEFAULT_HISTORY
PROCESS_WS_WATCH_INFORMATION WatchInfo[1];
} PAGEFAULT_HISTORY, *PPAGEFAULT_HISTORY;
+//
+// Process Impersonation Information
+//
typedef struct _PS_IMPERSONATION_INFORMATION
{
- PACCESS_TOKEN Token;
- BOOLEAN CopyOnOpen;
- BOOLEAN EffectiveOnly;
- SECURITY_IMPERSONATION_LEVEL ImpersonationLevel;
+ PACCESS_TOKEN Token;
+ BOOLEAN CopyOnOpen;
+ BOOLEAN EffectiveOnly;
+ SECURITY_IMPERSONATION_LEVEL ImpersonationLevel;
} PS_IMPERSONATION_INFORMATION, *PPS_IMPERSONATION_INFORMATION;
+//
+// Process Termination Port
+//
typedef struct _TERMINATION_PORT
{
struct _TERMINATION_PORT *Next;
PVOID Port;
} TERMINATION_PORT, *PTERMINATION_PORT;
+//
+// Executive Thread (ETHREAD)
+//
#include
typedef struct _ETHREAD
{
@@ -607,6 +689,9 @@ typedef struct _ETHREAD
UCHAR ActiveFaultCount; /* 24E */
} ETHREAD;
+//
+// Executive Process (EPROCESS)
+//
typedef struct _EPROCESS
{
KPROCESS Pcb; /* 000 */
@@ -745,6 +830,9 @@ typedef struct _EPROCESS
} EPROCESS;
#include
+//
+// Job Token Filter Data
+//
#include
typedef struct _PS_JOB_TOKEN_FILTER
{
@@ -759,6 +847,9 @@ typedef struct _PS_JOB_TOKEN_FILTER
ULONG CapturedPrivilegesLength;
} PS_JOB_TOKEN_FILTER, *PPS_JOB_TOKEN_FILTER;
+//
+// Executive Job (EJOB)
+//
typedef struct _EJOB
{
KEVENT Event;
@@ -808,6 +899,9 @@ typedef struct _EJOB
} EJOB, *PEJOB;
#include
+//
+// Win32K Callback Registration Data
+//
typedef struct _W32_CALLOUT_DATA
{
PW32_PROCESS_CALLBACK W32ProcessCallout;
@@ -831,6 +925,6 @@ typedef struct _W32_CALLOUT_DATA
OB_CREATE_METHOD DesktopCreate;
} W32_CALLOUT_DATA, *PW32_CALLOUT_DATA;
-#endif
+#endif // !NTOS_MODE_USER
-#endif
+#endif // _PSTYPES_H
diff --git a/reactos/include/ndk/readme.txt b/reactos/include/ndk/readme.txt
new file mode 100644
index 00000000000..61085e652a8
--- /dev/null
+++ b/reactos/include/ndk/readme.txt
@@ -0,0 +1,52 @@
+Native Development Kit README
+ NDK 1.00
+-----------------------------
+
+1. LICENSE
+
+1.1 OPEN SOURCE USAGE
+
+Open Source Projects may choose to use one of either the two following licenses:
+
+GNU GENERAL PUBLIC LICENSE Version 2, June 1991
+
+ OR
+
+GNU LESSER GENERAL PUBLIC LICENSE Version 2.1, February 1999
+
+The choice is yours to make based on the license which is most compatible with your
+software.
+
+You MUST read GPL.TXT or LGPL.TXT after your decision. Violating your chosen license
+voids your usage rights of the NDK and will lead to legal action on the part of the
+author.
+
+If your Open Source product does not use a license which is compatible with the ones
+listed above, please contact the author to reach a mutual agreement to find a better
+solution for your product. Alternatively, you may choose to use the Proprietary Usage
+license displayed below in section 1.2
+
+If you are unsure of whether or not your product qualifies as an Open Source product,
+please contact the Free Software Foundation, or visit their website at www.fsf.org.
+
+
+1.2 PROPRIETARY USAGE
+
+Because it may be undesirable or impossible to adapt this software to your commercial
+and/or proprietary product(s) and/or service(s) using a (L)GPL license, proprietary
+products are free to use the following license:
+
+NDK LICENSE Version 1, November 2005
+
+You MUST read NDK.TXT for the full text of this license. Violating your chosen license
+voids your usage rights of the NDK, constitutes a copyright violation, and will lead to
+legal action on the part of the author.
+
+If you are unsure of have any questions about the NDK License, please contact the
+author for further clarification.
+
+2. USAGE
+
+2.1 TODO (COPY FROM WIKI)
+
+... TODO ... (COPY FROM WIKI)
diff --git a/reactos/include/ndk/rtlfuncs.h b/reactos/include/ndk/rtlfuncs.h
index bd58ab5cec6..3822cc21bde 100644
--- a/reactos/include/ndk/rtlfuncs.h
+++ b/reactos/include/ndk/rtlfuncs.h
@@ -1,26 +1,204 @@
-/*
- * PROJECT: ReactOS Native Headers
- * FILE: include/ndk/rtlfuncs.h
- * PURPOSE: Prototypes for Runtime Library Functions 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:
+
+ rtlfuncs.h
+
+Abstract:
+
+ Function definitions for the Run-Time Library
+
+Author:
+
+ Alex Ionescu (alex.ionescu@reactos.com) 06-Oct-2004
+
+--*/
+
#ifndef _RTLFUNCS_H
#define _RTLFUNCS_H
-/* DEPENDENCIES **************************************************************/
+//
+// Dependencies
+//
#include
#include "extypes.h"
#include "rtltypes.h"
-/* MACROS ********************************************************************/
+#ifdef NTOS_MODE_USER
-/* FIXME: Eventually move the ones in rtltypes.h here... */
+//
+// List Functions
+//
+FORCEINLINE
+VOID
+InitializeListHead(
+ IN PLIST_ENTRY ListHead
+)
+{
+ ListHead->Flink = ListHead->Blink = ListHead;
+}
+
+FORCEINLINE
+VOID
+InsertHeadList(
+ IN PLIST_ENTRY ListHead,
+ IN PLIST_ENTRY Entry
+)
+{
+ PLIST_ENTRY OldFlink;
+ OldFlink = ListHead->Flink;
+ Entry->Flink = OldFlink;
+ Entry->Blink = ListHead;
+ OldFlink->Blink = Entry;
+ ListHead->Flink = Entry;
+}
+
+FORCEINLINE
+VOID
+InsertTailList(
+ IN PLIST_ENTRY ListHead,
+ IN PLIST_ENTRY Entry
+)
+{
+ PLIST_ENTRY OldBlink;
+ OldBlink = ListHead->Blink;
+ Entry->Flink = ListHead;
+ Entry->Blink = OldBlink;
+ OldBlink->Flink = Entry;
+ ListHead->Blink = Entry;
+}
+
+BOOLEAN
+FORCEINLINE
+IsListEmpty(
+ IN const LIST_ENTRY * ListHead
+)
+{
+ return (BOOLEAN)(ListHead->Flink == ListHead);
+}
+
+FORCEINLINE
+PSINGLE_LIST_ENTRY
+PopEntryList(
+ PSINGLE_LIST_ENTRY ListHead
+)
+{
+ PSINGLE_LIST_ENTRY FirstEntry;
+ FirstEntry = ListHead->Next;
+ if (FirstEntry != NULL) {
+ ListHead->Next = FirstEntry->Next;
+ }
+
+ return FirstEntry;
+}
+
+FORCEINLINE
+VOID
+PushEntryList(
+ PSINGLE_LIST_ENTRY ListHead,
+ PSINGLE_LIST_ENTRY Entry
+)
+{
+ Entry->Next = ListHead->Next;
+ ListHead->Next = Entry;
+}
+
+FORCEINLINE
+BOOLEAN
+RemoveEntryList(
+ IN PLIST_ENTRY Entry)
+{
+ PLIST_ENTRY OldFlink;
+ PLIST_ENTRY OldBlink;
+
+ OldFlink = Entry->Flink;
+ OldBlink = Entry->Blink;
+ OldFlink->Blink = OldBlink;
+ OldBlink->Flink = OldFlink;
+ return (BOOLEAN)(OldFlink == OldBlink);
+}
+
+FORCEINLINE
+PLIST_ENTRY
+RemoveHeadList(
+ IN PLIST_ENTRY ListHead)
+{
+ PLIST_ENTRY Flink;
+ PLIST_ENTRY Entry;
+
+ Entry = ListHead->Flink;
+ Flink = Entry->Flink;
+ ListHead->Flink = Flink;
+ Flink->Blink = ListHead;
+ return Entry;
+}
+
+FORCEINLINE
+PLIST_ENTRY
+RemoveTailList(
+ IN PLIST_ENTRY ListHead)
+{
+ PLIST_ENTRY Blink;
+ PLIST_ENTRY Entry;
+
+ Entry = ListHead->Blink;
+ Blink = Entry->Blink;
+ ListHead->Blink = Blink;
+ Blink->Flink = ListHead;
+ return Entry;
+}
+
+//
+// LUID Macros
+//
+#define RtlEqualLuid(L1, L2) (((L1)->HighPart == (L2)->HighPart) && \
+ ((L1)->LowPart == (L2)->LowPart))
+
+#endif
+
+//
+// RTL Splay Tree Functions
+//
+NTSYSAPI
+PRTL_SPLAY_LINKS
+NTAPI
+RtlSplay(PRTL_SPLAY_LINKS Links);
+
+NTSYSAPI
+PRTL_SPLAY_LINKS
+NTAPI
+RtlDelete(PRTL_SPLAY_LINKS Links);
+
+NTSYSAPI
+VOID
+NTAPI
+RtlDeleteNoSplay(
+ PRTL_SPLAY_LINKS Links,
+ PRTL_SPLAY_LINKS *Root
+);
+
+NTSYSAPI
+PRTL_SPLAY_LINKS
+NTAPI
+RtlSubtreeSuccessor(PRTL_SPLAY_LINKS Links);
+
+NTSYSAPI
+PRTL_SPLAY_LINKS
+NTAPI
+RtlSubtreePredecessor(PRTL_SPLAY_LINKS Links);
+
+NTSYSAPI
+PRTL_SPLAY_LINKS
+NTAPI
+RtlRealSuccessor(PRTL_SPLAY_LINKS Links);
+
+NTSYSAPI
+PRTL_SPLAY_LINKS
+NTAPI
+RtlRealPredecessor(PRTL_SPLAY_LINKS Links);
-/*
- * Splay Tree Macros
- */
#define RtlIsLeftChild(Links) \
(RtlLeftChild(RtlParent(Links)) == (PRTL_SPLAY_LINKS)(Links))
@@ -68,52 +246,9 @@
_SplayChild->Parent = _SplayParent; \
}
-/* PROTOTYPES ****************************************************************/
-
-/*
- * Splay Tree Functions
- */
-NTSYSAPI
-PRTL_SPLAY_LINKS
-NTAPI
-RtlSplay(PRTL_SPLAY_LINKS Links);
-
-NTSYSAPI
-PRTL_SPLAY_LINKS
-NTAPI
-RtlDelete(PRTL_SPLAY_LINKS Links);
-
-NTSYSAPI
-VOID
-NTAPI
-RtlDeleteNoSplay(
- PRTL_SPLAY_LINKS Links,
- PRTL_SPLAY_LINKS *Root
-);
-
-NTSYSAPI
-PRTL_SPLAY_LINKS
-NTAPI
-RtlSubtreeSuccessor(PRTL_SPLAY_LINKS Links);
-
-NTSYSAPI
-PRTL_SPLAY_LINKS
-NTAPI
-RtlSubtreePredecessor(PRTL_SPLAY_LINKS Links);
-
-NTSYSAPI
-PRTL_SPLAY_LINKS
-NTAPI
-RtlRealSuccessor(PRTL_SPLAY_LINKS Links);
-
-NTSYSAPI
-PRTL_SPLAY_LINKS
-NTAPI
-RtlRealPredecessor(PRTL_SPLAY_LINKS Links);
-
-/*
- * Error and Exception Functions
- */
+//
+// Error and Exception Functions
+//
NTSYSAPI
PVOID
NTAPI
@@ -185,10 +320,9 @@ RtlUnwind(
IN PVOID ReturnValue
);
-/*
- * Heap Functions
- */
-
+//
+// Heap Functions
+//
NTSYSAPI
PVOID
NTAPI
@@ -273,10 +407,9 @@ RtlValidateHeap(
#define RtlGetProcessHeap() (NtCurrentPeb()->ProcessHeap)
-
-/*
- * Security Functions
- */
+//
+// Security Functions
+//
NTSYSAPI
NTSTATUS
NTAPI
@@ -787,9 +920,9 @@ RtlSetSecurityObject(
IN HANDLE Token
);
-/*
- * Single-Character Functions
- */
+//
+// Single-Character Functions
+//
NTSYSAPI
NTSTATUS
NTAPI
@@ -853,7 +986,13 @@ RtlCharToInteger(
PULONG Value
);
-#if (defined(_M_IX86) && (_MSC_FULL_VER > 13009037)) || ((defined(_M_AMD64) || defined(_M_IA64)) && (_MSC_FULL_VER > 13009175))
+//
+// Byte Swap Functions
+//
+#if (defined(_M_IX86) && (_MSC_FULL_VER > 13009037)) || \
+ ((defined(_M_AMD64) || \
+ defined(_M_IA64)) && (_MSC_FULL_VER > 13009175))
+
unsigned short __cdecl _byteswap_ushort(unsigned short);
unsigned long __cdecl _byteswap_ulong (unsigned long);
unsigned __int64 __cdecl _byteswap_uint64(unsigned __int64);
@@ -863,6 +1002,7 @@ unsigned __int64 __cdecl _byteswap_uint64(unsigned __int64);
#define RtlUshortByteSwap(_x) _byteswap_ushort((USHORT)(_x))
#define RtlUlongByteSwap(_x) _byteswap_ulong((_x))
#define RtlUlonglongByteSwap(_x) _byteswap_uint64((_x))
+
#else
USHORT
@@ -879,20 +1019,22 @@ RtlUlonglongByteSwap(IN ULONGLONG Source);
#endif
-/*
- * Unicode->Ansi String Functions
- */
+//
+// Unicode->Ansi String Functions
+//
NTSYSAPI
ULONG
NTAPI
RtlxUnicodeStringToAnsiSize(IN PCUNICODE_STRING UnicodeString);
#ifdef NTOS_MODE_USER
+
#define RtlUnicodeStringToAnsiSize(STRING) ( \
NLS_MB_CODE_PAGE_TAG ? \
RtlxUnicodeStringToAnsiSize(STRING) : \
((STRING)->Length + sizeof(UNICODE_NULL)) / sizeof(WCHAR) \
)
+
#endif
NTSYSAPI
@@ -904,9 +1046,9 @@ RtlUnicodeStringToAnsiString(
BOOLEAN AllocateDestinationString
);
-/*
- * Unicode->OEM String Functions
- */
+//
+// Unicode->OEM String Functions
+//
NTSYSAPI
NTSTATUS
NTAPI
@@ -951,14 +1093,17 @@ NTAPI
RtlxUnicodeStringToOemSize(IN PCUNICODE_STRING UnicodeString);
#ifdef NTOS_MODE_USER
-#define RtlUnicodeStringToOemSize(STRING) ( \
- NLS_MB_OEM_CODE_PAGE_TAG ? \
- RtlxUnicodeStringToOemSize(STRING) : \
- ((STRING)->Length + sizeof(UNICODE_NULL)) / sizeof(WCHAR) \
+
+#define RtlUnicodeStringToOemSize(STRING) ( \
+ NLS_MB_OEM_CODE_PAGE_TAG ? \
+ RtlxUnicodeStringToOemSize(STRING) : \
+ ((STRING)->Length + sizeof(UNICODE_NULL)) / sizeof(WCHAR) \
)
-#define RtlUnicodeStringToCountedOemSize(STRING) ( \
- (ULONG)(RtlUnicodeStringToOemSize(STRING) - sizeof(ANSI_NULL)) \
+
+#define RtlUnicodeStringToCountedOemSize(STRING) ( \
+ (ULONG)(RtlUnicodeStringToOemSize(STRING) - sizeof(ANSI_NULL)) \
)
+
#endif
NTSYSAPI
@@ -972,9 +1117,9 @@ RtlUnicodeToOemN(
ULONG UnicodeSize
);
-/*
- * Unicode->MultiByte String Functions
- */
+//
+// Unicode->MultiByte String Functions
+//
NTSYSAPI
NTSTATUS
NTAPI
@@ -1011,20 +1156,9 @@ ULONG
NTAPI
RtlxOemStringToUnicodeSize(IN PCOEM_STRING OemString);
-/*
- * OEM to Unicode Functions
- */
-#ifdef NTOS_MODE_USER
-#define RtlOemStringToUnicodeSize(STRING) ( \
- NLS_MB_OEM_CODE_PAGE_TAG ? \
- RtlxOemStringToUnicodeSize(STRING) : \
- ((STRING)->Length + sizeof(ANSI_NULL)) * sizeof(WCHAR) \
-)
-#define RtlOemStringToCountedUnicodeSize(STRING) ( \
- (ULONG)(RtlOemStringToUnicodeSize(STRING) - sizeof(UNICODE_NULL)) \
-)
-#endif
-
+//
+// OEM to Unicode Functions
+//
NTSYSAPI
NTSTATUS
NTAPI
@@ -1045,9 +1179,23 @@ RtlOemToUnicodeN(
ULONG BytesInOemString
);
-/*
- * Ansi->Unicode String Functions
- */
+#ifdef NTOS_MODE_USER
+
+#define RtlOemStringToUnicodeSize(STRING) ( \
+ NLS_MB_OEM_CODE_PAGE_TAG ? \
+ RtlxOemStringToUnicodeSize(STRING) : \
+ ((STRING)->Length + sizeof(ANSI_NULL)) * sizeof(WCHAR) \
+)
+
+#define RtlOemStringToCountedUnicodeSize(STRING) ( \
+ (ULONG)(RtlOemStringToUnicodeSize(STRING) - sizeof(UNICODE_NULL)) \
+)
+
+#endif
+
+//
+// Ansi->Unicode String Functions
+//
NTSYSAPI
ULONG
NTAPI
@@ -1065,11 +1213,13 @@ RtlAnsiStringToUnicodeString(
);
#ifdef NTOS_MODE_USER
-#define RtlAnsiStringToUnicodeSize(STRING) ( \
- NLS_MB_CODE_PAGE_TAG ? \
- RtlxAnsiStringToUnicodeSize(STRING) : \
- ((STRING)->Length + sizeof(ANSI_NULL)) * sizeof(WCHAR) \
+
+#define RtlAnsiStringToUnicodeSize(STRING) ( \
+ NLS_MB_CODE_PAGE_TAG ? \
+ RtlxAnsiStringToUnicodeSize(STRING) : \
+ ((STRING)->Length + sizeof(ANSI_NULL)) * sizeof(WCHAR) \
)
+
#endif
NTSYSAPI
@@ -1080,9 +1230,9 @@ RtlCreateUnicodeStringFromAsciiz(
IN PCSZ Source
);
-/*
- * Unicode String Functions
- */
+//
+// Unicode String Functions
+//
NTSYSAPI
NTSTATUS
NTAPI
@@ -1125,6 +1275,7 @@ RtlCreateUnicodeString(
);
#ifdef NTOS_MODE_USER
+
NTSYSAPI
NTSTATUS
NTAPI
@@ -1133,6 +1284,7 @@ RtlDowncaseUnicodeString(
IN PCUNICODE_STRING UniSource,
IN BOOLEAN AllocateDestinationString
);
+
#endif
NTSYSAPI
@@ -1220,9 +1372,9 @@ RtlUnicodeStringToInteger(
PULONG Value
);
-/*
- * Ansi String Functions
- */
+//
+// Ansi String Functions
+//
NTSYSAPI
VOID
NTAPI
@@ -1236,17 +1388,17 @@ RtlInitAnsiString(
PCSZ SourceString
);
-/*
- * OEM String Functions
- */
+//
+// OEM String Functions
+//
NTSYSAPI
VOID
NTAPI
RtlFreeOemString(IN POEM_STRING OemString);
-/*
- * MultiByte->Unicode String Functions
- */
+//
+// MultiByte->Unicode String Functions
+//
NTSYSAPI
NTSTATUS
NTAPI
@@ -1267,9 +1419,9 @@ RtlMultiByteToUnicodeSize(
ULONG MbSize
);
-/*
- * Atom Functions
- */
+//
+// Atom Functions
+//
NTSYSAPI
NTSTATUS
NTAPI
@@ -1329,9 +1481,9 @@ RtlLookupAtomInAtomTable(
OUT PRTL_ATOM Atom
);
-/*
- * Memory Functions
- */
+//
+// Memory Functions
+//
NTSYSAPI
VOID
NTAPI
@@ -1341,9 +1493,9 @@ RtlFillMemoryUlong(
IN ULONG Fill
);
-/*
- * Process Management Functions
- */
+//
+// Process Management Functions
+//
NTSYSAPI
VOID
NTAPI
@@ -1442,9 +1594,36 @@ RtlSetProcessIsCritical(
IN BOOLEAN IsWinlogon
);
-/*
- * Environment/Path Functions
- */
+static __inline
+struct _PEB*
+NtCurrentPeb(VOID)
+{
+ struct _PEB *pPeb;
+
+#if defined(__GNUC__)
+
+ __asm__ __volatile__
+ (
+ "movl %%fs:0x30, %0\n" /* fs:30h == Teb->Peb */
+ : "=r" (pPeb) /* can't have two memory operands */
+ : /* no inputs */
+ );
+
+#elif defined(_MSC_VER)
+
+ __asm mov eax, fs:0x30;
+ __asm mov pPeb, eax
+
+#else
+#error Unknown compiler for inline assembler
+#endif
+
+ return pPeb;
+}
+
+//
+// Environment/Path Functions
+//
NTSYSAPI
NTSTATUS
NTAPI
@@ -1550,9 +1729,9 @@ RtlSetEnvironmentVariable(
PUNICODE_STRING Value
);
-/*
- * Critical Section/Resource Functions
- */
+//
+// Critical Section/Resource Functions
+//
NTSYSAPI
NTSTATUS
NTAPI
@@ -1661,9 +1840,9 @@ RtlReleaseResource(
IN PRTL_RESOURCE Resource
);
-/*
- * Compression Functions
- */
+//
+// Compression Functions
+//
NTSYSAPI
NTSTATUS
NTAPI
@@ -1699,9 +1878,9 @@ RtlGetCompressionWorkSpaceSize(
OUT PULONG CompressFragmentWorkSpaceSize
);
-/*
- * Debug Info Functions
- */
+//
+// Debug Info Functions
+//
NTSYSAPI
PRTL_DEBUG_BUFFER
NTAPI
@@ -1724,9 +1903,9 @@ RtlQueryProcessDebugInformation(
IN OUT PRTL_DEBUG_BUFFER DebugBuffer
);
-/*
- * Bitmap Functions
- */
+//
+// Bitmap Functions
+//
NTSYSAPI
BOOLEAN
NTAPI
@@ -1790,9 +1969,9 @@ RtlSetBits (
IN ULONG NumberToSet
);
-/*
- * Timer Functions
- */
+//
+// Timer Functions
+//
NTSYSAPI
NTSTATUS
NTAPI
@@ -1843,9 +2022,9 @@ NTSTATUS
NTAPI
RtlDeleteTimerQueue(HANDLE TimerQueue);
-/*
- * Debug Functions
- */
+//
+// Debug Functions
+//
ULONG
__cdecl
DbgPrint(
@@ -1857,9 +2036,9 @@ VOID
NTAPI
DbgBreakPoint(VOID);
-/*
- * Handle Table Functions
- */
+//
+// Handle Table Functions
+//
NTSYSAPI
PRTL_HANDLE_TABLE_ENTRY
NTAPI
@@ -1907,9 +2086,9 @@ RtlIsValidIndexHandle(
OUT PRTL_HANDLE_TABLE_ENTRY *Handle
);
-/*
- * PE Functions
- */
+//
+// PE Functions
+//
NTSYSAPI
NTSTATUS
NTAPI
@@ -1960,9 +2139,9 @@ RtlImageRvaToSection(
ULONG Rva
);
-/*
- * Registry Functions
- */
+//
+// Registry Functions
+//
NTSYSAPI
NTSTATUS
NTAPI
@@ -2017,9 +2196,9 @@ RtlWriteRegistryValue(
ULONG ValueLength
);
-/*
- * NLS Functions
- */
+//
+// NLS Functions
+//
NTSYSAPI
VOID
NTAPI
@@ -2043,14 +2222,17 @@ VOID
NTAPI
RtlResetRtlTranslations(IN PNLSTABLEINFO NlsTable);
-/*
- * Misc conversion functions
- */
#if defined(NTOS_MODE_USER) && !defined(NO_RTL_INLINES)
+
+//
+// Misc conversion functions
+//
static __inline
LARGE_INTEGER
NTAPI_INLINE
-RtlConvertLongToLargeInteger(LONG SignedInteger)
+RtlConvertLongToLargeIntegerf(
+ LONG SignedInteger
+)
{
LARGE_INTEGER Result;
@@ -2063,7 +2245,8 @@ LARGE_INTEGER
NTAPI_INLINE
RtlEnlargedIntegerMultiply(
LONG Multiplicand,
- LONG Multiplier)
+ LONG Multiplier
+)
{
LARGE_INTEGER Product;
@@ -2077,7 +2260,8 @@ NTAPI_INLINE
RtlEnlargedUnsignedDivide(
IN ULARGE_INTEGER Dividend,
IN ULONG Divisor,
- IN PULONG Remainder OPTIONAL)
+ IN PULONG Remainder OPTIONAL
+)
{
ULONG Quotient;
@@ -2094,7 +2278,8 @@ LARGE_INTEGER
NTAPI_INLINE
RtlEnlargedUnsignedMultiply(
ULONG Multiplicand,
- ULONG Multiplier)
+ ULONG Multiplier
+)
{
LARGE_INTEGER Product;
@@ -2108,9 +2293,9 @@ ULONG
NTAPI
RtlUniform(PULONG Seed);
-/*
- * Network Functions
- */
+//
+// Network Functions
+//
NTSYSAPI
NTSTATUS
NTAPI
@@ -2121,9 +2306,9 @@ RtlIpv4StringToAddressW(
OUT PULONG IpAddr
);
-/*
- * Time Functions
- */
+//
+// Time Functions
+//
NTSYSAPI
NTSTATUS
NTAPI
@@ -2158,9 +2343,9 @@ RtlTimeToTimeFields(
PTIME_FIELDS TimeFields
);
-/*
- * Version Functions
- */
+//
+// Version Functions
+//
NTSYSAPI
NTSTATUS
NTAPI
@@ -2180,28 +2365,4 @@ BOOLEAN
NTAPI
RtlGetNtProductType(OUT PNT_PRODUCT_TYPE ProductType);
-static __inline struct _PEB* NtCurrentPeb (void)
-{
- struct _PEB * pPeb;
-
-#if defined(__GNUC__)
-
- __asm__ __volatile__
- (
- "movl %%fs:0x30, %0\n" /* fs:30h == Teb->Peb */
- : "=r" (pPeb) /* can't have two memory operands */
- : /* no inputs */
- );
-
-#elif defined(_MSC_VER)
-
- __asm mov eax, fs:0x30;
- __asm mov pPeb, eax
-
-#else
-#error Unknown compiler for inline assembler
-#endif
-
- return pPeb;
-}
#endif
diff --git a/reactos/include/ndk/rtltypes.h b/reactos/include/ndk/rtltypes.h
index 280d5ffb12c..445b9be95d1 100644
--- a/reactos/include/ndk/rtltypes.h
+++ b/reactos/include/ndk/rtltypes.h
@@ -1,256 +1,193 @@
-/*
- * PROJECT: ReactOS Native Headers
- * FILE: include/ndk/rtltypes.h
- * PURPOSE: Defintions for Runtime Library 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:
+
+ rtltypes.h
+
+Abstract:
+
+ Type definitions for the Run-Time Library
+
+Author:
+
+ Alex Ionescu (alex.ionescu@reactos.com) 06-Oct-2004
+
+--*/
+
#ifndef _RTLTYPES_H
#define _RTLTYPES_H
-/* DEPENDENCIES **************************************************************/
+//
+// Dependencies
+//
#include "pstypes.h"
-/* CONSTANTS *****************************************************************/
-#define MAXIMUM_LEADBYTES 12
+//
+// Maximum Atom Length
+//
+#define RTL_MAXIMUM_ATOM_LENGTH 255
-#define PPF_NORMALIZED 0x01
-#define PPF_PROFILE_USER 0x02
-#define PPF_PROFILE_SERVER 0x04
-#define PPF_PROFILE_KERNEL 0x08
+//
+// Process Parameters Flags (FIXME: Rename)
+//
+#define PPF_NORMALIZED 0x01
+#define PPF_PROFILE_USER 0x02
+#define PPF_PROFILE_SERVER 0x04
+#define PPF_PROFILE_KERNEL 0x08
+#define PPF_UNKNOWN 0x10
+#define PPF_RESERVE_1MB 0x20
+#define PPF_DISABLE_HEAP_CHECKS 0x100
+#define PPF_PROCESS_OR_1 0x200
+#define PPF_PROCESS_OR_2 0x400
-#define PPF_RESERVE_1MB 0x20
-#define PPF_DISABLE_HEAP_CHECKS 0x100
-#define PPF_PROCESS_OR_1 0x200
-#define PPF_PROCESS_OR_2 0x400
+//
+// Exception Flags
+//
+#define EXCEPTION_CHAIN_END ((PEXCEPTION_REGISTRATION_RECORD)-1)
+#define EXCEPTION_UNWINDING 0x02
+#define EXCEPTION_EXIT_UNWIND 0x04
+#define EXCEPTION_STACK_INVALID 0x08
+#define EXCEPTION_NESTED_CALL 0x10
+#define EXCEPTION_TARGET_UNWIND 0x20
+#define EXCEPTION_COLLIDED_UNWIND 0x20
-#define PEB_BASE (0x7FFDF000)
+//
+// Range and Range List Flags
+//
+#define RTL_RANGE_LIST_ADD_IF_CONFLICT 0x00000001
+#define RTL_RANGE_LIST_ADD_SHARED 0x00000002
-#define EXCEPTION_CHAIN_END ((PEXCEPTION_REGISTRATION_RECORD)-1)
-#define EXCEPTION_CONTINUE_SEARCH 0
-#define EXCEPTION_EXECUTE_HANDLER 1
+#define RTL_RANGE_SHARED 0x01
+#define RTL_RANGE_CONFLICT 0x02
-#define EXCEPTION_UNWINDING 0x02
-#define EXCEPTION_EXIT_UNWIND 0x04
-#define EXCEPTION_STACK_INVALID 0x8
-#define EXCEPTION_NESTED_CALL 0x10
-#define EXCEPTION_TARGET_UNWIND 0x20
-#define EXCEPTION_COLLIDED_UNWIND 0x20
+//
+// Registry Keys
+//
+#define RTL_REGISTRY_ABSOLUTE 0
+#define RTL_REGISTRY_SERVICES 1
+#define RTL_REGISTRY_CONTROL 2
+#define RTL_REGISTRY_WINDOWS_NT 3
+#define RTL_REGISTRY_DEVICEMAP 4
+#define RTL_REGISTRY_USER 5
+#define RTL_REGISTRY_MAXIMUM 6
+#define RTL_REGISTRY_HANDLE 0x40000000
+#define RTL_REGISTRY_OPTIONAL 0x80000000
+#define RTL_QUERY_REGISTRY_SUBKEY 0x00000001
+#define RTL_QUERY_REGISTRY_TOPKEY 0x00000002
+#define RTL_QUERY_REGISTRY_REQUIRED 0x00000004
+#define RTL_QUERY_REGISTRY_NOVALUE 0x00000008
+#define RTL_QUERY_REGISTRY_NOEXPAND 0x00000010
+#define RTL_QUERY_REGISTRY_DIRECT 0x00000020
+#define RTL_QUERY_REGISTRY_DELETE 0x00000040
-#define EH_NONCONTINUABLE 0x01
-#define EH_UNWINDING 0x02
-#define EH_EXIT_UNWIND 0x04
-#define EH_STACK_INVALID 0x08
-#define EH_NESTED_CALL 0x10
+//
+// Versioning
+//
+#define VER_MINORVERSION 0x0000001
+#define VER_MAJORVERSION 0x0000002
+#define VER_BUILDNUMBER 0x0000004
+#define VER_PLATFORMID 0x0000008
+#define VER_SERVICEPACKMINOR 0x0000010
+#define VER_SERVICEPACKMAJOR 0x0000020
+#define VER_SUITENAME 0x0000040
+#define VER_PRODUCT_TYPE 0x0000080
+#define VER_PLATFORM_WIN32s 0
+#define VER_PLATFORM_WIN32_WINDOWS 1
+#define VER_PLATFORM_WIN32_NT 2
+#define VER_EQUAL 1
+#define VER_GREATER 2
+#define VER_GREATER_EQUAL 3
+#define VER_LESS 4
+#define VER_LESS_EQUAL 5
+#define VER_AND 6
+#define VER_OR 7
+#define VER_CONDITION_MASK 7
+#define VER_NUM_BITS_PER_CONDITION_MASK 3
-#define RTL_RANGE_LIST_ADD_IF_CONFLICT 0x00000001
-#define RTL_RANGE_LIST_ADD_SHARED 0x00000002
+//
+// Timezone IDs
+//
+#define TIME_ZONE_ID_UNKNOWN 0
+#define TIME_ZONE_ID_STANDARD 1
+#define TIME_ZONE_ID_DAYLIGHT 2
+#define TIME_ZONE_ID_INVALID 0xFFFFFFFF
-#define RTL_RANGE_SHARED 0x01
-#define RTL_RANGE_CONFLICT 0x02
-
-/* Run-Time Library (RTL) Registry Constants */
-#define RTL_REGISTRY_ABSOLUTE 0
-#define RTL_REGISTRY_SERVICES 1
-#define RTL_REGISTRY_CONTROL 2
-#define RTL_REGISTRY_WINDOWS_NT 3
-#define RTL_REGISTRY_DEVICEMAP 4
-#define RTL_REGISTRY_USER 5
-#define RTL_REGISTRY_MAXIMUM 6
-#define RTL_REGISTRY_HANDLE 0x40000000
-#define RTL_REGISTRY_OPTIONAL 0x80000000
-#define RTL_QUERY_REGISTRY_SUBKEY 0x00000001
-#define RTL_QUERY_REGISTRY_TOPKEY 0x00000002
-#define RTL_QUERY_REGISTRY_REQUIRED 0x00000004
-#define RTL_QUERY_REGISTRY_NOVALUE 0x00000008
-#define RTL_QUERY_REGISTRY_NOEXPAND 0x00000010
-#define RTL_QUERY_REGISTRY_DIRECT 0x00000020
-#define RTL_QUERY_REGISTRY_DELETE 0x00000040
-
-/* Version Constants */
-#define VER_MINORVERSION 0x0000001
-#define VER_MAJORVERSION 0x0000002
-#define VER_BUILDNUMBER 0x0000004
-#define VER_PLATFORMID 0x0000008
-#define VER_SERVICEPACKMINOR 0x0000010
-#define VER_SERVICEPACKMAJOR 0x0000020
-#define VER_SUITENAME 0x0000040
-#define VER_PRODUCT_TYPE 0x0000080
-#define VER_PLATFORM_WIN32s 0
-#define VER_PLATFORM_WIN32_WINDOWS 1
-#define VER_PLATFORM_WIN32_NT 2
-#define VER_EQUAL 1
-#define VER_GREATER 2
-#define VER_GREATER_EQUAL 3
-#define VER_LESS 4
-#define VER_LESS_EQUAL 5
-#define VER_AND 6
-#define VER_OR 7
-#define VER_CONDITION_MASK 7
-#define VER_NUM_BITS_PER_CONDITION_MASK 3
-
-#define RTL_CRITSECT_TYPE 0
-#define RTL_RESOURCE_TYPE 1
+//
+// RTL Lock Type (Critical Section or Resource)
+//
+#define RTL_CRITSECT_TYPE 0
+#define RTL_RESOURCE_TYPE 1
#ifdef NTOS_MODE_USER
-/* RTL String Hash Algorithms */
-#define HASH_STRING_ALGORITHM_DEFAULT 0
-#define HASH_STRING_ALGORITHM_X65599 1
-#define HASH_STRING_ALGORITHM_INVALID 0xffffffff
-/* RtlDuplicateString settings */
-#define RTL_DUPLICATE_UNICODE_STRING_NULL_TERMINATE 1
-#define RTL_DUPLICATE_UNICODE_STRING_ALLOCATE_NULL_STRING 2
+//
+// String Hash Algorithms
+//
+#define HASH_STRING_ALGORITHM_DEFAULT 0
+#define HASH_STRING_ALGORITHM_X65599 1
+#define HASH_STRING_ALGORITHM_INVALID 0xffffffff
-/* For Size conversion macros */
-#define NLS_MB_CODE_PAGE_TAG NlsMbCodePageTag
-#define NLS_MB_OEM_CODE_PAGE_TAG NlsMbOemCodePageTag
-#define NLS_OEM_LEAD_BYTE_INFO NlsOemLeadByteInfo
+//
+// RtlDuplicateString Flags
+//
+#define RTL_DUPLICATE_UNICODE_STRING_NULL_TERMINATE 1
+#define RTL_DUPLICATE_UNICODE_STRING_ALLOCATE_NULL_STRING 2
-#define MAX_ATOM_LEN 255 /* TCHARS not including nullterm */
-
-/* List Macros */
-static __inline
-VOID
-InitializeListHead(
- IN PLIST_ENTRY ListHead)
-{
- ListHead->Flink = ListHead->Blink = ListHead;
-}
-
-static __inline
-VOID
-InsertHeadList(
- IN PLIST_ENTRY ListHead,
- IN PLIST_ENTRY Entry)
-{
- PLIST_ENTRY OldFlink;
- OldFlink = ListHead->Flink;
- Entry->Flink = OldFlink;
- Entry->Blink = ListHead;
- OldFlink->Blink = Entry;
- ListHead->Flink = Entry;
-}
-
-static __inline
-VOID
-InsertTailList(
- IN PLIST_ENTRY ListHead,
- IN PLIST_ENTRY Entry)
-{
- PLIST_ENTRY OldBlink;
- OldBlink = ListHead->Blink;
- Entry->Flink = ListHead;
- Entry->Blink = OldBlink;
- OldBlink->Flink = Entry;
- ListHead->Blink = Entry;
-}
-
-#define IsListEmpty(ListHead) \
- ((ListHead)->Flink == (ListHead))
-
-#define PopEntryList(ListHead) \
- (ListHead)->Next; \
- { \
- PSINGLE_LIST_ENTRY _FirstEntry; \
- _FirstEntry = (ListHead)->Next; \
- if (_FirstEntry != NULL) \
- (ListHead)->Next = _FirstEntry->Next; \
- }
-
-#define PushEntryList(_ListHead, _Entry) \
- (_Entry)->Next = (_ListHead)->Next; \
- (_ListHead)->Next = (_Entry); \
-
-static __inline
-BOOLEAN
-RemoveEntryList(
- IN PLIST_ENTRY Entry)
-{
- PLIST_ENTRY OldFlink;
- PLIST_ENTRY OldBlink;
-
- OldFlink = Entry->Flink;
- OldBlink = Entry->Blink;
- OldFlink->Blink = OldBlink;
- OldBlink->Flink = OldFlink;
- return (BOOLEAN)(OldFlink == OldBlink);
-}
-
-static __inline
-PLIST_ENTRY
-RemoveHeadList(
- IN PLIST_ENTRY ListHead)
-{
- PLIST_ENTRY Flink;
- PLIST_ENTRY Entry;
-
- Entry = ListHead->Flink;
- Flink = Entry->Flink;
- ListHead->Flink = Flink;
- Flink->Blink = ListHead;
- return Entry;
-}
-
-static __inline
-PLIST_ENTRY
-RemoveTailList(
- IN PLIST_ENTRY ListHead)
-{
- PLIST_ENTRY Blink;
- PLIST_ENTRY Entry;
-
- Entry = ListHead->Blink;
- Blink = Entry->Blink;
- ListHead->Blink = Blink;
- Blink->Flink = ListHead;
- return Entry;
-}
-
-#define IsFirstEntry(ListHead, Entry) \
- ((ListHead)->Flink == Entry)
-
-#define IsLastEntry(ListHead, Entry) \
- ((ListHead)->Blink == Entry)
-
-/*
- * Constant String Macro
- */
-#define RTL_CONSTANT_STRING(__SOURCE_STRING__) \
-{ \
- sizeof(__SOURCE_STRING__) - sizeof((__SOURCE_STRING__)[0]), \
- sizeof(__SOURCE_STRING__), \
- (__SOURCE_STRING__) \
-}
-
-#define RtlEqualLuid(L1, L2) (((L1)->HighPart == (L2)->HighPart) && \
- ((L1)->LowPart == (L2)->LowPart))
+//
+// Codepages
+//
+#define NLS_MB_CODE_PAGE_TAG NlsMbCodePageTag
+#define NLS_MB_OEM_CODE_PAGE_TAG NlsMbOemCodePageTag
+#define NLS_OEM_LEAD_BYTE_INFO NlsOemLeadByteInfo
#endif
+#define MAXIMUM_LEADBYTES 12
-/* RTL Debug Queries */
-#define RTL_DEBUG_QUERY_MODULES 0x01
-#define RTL_DEBUG_QUERY_BACKTRACES 0x02
-#define RTL_DEBUG_QUERY_HEAPS 0x04
-#define RTL_DEBUG_QUERY_HEAP_TAGS 0x08
-#define RTL_DEBUG_QUERY_HEAP_BLOCKS 0x10
-#define RTL_DEBUG_QUERY_LOCKS 0x20
+//
+// RTL Debug Queries
+//
+#define RTL_DEBUG_QUERY_MODULES 0x01
+#define RTL_DEBUG_QUERY_BACKTRACES 0x02
+#define RTL_DEBUG_QUERY_HEAPS 0x04
+#define RTL_DEBUG_QUERY_HEAP_TAGS 0x08
+#define RTL_DEBUG_QUERY_HEAP_BLOCKS 0x10
+#define RTL_DEBUG_QUERY_LOCKS 0x20
-/* RTL Handle Flags */
-#define RTL_HANDLE_VALID 0x1
+//
+// RTL Handle Flags
+//
+#define RTL_HANDLE_VALID 0x1
-/* RTL Atom Flags */
-#define RTL_ATOM_IS_PINNED 0x1
+//
+// RTL Atom Flags
+//
+#define RTL_ATOM_IS_PINNED 0x1
-/* EXPORTED DATA *************************************************************/
+//
+// Codepage Tags
+//
#ifdef NTOS_MODE_USER
extern BOOLEAN NTSYSAPI NLS_MB_CODE_PAGE_TAG;
extern BOOLEAN NTSYSAPI NLS_MB_OEM_CODE_PAGE_TAG;
+
+//
+// Constant String Macro
+//
+#define RTL_CONSTANT_STRING(__SOURCE_STRING__) \
+{ \
+ sizeof(__SOURCE_STRING__) - sizeof((__SOURCE_STRING__)[0]), \
+ sizeof(__SOURCE_STRING__), \
+ (__SOURCE_STRING__) \
+}
+
#endif
-/* ENUMERATIONS **************************************************************/
-
#ifdef NTOS_MODE_USER
+
+//
+// Table and Compare result types
+//
typedef enum _TABLE_SEARCH_RESULT
{
TableEmptyTree,
@@ -265,26 +202,59 @@ typedef enum _RTL_GENERIC_COMPARE_RESULTS
GenericGreaterThan,
GenericEqual
} RTL_GENERIC_COMPARE_RESULTS;
-#endif
-
-typedef enum _RTL_PATH_TYPE
-{
- INVALID_PATH = 0,
- UNC_PATH, /* "//foo" */
- ABSOLUTE_DRIVE_PATH, /* "c:/foo" */
- RELATIVE_DRIVE_PATH, /* "c:foo" */
- ABSOLUTE_PATH, /* "/foo" */
- RELATIVE_PATH, /* "foo" */
- DEVICE_PATH, /* "//./foo" */
- UNC_DOT_PATH /* "//." */
-} RTL_PATH_TYPE;
-
-/* FUNCTION TYPES ************************************************************/
-#ifndef NTOS_MODE_USER
-typedef VOID (NTAPI *WAITORTIMERCALLBACKFUNC)(PVOID, BOOLEAN);
#else
+//
+// ACL Query Information Classes
+//
+typedef enum _ACL_INFORMATION_CLASS
+{
+ AclRevisionInformation = 1,
+ AclSizeInformation
+} ACL_INFORMATION_CLASS;
+
+#endif
+
+//
+// RTL Path Types
+//
+typedef enum _RTL_PATH_TYPE
+{
+ INVALID_PATH = 0,
+ UNC_PATH, // "//foo"
+ ABSOLUTE_DRIVE_PATH, // "c:/foo"
+ RELATIVE_DRIVE_PATH, // "c:foo"
+ ABSOLUTE_PATH, // "/foo"
+ RELATIVE_PATH, // "foo"
+ DEVICE_PATH, // "//./foo"
+ UNC_DOT_PATH // "//."
+} RTL_PATH_TYPE;
+
+#ifndef NTOS_MODE_USER
+
+//
+// Callback function for RTL Timers or Registered Waits
+//
+typedef VOID
+(NTAPI *WAITORTIMERCALLBACKFUNC)(
+ PVOID pvContext,
+ BOOLEAN fTimerOrWaitFired
+);
+
+//
+// Handler during Vectored RTL Exceptions
+//
+typedef LONG
+(NTAPI *PVECTORED_EXCEPTION_HANDLER)(
+ PEXCEPTION_POINTERS ExceptionPointers
+);
+
+#else
+
+//
+// Handler during regular RTL Exceptions
+//
typedef EXCEPTION_DISPOSITION
(NTAPI *PEXCEPTION_ROUTINE)(
IN struct _EXCEPTION_RECORD *ExceptionRecord,
@@ -295,20 +265,18 @@ typedef EXCEPTION_DISPOSITION
#endif
-struct _RTL_AVL_TABLE;
-struct _RTL_GENERIC_TABLE;
-struct _RTL_RANGE;
-
+//
+// Callback for RTL Heap Enumeration
+//
typedef NTSTATUS
(*PHEAP_ENUMERATION_ROUTINE)(
IN PVOID HeapHandle,
IN PVOID UserParam
);
-typedef LONG (NTAPI *PVECTORED_EXCEPTION_HANDLER)(
- PEXCEPTION_POINTERS ExceptionPointers
-);
-
+//
+// Thread and Process Start Routines for RtlCreateUserThread/Process
+//
typedef ULONG (NTAPI *PTHREAD_START_ROUTINE)(
PVOID Parameter
);
@@ -319,6 +287,18 @@ typedef VOID
PVOID Parameter
);
+//
+// Declare empty structure definitions so that they may be referenced by
+// routines before they are defined
+//
+struct _RTL_AVL_TABLE;
+struct _RTL_GENERIC_TABLE;
+struct _RTL_RANGE;
+typedef struct _COMPRESSED_DATA_INFO COMPRESSED_DATA_INFO, *PCOMPRESSED_DATA_INFO;
+
+//
+// Routines and callbacks for the RTL AVL/Generic Table package
+//
typedef NTSTATUS
(NTAPI *PRTL_AVL_MATCH_FUNCTION)(
struct _RTL_AVL_TABLE *Table,
@@ -364,6 +344,9 @@ typedef VOID
PVOID Buffer
);
+//
+// RTL Query Registry callback
+//
typedef NTSTATUS
(NTAPI *PRTL_QUERY_REGISTRY_ROUTINE)(
IN PWSTR ValueName,
@@ -374,6 +357,19 @@ typedef NTSTATUS
IN PVOID EntryContext
);
+//
+// RTL Range List callbacks
+//
+#ifdef NTOS_MODE_USER
+typedef BOOLEAN
+(NTAPI *PRTL_CONFLICT_RANGE_CALLBACK)(
+ PVOID Context,
+ struct _RTL_RANGE *Range
+);
+
+//
+// Custom Heap Commit Routine for RtlCreateHeap
+//
typedef NTSTATUS
(NTAPI * PRTL_HEAP_COMMIT_ROUTINE)(
IN PVOID Base,
@@ -381,22 +377,23 @@ typedef NTSTATUS
IN OUT PSIZE_T CommitSize
);
-#ifdef NTOS_MODE_USER
-typedef BOOLEAN
-(NTAPI *PRTL_CONFLICT_RANGE_CALLBACK) (
- PVOID Context,
- struct _RTL_RANGE *Range
-);
-#endif
-
-/* TYPES *********************************************************************/
-
-#ifdef NTOS_MODE_USER
+//
+// Version Info redefinitions
+//
typedef OSVERSIONINFOW RTL_OSVERSIONINFOW;
typedef LPOSVERSIONINFOW PRTL_OSVERSIONINFOW;
typedef OSVERSIONINFOEXW RTL_OSVERSIONINFOEXW;
typedef LPOSVERSIONINFOEXW PRTL_OSVERSIONINFOEXW;
+//
+// Simple pointer definitions
+//
+typedef ACL_REVISION_INFORMATION *PACL_REVISION_INFORMATION;
+typedef ACL_SIZE_INFORMATION *PACL_SIZE_INFORMATION;
+
+//
+// Parameters for RtlCreateHeap
+//
typedef struct _RTL_HEAP_PARAMETERS
{
ULONG Length;
@@ -412,6 +409,9 @@ typedef struct _RTL_HEAP_PARAMETERS
SIZE_T Reserved[2];
} RTL_HEAP_PARAMETERS, *PRTL_HEAP_PARAMETERS;
+//
+// RTL Bitmap structures
+//
typedef struct _RTL_BITMAP
{
ULONG SizeOfBitMap;
@@ -424,17 +424,9 @@ typedef struct _RTL_BITMAP_RUN
ULONG NumberOfBits;
} RTL_BITMAP_RUN, *PRTL_BITMAP_RUN;
-typedef struct _COMPRESSED_DATA_INFO
-{
- USHORT CompressionFormatAndEngine;
- UCHAR CompressionUnitShift;
- UCHAR ChunkShift;
- UCHAR ClusterShift;
- UCHAR Reserved;
- USHORT NumberOfChunks;
- ULONG CompressedChunkSizes[ANYSIZE_ARRAY];
-} COMPRESSED_DATA_INFO, *PCOMPRESSED_DATA_INFO;
-
+//
+// RtlGenerateXxxName context
+//
typedef struct _GENERATE_NAME_CONTEXT
{
USHORT Checksum;
@@ -446,6 +438,9 @@ typedef struct _GENERATE_NAME_CONTEXT
ULONG LastIndexValue;
} GENERATE_NAME_CONTEXT, *PGENERATE_NAME_CONTEXT;
+//
+// RTL Splay and Balanced Links structures
+//
typedef struct _RTL_SPLAY_LINKS
{
struct _RTL_SPLAY_LINKS *Parent;
@@ -453,9 +448,18 @@ typedef struct _RTL_SPLAY_LINKS
struct _RTL_SPLAY_LINKS *RightChild;
} RTL_SPLAY_LINKS, *PRTL_SPLAY_LINKS;
-typedef ACL_REVISION_INFORMATION *PACL_REVISION_INFORMATION;
-typedef ACL_SIZE_INFORMATION *PACL_SIZE_INFORMATION;
+typedef struct _RTL_BALANCED_LINKS
+{
+ struct _RTL_BALANCED_LINKS *Parent;
+ struct _RTL_BALANCED_LINKS *LeftChild;
+ struct _RTL_BALANCED_LINKS *RightChild;
+ CHAR Balance;
+ UCHAR Reserved[3];
+} RTL_BALANCED_LINKS, *PRTL_BALANCED_LINKS;
+//
+// RTL Avl/Generic Tables
+//
typedef struct _RTL_GENERIC_TABLE
{
PRTL_SPLAY_LINKS TableRoot;
@@ -469,15 +473,6 @@ typedef struct _RTL_GENERIC_TABLE
PVOID TableContext;
} RTL_GENERIC_TABLE, *PRTL_GENERIC_TABLE;
-typedef struct _RTL_BALANCED_LINKS
-{
- struct _RTL_BALANCED_LINKS *Parent;
- struct _RTL_BALANCED_LINKS *LeftChild;
- struct _RTL_BALANCED_LINKS *RightChild;
- CHAR Balance;
- UCHAR Reserved[3];
-} RTL_BALANCED_LINKS, *PRTL_BALANCED_LINKS;
-
typedef struct _RTL_AVL_TABLE
{
RTL_BALANCED_LINKS BalancedRoot;
@@ -493,6 +488,9 @@ typedef struct _RTL_AVL_TABLE
PVOID TableContext;
} RTL_AVL_TABLE, *PRTL_AVL_TABLE;
+//
+// RtlQueryRegistry Data
+//
typedef struct _RTL_QUERY_REGISTRY_TABLE
{
PRTL_QUERY_REGISTRY_ROUTINE QueryRoutine;
@@ -504,6 +502,9 @@ typedef struct _RTL_QUERY_REGISTRY_TABLE
ULONG DefaultLength;
} RTL_QUERY_REGISTRY_TABLE, *PRTL_QUERY_REGISTRY_TABLE;
+//
+// RTL Unicode Table Structures
+//
typedef struct _UNICODE_PREFIX_TABLE_ENTRY
{
CSHORT NodeTypeCode;
@@ -522,6 +523,9 @@ typedef struct _UNICODE_PREFIX_TABLE
PUNICODE_PREFIX_TABLE_ENTRY LastNextEntry;
} UNICODE_PREFIX_TABLE, *PUNICODE_PREFIX_TABLE;
+//
+// Time Structure for RTL Time calls
+//
typedef struct _TIME_FIELDS
{
CSHORT Year;
@@ -535,20 +539,18 @@ typedef struct _TIME_FIELDS
} TIME_FIELDS, *PTIME_FIELDS;
#endif
-typedef EXCEPTION_DISPOSITION
-(*PEXCEPTION_HANDLER)(
- struct _EXCEPTION_RECORD*,
- PVOID,
- struct _CONTEXT*,
- PVOID
-);
-
+//
+// ACE Definition
+//
typedef struct _ACE
{
ACE_HEADER Header;
ACCESS_MASK AccessMask;
} ACE, *PACE;
+//
+// Information Structures for RTL Debug Functions
+//
typedef struct _RTL_PROCESS_MODULE_INFORMATION
{
ULONG Reserved[2];
@@ -641,6 +643,9 @@ typedef struct _RTL_DEBUG_BUFFER
PVOID Reserved[8];
} RTL_DEBUG_BUFFER, *PRTL_DEBUG_BUFFER;
+//
+// RTL Handle Structures
+//
typedef struct _RTL_HANDLE_TABLE_ENTRY
{
ULONG Flags;
@@ -658,12 +663,18 @@ typedef struct _RTL_HANDLE_TABLE
PRTL_HANDLE_TABLE_ENTRY MaxReservedHandles;
} RTL_HANDLE_TABLE, *PRTL_HANDLE_TABLE;
+//
+// Exception Record
+//
typedef struct _EXCEPTION_REGISTRATION_RECORD
{
struct _EXCEPTION_REGISTRATION_RECORD *Next;
PEXCEPTION_HANDLER Handler;
} EXCEPTION_REGISTRATION_RECORD, *PEXCEPTION_REGISTRATION_RECORD;
+//
+// Current Directory Structures
+//
typedef struct _CURDIR
{
UNICODE_STRING DosPath;
@@ -679,6 +690,10 @@ typedef struct RTL_DRIVE_LETTER_CURDIR
} RTL_DRIVE_LETTER_CURDIR, *PRTL_DRIVE_LETTER_CURDIR;
#ifndef NTOS_MODE_USER
+
+//
+// RTL Critical Section Structures
+//
typedef struct _RTL_CRITICAL_SECTION_DEBUG
{
USHORT Type;
@@ -699,13 +714,16 @@ typedef struct _RTL_CRITICAL_SECTION
HANDLE LockSemaphore;
ULONG_PTR SpinCount;
} RTL_CRITICAL_SECTION, *PRTL_CRITICAL_SECTION;
-#endif
-#ifdef NTOS_MODE_USER
+#else
+
+//
+// RTL Range List Structures
+//
typedef struct _RTL_RANGE_LIST
{
LIST_ENTRY ListHead;
- ULONG Flags; /* RTL_RANGE_LIST_... flags */
+ ULONG Flags;
ULONG Count;
ULONG Stamp;
} RTL_RANGE_LIST, *PRTL_RANGE_LIST;
@@ -717,7 +735,7 @@ typedef struct _RTL_RANGE
PVOID UserData;
PVOID Owner;
UCHAR Attributes;
- UCHAR Flags; /* RTL_RANGE_... flags */
+ UCHAR Flags;
} RTL_RANGE, *PRTL_RANGE;
typedef struct _RANGE_LIST_ITERATOR
@@ -730,6 +748,9 @@ typedef struct _RANGE_LIST_ITERATOR
#endif
+//
+// RTL Resource
+//
typedef struct _RTL_RESOURCE
{
RTL_CRITICAL_SECTION Lock;
@@ -743,6 +764,9 @@ typedef struct _RTL_RESOURCE
PVOID DebugInfo;
} RTL_RESOURCE, *PRTL_RESOURCE;
+//
+// RTL Message Structures for PE Resources
+//
typedef struct _RTL_MESSAGE_RESOURCE_ENTRY
{
USHORT Length;
@@ -763,19 +787,9 @@ typedef struct _RTL_MESSAGE_RESOURCE_DATA
RTL_MESSAGE_RESOURCE_BLOCK Blocks[1];
} RTL_MESSAGE_RESOURCE_DATA, *PRTL_MESSAGE_RESOURCE_DATA;
-typedef struct _NLS_FILE_HEADER
-{
- USHORT HeaderSize;
- USHORT CodePage;
- USHORT MaximumCharacterSize;
- USHORT DefaultChar;
- USHORT UniDefaultChar;
- USHORT TransDefaultChar;
- USHORT TransUniDefaultChar;
- USHORT DBCSCodePage;
- UCHAR LeadByte[MAXIMUM_LEADBYTES];
-} NLS_FILE_HEADER, *PNLS_FILE_HEADER;
-
+//
+// Structures for RtlCreateUserProcess
+//
typedef struct _RTL_USER_PROCESS_PARAMETERS
{
ULONG MaximumLength;
@@ -817,6 +831,9 @@ typedef struct _RTL_USER_PROCESS_INFORMATION
SECTION_IMAGE_INFORMATION ImageInformation;
} RTL_USER_PROCESS_INFORMATION, *PRTL_USER_PROCESS_INFORMATION;
+//
+// RTL Atom Table Structures
+//
typedef struct _RTL_ATOM_TABLE_ENTRY
{
struct _RTL_ATOM_TABLE_ENTRY *HashLink;
@@ -828,29 +845,34 @@ typedef struct _RTL_ATOM_TABLE_ENTRY
WCHAR Name[1];
} RTL_ATOM_TABLE_ENTRY, *PRTL_ATOM_TABLE_ENTRY;
-#ifdef NTOS_MODE_USER
-typedef RTL_CRITICAL_SECTION FAST_MUTEX;
-typedef RTL_HANDLE_TABLE HANDLE_TABLE, *PHANDLE_TABLE;
-#endif
typedef struct _RTL_ATOM_TABLE
{
ULONG Signature;
union
{
+#ifdef NTOS_MODE_USER
RTL_CRITICAL_SECTION CriticalSection;
+#else
FAST_MUTEX FastMutex;
+#endif
};
union
{
+#ifdef NTOS_MODE_USER
RTL_HANDLE_TABLE RtlHandleTable;
+#else
PHANDLE_TABLE ExHandleTable;
+#endif
};
ULONG NumberOfBuckets;
PRTL_ATOM_TABLE_ENTRY Buckets[1];
} RTL_ATOM_TABLE, *PRTL_ATOM_TABLE;
#ifndef NTOS_MODE_USER
-
+
+//
+// System Time and Timezone Structures
+//
typedef struct _SYSTEMTIME
{
USHORT wYear;
@@ -874,16 +896,22 @@ typedef struct _TIME_ZONE_INFORMATION
LONG DaylightBias;
} TIME_ZONE_INFORMATION, *PTIME_ZONE_INFORMATION, *LPTIME_ZONE_INFORMATION;
-typedef enum _ACL_INFORMATION_CLASS
+#endif
+
+//
+// Header for NLS Files
+//
+typedef struct _NLS_FILE_HEADER
{
- AclRevisionInformation = 1,
- AclSizeInformation
-} ACL_INFORMATION_CLASS;
-
-#define TIME_ZONE_ID_UNKNOWN 0
-#define TIME_ZONE_ID_STANDARD 1
-#define TIME_ZONE_ID_DAYLIGHT 2
-#define TIME_ZONE_ID_INVALID 0xFFFFFFFF
-#endif
+ USHORT HeaderSize;
+ USHORT CodePage;
+ USHORT MaximumCharacterSize;
+ USHORT DefaultChar;
+ USHORT UniDefaultChar;
+ USHORT TransDefaultChar;
+ USHORT TransUniDefaultChar;
+ USHORT DBCSCodePage;
+ UCHAR LeadByte[MAXIMUM_LEADBYTES];
+} NLS_FILE_HEADER, *PNLS_FILE_HEADER;
#endif
diff --git a/reactos/include/ndk/sefuncs.h b/reactos/include/ndk/sefuncs.h
index 70ac60d4f54..3b00bdfdfe2 100644
--- a/reactos/include/ndk/sefuncs.h
+++ b/reactos/include/ndk/sefuncs.h
@@ -1,20 +1,27 @@
-/*
- * PROJECT: ReactOS Native Headers
- * FILE: include/ndk/sefuncs.h
- * PURPOSE: Defintions for Security Subsystem Functions 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:
+
+ sefuncs.h
+
+Abstract:
+
+ Function definitions for the security manager.
+
+Author:
+
+ Alex Ionescu (alex.ionescu@reactos.com) 06-Oct-2004
+
+--*/
+
#ifndef _SEFUNCS_H
#define _SEFUNCS_H
-/* DEPENDENCIES **************************************************************/
-
-/* FUNCTION TYPES ************************************************************/
-
-/* PROTOTYPES ****************************************************************/
-
+//
+// Security Descriptors
+//
NTSTATUS
NTAPI
SeCaptureSecurityDescriptor(
@@ -25,6 +32,17 @@ SeCaptureSecurityDescriptor(
OUT PSECURITY_DESCRIPTOR *CapturedSecurityDescriptor
);
+NTSTATUS
+NTAPI
+SeReleaseSecurityDescriptor(
+ IN PSECURITY_DESCRIPTOR CapturedSecurityDescriptor,
+ IN KPROCESSOR_MODE CurrentMode,
+ IN BOOLEAN CaptureIfKernelMode
+);
+
+//
+// Access States
+//
NTSTATUS
NTAPI
SeCreateAccessState(
@@ -36,16 +54,13 @@ SeCreateAccessState(
VOID
NTAPI
-SeDeleteAccessState(IN PACCESS_STATE AccessState);
-
-NTSTATUS
-NTAPI
-SeReleaseSecurityDescriptor(
- IN PSECURITY_DESCRIPTOR CapturedSecurityDescriptor,
- IN KPROCESSOR_MODE CurrentMode,
- IN BOOLEAN CaptureIfKernelMode
+SeDeleteAccessState(
+ IN PACCESS_STATE AccessState
);
+//
+// Impersonation
+//
SECURITY_IMPERSONATION_LEVEL
NTAPI
SeTokenImpersonationLevel(
diff --git a/reactos/include/ndk/setypes.h b/reactos/include/ndk/setypes.h
index a148fa229cd..b8eef0d493e 100644
--- a/reactos/include/ndk/setypes.h
+++ b/reactos/include/ndk/setypes.h
@@ -1,19 +1,31 @@
-/*
- * PROJECT: ReactOS Native Headers
- * FILE: include/ndk/setypes.h
- * PURPOSE: Defintions for Security Subsystem 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:
+
+ setypes.h
+
+Abstract:
+
+ Type definitions for the security manager.
+
+Author:
+
+ Alex Ionescu (alex.ionescu@reactos.com) 06-Oct-2004
+
+--*/
+
#ifndef _SETYPES_H
#define _SETYPES_H
-/* DEPENDENCIES **************************************************************/
+//
+// Dependencies
+//
-/* EXPORTED DATA *************************************************************/
-
-/* CONSTANTS *****************************************************************/
+//
+// Privilege constants
+//
#ifdef NTOS_MODE_USER
#define SE_MIN_WELL_KNOWN_PRIVILEGE (2L)
#define SE_CREATE_TOKEN_PRIVILEGE (2L)
@@ -43,10 +55,9 @@
#define SE_MAX_WELL_KNOWN_PRIVILEGE (SE_REMOTE_SHUTDOWN_PRIVILEGE)
#endif
-/* ENUMERATIONS **************************************************************/
-
-/* TYPES *********************************************************************/
-
+//
+// Policy types
+//
#ifndef NTOS_MODE_USER
typedef struct _SEP_AUDIT_POLICY_CATEGORIES
{
@@ -77,6 +88,14 @@ typedef struct _SEP_AUDIT_POLICY
};
} SEP_AUDIT_POLICY, *PSEP_AUDIT_POLICY;
+typedef struct _SE_AUDIT_PROCESS_CREATION_INFO
+{
+ POBJECT_NAME_INFORMATION ImageFileName;
+} SE_AUDIT_PROCESS_CREATION_INFO, *PSE_AUDIT_PROCESS_CREATION_INFO;
+
+//
+// Token and auxiliary data
+//
typedef struct _TOKEN
{
TOKEN_SOURCE TokenSource; /* 0x00 */
@@ -118,10 +137,5 @@ typedef struct _AUX_DATA
ULONG Reserved;
} AUX_DATA, *PAUX_DATA;
-typedef struct _SE_AUDIT_PROCESS_CREATION_INFO
-{
- POBJECT_NAME_INFORMATION ImageFileName;
-} SE_AUDIT_PROCESS_CREATION_INFO, *PSE_AUDIT_PROCESS_CREATION_INFO;
-
#endif
#endif
diff --git a/reactos/include/ndk/umfuncs.h b/reactos/include/ndk/umfuncs.h
index 6a61d6a0ff0..bef6d3dc678 100644
--- a/reactos/include/ndk/umfuncs.h
+++ b/reactos/include/ndk/umfuncs.h
@@ -1,21 +1,33 @@
-/*
- * PROJECT: ReactOS Native Headers
- * FILE: include/ndk/umfuncs.h
- * PURPOSE: Prototypes for NT Library Functions
- * PROGRAMMER: Alex Ionescu (alex@relsoft.net)
- */
+/*++ NDK Version: 0095
+
+Copyright (c) Alex Ionescu. All rights reserved.
+
+Header Name:
+
+ umfuncs.h
+
+Abstract:
+
+ Function definitions for Native DLL (ntdll) APIs exclusive to User Mode.
+
+Author:
+
+ Alex Ionescu (alex.ionescu@reactos.com) 06-Oct-2004
+
+--*/
+
#ifndef _UMFUNCS_H
#define _UMFUNCS_H
-/* DEPENDENCIES **************************************************************/
+//
+// Don't force inclusion of csrss header, leave this opaque.
+//
struct _CSR_API_MESSAGE;
struct _CSR_CAPTURE_BUFFER;
-/* PROTOTYPES ****************************************************************/
-
-/*
- * CSR Functions
- */
+//
+// CSR Functions
+//
PVOID
NTAPI
CsrAllocateCaptureBuffer(
@@ -27,17 +39,17 @@ ULONG
NTAPI
CsrAllocateMessagePointer(
struct _CSR_CAPTURE_BUFFER *CaptureBuffer,
- ULONG MessageLength,
- PVOID *CaptureData
+ ULONG MessageLength,
+ PVOID *CaptureData
);
VOID
NTAPI
CsrCaptureMessageBuffer(
struct _CSR_CAPTURE_BUFFER *CaptureBuffer,
- PVOID MessageString,
- ULONG StringLength,
- PVOID *CapturedData
+ PVOID MessageString,
+ ULONG StringLength,
+ PVOID *CapturedData
);
NTSTATUS
@@ -61,11 +73,15 @@ CsrClientCallServer(
NTSTATUS
NTAPI
-CsrIdentifyAlertableThread(VOID);
+CsrIdentifyAlertableThread(
+ VOID
+);
VOID
NTAPI
-CsrFreeCaptureBuffer(struct _CSR_CAPTURE_BUFFER *CaptureBuffer);
+CsrFreeCaptureBuffer(
+ struct _CSR_CAPTURE_BUFFER *CaptureBuffer
+);
NTSTATUS
NTAPI
@@ -94,57 +110,56 @@ CsrProbeForWrite(
IN ULONG Alignment
);
-/*
- * Debug Functions
- */
-ULONG
-__cdecl
-DbgPrint(
- IN PCH Format,
- IN ...
-);
-
-VOID
-NTAPI
-DbgBreakPoint(VOID);
-
+//
+// Debug Functions
+//
NTSYSAPI
VOID
NTAPI
-DbgBreakPointWithStatus(IN ULONG Status);
+DbgBreakPointWithStatus(
+ IN ULONG Status
+);
NTSTATUS
NTAPI
-DbgUiConnectToDbg(VOID);
+DbgUiConnectToDbg(
+ VOID
+);
NTSTATUS
NTAPI
DbgUiContinue(
- PCLIENT_ID ClientId,
- ULONG ContinueStatus
+ IN PCLIENT_ID ClientId,
+ IN ULONG ContinueStatus
);
NTSTATUS
NTAPI
DbgUiWaitStateChange(
- PDBGUI_WAIT_STATE_CHANGE DbgUiWaitStateCange,
- PLARGE_INTEGER TimeOut
+ IN PDBGUI_WAIT_STATE_CHANGE DbgUiWaitStateCange,
+ IN PLARGE_INTEGER TimeOut
);
VOID
NTAPI
-DbgUiRemoteBreakin(VOID);
+DbgUiRemoteBreakin(
+ VOID
+);
NTSTATUS
NTAPI
-DbgUiIssueRemoteBreakin(HANDLE Process);
+DbgUiIssueRemoteBreakin(
+ IN HANDLE Process
+);
-/*
- * Loader Functions
- */
+//
+// Loader Functions
+//
NTSTATUS
NTAPI
-LdrDisableThreadCalloutsForDll(IN PVOID BaseAddress);
+LdrDisableThreadCalloutsForDll(
+ IN PVOID BaseAddress
+);
NTSTATUS
NTAPI
@@ -219,15 +234,21 @@ LdrQueryProcessModuleInformation(
NTSTATUS
NTAPI
-LdrShutdownProcess(VOID);
+LdrShutdownProcess(
+ VOID
+);
NTSTATUS
NTAPI
-LdrShutdownThread(VOID);
+LdrShutdownThread(
+ VOID
+);
NTSTATUS
NTAPI
-LdrUnloadDll(IN PVOID BaseAddress);
+LdrUnloadDll(
+ IN PVOID BaseAddress
+);
NTSTATUS
NTAPI
@@ -239,4 +260,3 @@ LdrVerifyImageMatchesChecksum(
);
#endif
-/* EOF */
diff --git a/reactos/include/ndk/umtypes.h b/reactos/include/ndk/umtypes.h
index 9031b1ac8da..005812c7ea9 100644
--- a/reactos/include/ndk/umtypes.h
+++ b/reactos/include/ndk/umtypes.h
@@ -1,64 +1,88 @@
-/*
- * PROJECT: ReactOS Native Headers
- * FILE: include/ndk/umtypes.h
- * PURPOSE: Definitions needed for Native Headers if target is not Kernel-Mode.
- * PROGRAMMER: Alex Ionescu (alex@relsoft.net)
- * UPDATE HISTORY:
- * Created 06/10/04
- */
+/*++ NDK Version: 0095
+
+Copyright (c) Alex Ionescu. All rights reserved.
+
+Header Name:
+
+ umtypes.h
+
+Abstract:
+
+ Type definitions for the basic native types.
+
+Author:
+
+ Alex Ionescu (alex.ionescu@reactos.com) 06-Oct-2004
+
+--*/
#if !defined(_NTDEF_) && !defined(_NTDEF_H)
#define _NTDEF_
#define _NTDEF_H
+#undef WIN32_NO_STATUS
-/* DEPENDENCIES **************************************************************/
+//
+// Dependencies
+//
#include
#include
-#undef WIN32_NO_STATUS
#include
-/* CONSTANTS *****************************************************************/
+//
+// Compiler Definitions
+//
+#ifndef _MANAGED
+#if defined(_M_IX86)
+#define FASTCALL _fastcall
+#else
+#define FASTCALL
+#endif
+#else
+#define FASTCALL NTAPI
+#endif
+
+#if !defined(_M_CEE_PURE)
+#define NTAPI_INLINE NTAPI
+#else
+#define NTAPI_INLINE
+#endif
-/* NTAPI/NTOSAPI Define */
-#define DECLSPEC_ADDRSAFE
-#define NTAPI __stdcall
-#define FASTCALL __fastcall
#if !defined(_NTSYSTEM_)
-#define NTSYSAPI DECLSPEC_IMPORT
-#define NTSYSCALLAPI DECLSPEC_IMPORT
+#define NTSYSAPI DECLSPEC_IMPORT
+#define NTSYSCALLAPI DECLSPEC_IMPORT
#else
#define NTSYSAPI
#if defined(_NTDLLBUILD_)
#define NTSYSCALLAPI
#else
-#define NTSYSCALLAPI DECLSPEC_ADDRSAFE
+#define NTSYSCALLAPI DECLSPEC_ADDRSAFE
#endif
#endif
-#if !defined(_M_CEE_PURE)
-#define NTAPI_INLINE NTAPI
-#else
-#define NTAPI_INLINE
-#endif
-/* Native API Return Value Macros */
-#define NT_SUCCESS(x) ((x)>=0)
-#define NT_WARNING(x) ((ULONG)(x)>>30==2)
-#define NT_ERROR(x) ((ULONG)(x)>>30==3)
+//
+// Native API Return Value Macros
+//
+#define NT_SUCCESS(Status) (((NTSTATUS)(Status)) >= 0)
+#define NT_INFORMATION(Status) ((((ULONG)(Status)) >> 30) == 1)
+#define NT_WARNING(Status) ((((ULONG)(Status)) >> 30) == 2)
+#define NT_ERROR(Status) ((((ULONG)(Status)) >> 30) == 3)
-/* Limits */
-#define MINCHAR 0x80
-#define MAXCHAR 0x7f
-#define MINSHORT 0x8000
-#define MAXSHORT 0x7fff
-#define MINLONG 0x80000000
-#define MAXLONG 0x7fffffff
-#define MAXUCHAR 0xff
-#define MAXUSHORT 0xffff
-#define MAXULONG 0xffffffff
+//
+// Limits
+//
+#define MINCHAR 0x80
+#define MAXCHAR 0x7f
+#define MINSHORT 0x8000
+#define MAXSHORT 0x7fff
+#define MINLONG 0x80000000
+#define MAXLONG 0x7fffffff
+#define MAXUCHAR 0xff
+#define MAXUSHORT 0xffff
+#define MAXULONG 0xffffffff
-/* TYPES *********************************************************************/
-
-/* Basic Types that aren't defined in User-Mode Headers */
+//
+// Basic Types that aren't defined in User-Mode Headers
+//
typedef CONST int CINT;
typedef CONST char *PCSZ;
typedef ULONG CLONG;
@@ -67,10 +91,12 @@ typedef CSHORT *PCSHORT;
typedef LARGE_INTEGER PHYSICAL_ADDRESS, *PPHYSICAL_ADDRESS;
typedef LONG KPRIORITY;
typedef LONG NTSTATUS, *PNTSTATUS;
-#define STATIC static
-/* Basic NT Types */
+//
+// Basic NT Types
+//
#if !defined(_NTSECAPI_H) && !defined(_SUBAUTH_H)
+
typedef struct _UNICODE_STRING
{
USHORT Length;
diff --git a/reactos/include/ndk/zwfuncs.h b/reactos/include/ndk/zwfuncs.h
index 5e3f89365ff..327ac9d060a 100644
--- a/reactos/include/ndk/zwfuncs.h
+++ b/reactos/include/ndk/zwfuncs.h
@@ -1,24 +1,36 @@
-/*
- * PROJECT: ReactOS Native Headers
- * FILE: include/ndk/zwfuncs.h
- * PURPOSE: Defintions for Native Functions 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:
+
+ zwfuncs.h
+
+Abstract:
+
+ Function definitions for Native APIs (Nt/Zw).
+
+Author:
+
+ Alex Ionescu (alex.ionescu@reactos.com) 06-Oct-2004
+
+--*/
+
#ifndef _ZWFUNCS_H
#define _ZWFUNCS_H
-
-/* DEPENDENCIES **************************************************************/
#define _WMIKM_
+
+//
+// Dependencies
+//
#include
#include "lpctypes.h"
#include "dbgktypes.h"
#include "kdtypes.h"
-/* FUNCTION TYPES ************************************************************/
-
-/* PROTOTYPES ****************************************************************/
+//
+// FIXME: Group these in logical groups.
+//
NTSTATUS
NTAPI
@@ -90,18 +102,18 @@ NtAccessCheckAndAuditAlarm(
NTSTATUS
NTAPI
NtAddAtom(
- IN PWSTR AtomName,
- IN ULONG AtomNameLength,
- IN OUT PRTL_ATOM Atom
+ IN PWSTR AtomName,
+ IN ULONG AtomNameLength,
+ IN OUT PRTL_ATOM Atom
);
NTSYSAPI
NTSTATUS
NTAPI
ZwAddAtom(
- IN PWSTR AtomName,
- IN ULONG AtomNameLength,
- IN OUT PRTL_ATOM Atom
+ IN PWSTR AtomName,
+ IN ULONG AtomNameLength,
+ IN OUT PRTL_ATOM Atom
);
NTSTATUS
@@ -124,11 +136,11 @@ NTSTATUS
NTAPI
NtAdjustGroupsToken(
IN HANDLE TokenHandle,
- IN BOOLEAN ResetToDefault,
- IN PTOKEN_GROUPS NewState,
- IN ULONG BufferLength,
- OUT PTOKEN_GROUPS PreviousState OPTIONAL,
- OUT PULONG ReturnLength
+ IN BOOLEAN ResetToDefault,
+ IN PTOKEN_GROUPS NewState,
+ IN ULONG BufferLength,
+ OUT PTOKEN_GROUPS PreviousState OPTIONAL,
+ OUT PULONG ReturnLength
);
NTSYSAPI
@@ -136,22 +148,22 @@ NTSTATUS
NTAPI
ZwAdjustGroupsToken(
IN HANDLE TokenHandle,
- IN BOOLEAN ResetToDefault,
- IN PTOKEN_GROUPS NewState,
- IN ULONG BufferLength,
- OUT PTOKEN_GROUPS PreviousState,
- OUT PULONG ReturnLength
+ IN BOOLEAN ResetToDefault,
+ IN PTOKEN_GROUPS NewState,
+ IN ULONG BufferLength,
+ OUT PTOKEN_GROUPS PreviousState,
+ OUT PULONG ReturnLength
);
NTSYSCALLAPI
NTSTATUS
NTAPI
NtAdjustPrivilegesToken(
- IN HANDLE TokenHandle,
- IN BOOLEAN DisableAllPrivileges,
- IN PTOKEN_PRIVILEGES NewState,
- IN ULONG BufferLength,
- OUT PTOKEN_PRIVILEGES PreviousState,
+ IN HANDLE TokenHandle,
+ IN BOOLEAN DisableAllPrivileges,
+ IN PTOKEN_PRIVILEGES NewState,
+ IN ULONG BufferLength,
+ OUT PTOKEN_PRIVILEGES PreviousState,
OUT PULONG ReturnLength
);
@@ -159,11 +171,11 @@ NTSYSAPI
NTSTATUS
NTAPI
ZwAdjustPrivilegesToken(
- IN HANDLE TokenHandle,
- IN BOOLEAN DisableAllPrivileges,
- IN PTOKEN_PRIVILEGES NewState,
- IN ULONG BufferLength,
- OUT PTOKEN_PRIVILEGES PreviousState,
+ IN HANDLE TokenHandle,
+ IN BOOLEAN DisableAllPrivileges,
+ IN PTOKEN_PRIVILEGES NewState,
+ IN ULONG BufferLength,
+ OUT PTOKEN_PRIVILEGES PreviousState,
OUT PULONG ReturnLength
);
@@ -233,10 +245,10 @@ NTAPI
NtAllocateVirtualMemory(
IN HANDLE ProcessHandle,
IN OUT PVOID *BaseAddress,
- IN ULONG ZeroBits,
- IN OUT PULONG RegionSize,
- IN ULONG AllocationType,
- IN ULONG Protect
+ IN ULONG ZeroBits,
+ IN OUT PULONG RegionSize,
+ IN ULONG AllocationType,
+ IN ULONG Protect
);
NTSYSAPI
@@ -245,10 +257,10 @@ NTAPI
ZwAllocateVirtualMemory(
IN HANDLE ProcessHandle,
IN OUT PVOID *BaseAddress,
- IN ULONG ZeroBits,
- IN OUT PULONG RegionSize,
- IN ULONG AllocationType,
- IN ULONG Protect
+ IN ULONG ZeroBits,
+ IN OUT PULONG RegionSize,
+ IN ULONG AllocationType,
+ IN ULONG Protect
);
NTSTATUS
@@ -535,21 +547,21 @@ ZwCreateFile(
NTSTATUS
NTAPI
NtCreateIoCompletion(
- OUT PHANDLE IoCompletionHandle,
- IN ACCESS_MASK DesiredAccess,
- IN POBJECT_ATTRIBUTES ObjectAttributes,
- IN ULONG NumberOfConcurrentThreads
- );
+ OUT PHANDLE IoCompletionHandle,
+ IN ACCESS_MASK DesiredAccess,
+ IN POBJECT_ATTRIBUTES ObjectAttributes,
+ IN ULONG NumberOfConcurrentThreads
+);
NTSYSAPI
NTSTATUS
NTAPI
ZwCreateIoCompletion(
- OUT PHANDLE IoCompletionHandle,
- IN ACCESS_MASK DesiredAccess,
- IN POBJECT_ATTRIBUTES ObjectAttributes,
- IN ULONG NumberOfConcurrentThreads
- );
+ OUT PHANDLE IoCompletionHandle,
+ IN ACCESS_MASK DesiredAccess,
+ IN POBJECT_ATTRIBUTES ObjectAttributes,
+ IN ULONG NumberOfConcurrentThreads
+);
NTSTATUS
NTAPI
@@ -827,13 +839,13 @@ NTSTATUS
NTAPI
NtCreateThread(
OUT PHANDLE ThreadHandle,
- IN ACCESS_MASK DesiredAccess,
- IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
- IN HANDLE ProcessHandle,
+ IN ACCESS_MASK DesiredAccess,
+ IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
+ IN HANDLE ProcessHandle,
OUT PCLIENT_ID ClientId,
- IN PCONTEXT ThreadContext,
- IN PINITIAL_TEB UserStack,
- IN BOOLEAN CreateSuspended
+ IN PCONTEXT ThreadContext,
+ IN PINITIAL_TEB UserStack,
+ IN BOOLEAN CreateSuspended
);
NTSYSAPI
@@ -1305,9 +1317,9 @@ NTSTATUS
NTAPI
NtFreeVirtualMemory(
IN HANDLE ProcessHandle,
- IN PVOID *BaseAddress,
- IN PULONG RegionSize,
- IN ULONG FreeType
+ IN PVOID *BaseAddress,
+ IN PULONG RegionSize,
+ IN ULONG FreeType
);
NTSYSAPI
@@ -1315,9 +1327,9 @@ NTSTATUS
NTAPI
ZwFreeVirtualMemory(
IN HANDLE ProcessHandle,
- IN PVOID *BaseAddress,
- IN PULONG RegionSize,
- IN ULONG FreeType
+ IN PVOID *BaseAddress,
+ IN PULONG RegionSize,
+ IN ULONG FreeType
);
NTSYSCALLAPI
@@ -1471,15 +1483,17 @@ ZwIsProcessInJob(
NTSTATUS
NTAPI
-NtListenPort(HANDLE PortHandle,
- PPORT_MESSAGE ConnectionRequest
+NtListenPort(
+ HANDLE PortHandle,
+ PPORT_MESSAGE ConnectionRequest
);
NTSYSAPI
NTSTATUS
NTAPI
-ZwListenPort(HANDLE PortHandle,
- PPORT_MESSAGE ConnectionRequest
+ZwListenPort(
+ HANDLE PortHandle,
+ PPORT_MESSAGE ConnectionRequest
);
NTSTATUS
@@ -1531,16 +1545,16 @@ NTSYSCALLAPI
NTSTATUS
NTAPI
NtLockFile(
- IN HANDLE FileHandle,
- IN HANDLE Event OPTIONAL,
- IN PIO_APC_ROUTINE ApcRoutine OPTIONAL,
- IN PVOID ApcContext OPTIONAL,
+ IN HANDLE FileHandle,
+ IN HANDLE Event OPTIONAL,
+ IN PIO_APC_ROUTINE ApcRoutine OPTIONAL,
+ IN PVOID ApcContext OPTIONAL,
OUT PIO_STATUS_BLOCK IoStatusBlock,
- IN PLARGE_INTEGER ByteOffset,
- IN PLARGE_INTEGER Length,
- IN ULONG Key,
- IN BOOLEAN FailImmediatedly,
- IN BOOLEAN ExclusiveLock
+ IN PLARGE_INTEGER ByteOffset,
+ IN PLARGE_INTEGER Length,
+ IN ULONG Key,
+ IN BOOLEAN FailImmediatedly,
+ IN BOOLEAN ExclusiveLock
);
@@ -1548,16 +1562,16 @@ NTSYSAPI
NTSTATUS
NTAPI
ZwLockFile(
- IN HANDLE FileHandle,
- IN HANDLE Event OPTIONAL,
- IN PIO_APC_ROUTINE ApcRoutine OPTIONAL,
- IN PVOID ApcContext OPTIONAL,
+ IN HANDLE FileHandle,
+ IN HANDLE Event OPTIONAL,
+ IN PIO_APC_ROUTINE ApcRoutine OPTIONAL,
+ IN PVOID ApcContext OPTIONAL,
OUT PIO_STATUS_BLOCK IoStatusBlock,
- IN PLARGE_INTEGER ByteOffset,
- IN PLARGE_INTEGER Length,
- IN ULONG Key,
- IN BOOLEAN FailImmediatedly,
- IN BOOLEAN ExclusiveLock
+ IN PLARGE_INTEGER ByteOffset,
+ IN PLARGE_INTEGER Length,
+ IN ULONG Key,
+ IN BOOLEAN FailImmediatedly,
+ IN BOOLEAN ExclusiveLock
);
NTSTATUS
@@ -2305,26 +2319,26 @@ ZwQueryDirectoryFile(
NTSTATUS
NTAPI
NtQueryDirectoryObject(
- IN HANDLE DirectoryHandle,
- OUT PVOID Buffer,
- IN ULONG BufferLength,
- IN BOOLEAN ReturnSingleEntry,
- IN BOOLEAN RestartScan,
+ IN HANDLE DirectoryHandle,
+ OUT PVOID Buffer,
+ IN ULONG BufferLength,
+ IN BOOLEAN ReturnSingleEntry,
+ IN BOOLEAN RestartScan,
IN OUT PULONG Context,
- OUT PULONG ReturnLength OPTIONAL
+ OUT PULONG ReturnLength OPTIONAL
);
NTSYSAPI
NTSTATUS
NTAPI
ZwQueryDirectoryObject(
- IN HANDLE DirectoryHandle,
- OUT PVOID Buffer,
- IN ULONG BufferLength,
- IN BOOLEAN ReturnSingleEntry,
- IN BOOLEAN RestartScan,
+ IN HANDLE DirectoryHandle,
+ OUT PVOID Buffer,
+ IN ULONG BufferLength,
+ IN BOOLEAN ReturnSingleEntry,
+ IN BOOLEAN RestartScan,
IN OUT PULONG Context,
- OUT PULONG ReturnLength OPTIONAL
+ OUT PULONG ReturnLength OPTIONAL
);
NTSTATUS
@@ -2483,22 +2497,22 @@ ZwQueryInformationPort(
NTSTATUS
NTAPI
NtQueryInformationProcess(
- IN HANDLE ProcessHandle,
- IN PROCESSINFOCLASS ProcessInformationClass,
- OUT PVOID ProcessInformation,
- IN ULONG ProcessInformationLength,
- OUT PULONG ReturnLength OPTIONAL
+ IN HANDLE ProcessHandle,
+ IN PROCESSINFOCLASS ProcessInformationClass,
+ OUT PVOID ProcessInformation,
+ IN ULONG ProcessInformationLength,
+ OUT PULONG ReturnLength OPTIONAL
);
NTSYSAPI
NTSTATUS
NTAPI
ZwQueryInformationProcess(
- IN HANDLE ProcessHandle,
- IN PROCESSINFOCLASS ProcessInformationClass,
- OUT PVOID ProcessInformation,
- IN ULONG ProcessInformationLength,
- OUT PULONG ReturnLength OPTIONAL
+ IN HANDLE ProcessHandle,
+ IN PROCESSINFOCLASS ProcessInformationClass,
+ OUT PVOID ProcessInformation,
+ IN ULONG ProcessInformationLength,
+ OUT PULONG ReturnLength OPTIONAL
);
#endif
@@ -2576,10 +2590,10 @@ ZwQueryIntervalProfile(
NTSTATUS
NTAPI
NtQueryIoCompletion(
- IN HANDLE IoCompletionHandle,
- IN IO_COMPLETION_INFORMATION_CLASS IoCompletionInformationClass,
+ IN HANDLE IoCompletionHandle,
+ IN IO_COMPLETION_INFORMATION_CLASS IoCompletionInformationClass,
OUT PVOID IoCompletionInformation,
- IN ULONG IoCompletionInformationLength,
+ IN ULONG IoCompletionInformationLength,
OUT PULONG ResultLength OPTIONAL
);
@@ -2587,10 +2601,10 @@ NTSYSAPI
NTSTATUS
NTAPI
ZwQueryIoCompletion(
- IN HANDLE IoCompletionHandle,
- IN IO_COMPLETION_INFORMATION_CLASS IoCompletionInformationClass,
+ IN HANDLE IoCompletionHandle,
+ IN IO_COMPLETION_INFORMATION_CLASS IoCompletionInformationClass,
OUT PVOID IoCompletionInformation,
- IN ULONG IoCompletionInformationLength,
+ IN ULONG IoCompletionInformationLength,
OUT PULONG ResultLength OPTIONAL
);
@@ -2771,10 +2785,10 @@ ZwQuerySecurityObject(
NTSTATUS
NTAPI
NtQuerySemaphore(
- IN HANDLE SemaphoreHandle,
- IN SEMAPHORE_INFORMATION_CLASS SemaphoreInformationClass,
+ IN HANDLE SemaphoreHandle,
+ IN SEMAPHORE_INFORMATION_CLASS SemaphoreInformationClass,
OUT PVOID SemaphoreInformation,
- IN ULONG Length,
+ IN ULONG Length,
OUT PULONG ReturnLength
);
@@ -2782,10 +2796,10 @@ NTSYSAPI
NTSTATUS
NTAPI
ZwQuerySemaphore(
- IN HANDLE SemaphoreHandle,
- IN SEMAPHORE_INFORMATION_CLASS SemaphoreInformationClass,
+ IN HANDLE SemaphoreHandle,
+ IN SEMAPHORE_INFORMATION_CLASS SemaphoreInformationClass,
OUT PVOID SemaphoreInformation,
- IN ULONG Length,
+ IN ULONG Length,
OUT PULONG ReturnLength
);
@@ -2828,9 +2842,9 @@ ZwQuerySystemEnvironmentValue(
NTSTATUS
NTAPI
NtQuerySystemInformation(
- IN SYSTEM_INFORMATION_CLASS SystemInformationClass,
+ IN SYSTEM_INFORMATION_CLASS SystemInformationClass,
OUT PVOID SystemInformation,
- IN ULONG Length,
+ IN ULONG Length,
OUT PULONG ResultLength
);
@@ -2838,9 +2852,9 @@ NTSYSAPI
NTSTATUS
NTAPI
ZwQuerySystemInformation(
- IN SYSTEM_INFORMATION_CLASS SystemInformationClass,
+ IN SYSTEM_INFORMATION_CLASS SystemInformationClass,
OUT PVOID SystemInformation,
- IN ULONG Length,
+ IN ULONG Length,
OUT PULONG ResultLength
);
@@ -3112,7 +3126,7 @@ NtReadVirtualMemory(
IN HANDLE ProcessHandle,
IN PVOID BaseAddress,
OUT PVOID Buffer,
- IN ULONG NumberOfBytesToRead,
+ IN ULONG NumberOfBytesToRead,
OUT PULONG NumberOfBytesRead
);
@@ -3123,7 +3137,7 @@ ZwReadVirtualMemory(
IN HANDLE ProcessHandle,
IN PVOID BaseAddress,
OUT PVOID Buffer,
- IN ULONG NumberOfBytesToRead,
+ IN ULONG NumberOfBytesToRead,
OUT PULONG NumberOfBytesRead
);
@@ -3158,8 +3172,8 @@ ZwReleaseMutant(
NTSTATUS
NTAPI
NtReleaseSemaphore(
- IN HANDLE SemaphoreHandle,
- IN LONG ReleaseCount,
+ IN HANDLE SemaphoreHandle,
+ IN LONG ReleaseCount,
OUT PLONG PreviousCount
);
@@ -3167,30 +3181,30 @@ NTSYSAPI
NTSTATUS
NTAPI
ZwReleaseSemaphore(
- IN HANDLE SemaphoreHandle,
- IN LONG ReleaseCount,
+ IN HANDLE SemaphoreHandle,
+ IN LONG ReleaseCount,
OUT PLONG PreviousCount
);
NTSTATUS
NTAPI
NtRemoveIoCompletion(
- IN HANDLE IoCompletionHandle,
+ IN HANDLE IoCompletionHandle,
OUT PVOID *CompletionKey,
OUT PVOID *CompletionContext,
OUT PIO_STATUS_BLOCK IoStatusBlock,
- IN PLARGE_INTEGER Timeout OPTIONAL
+ IN PLARGE_INTEGER Timeout OPTIONAL
);
NTSYSAPI
NTSTATUS
NTAPI
ZwRemoveIoCompletion(
- IN HANDLE IoCompletionHandle,
+ IN HANDLE IoCompletionHandle,
OUT PVOID *CompletionKey,
OUT PVOID *CompletionContext,
OUT PIO_STATUS_BLOCK IoStatusBlock,
- IN PLARGE_INTEGER Timeout OPTIONAL
+ IN PLARGE_INTEGER Timeout OPTIONAL
);
NTSTATUS
@@ -3213,114 +3227,115 @@ ZwReplaceKey(
NTSTATUS
NTAPI
NtReplyPort(
- HANDLE PortHandle,
- PPORT_MESSAGE LpcReply
+ IN HANDLE PortHandle,
+ IN PPORT_MESSAGE LpcReply
);
NTSYSAPI
NTSTATUS
NTAPI
ZwReplyPort(
- HANDLE PortHandle,
- PPORT_MESSAGE LpcReply
+ IN HANDLE PortHandle,
+ IN PPORT_MESSAGE LpcReply
);
NTSTATUS
NTAPI
NtReplyWaitReceivePort(
- HANDLE PortHandle,
- PVOID *PortContext OPTIONAL,
- PPORT_MESSAGE ReplyMessage OPTIONAL,
- PPORT_MESSAGE ReceiveMessage
+ IN HANDLE PortHandle,
+ IN PVOID *PortContext OPTIONAL,
+ IN PPORT_MESSAGE ReplyMessage OPTIONAL,
+ OUT PPORT_MESSAGE ReceiveMessage
);
NTSYSAPI
NTSTATUS
NTAPI
ZwReplyWaitReceivePort(
- HANDLE PortHandle,
- PVOID *PortContext OPTIONAL,
- PPORT_MESSAGE ReplyMessage,
- PPORT_MESSAGE ReceiveMessage
+ IN HANDLE PortHandle,
+ IN PVOID *PortContext OPTIONAL,
+ IN PPORT_MESSAGE ReplyMessage OPTIONAL,
+ OUT PPORT_MESSAGE ReceiveMessage
);
NTSTATUS
NTAPI
NtReplyWaitReplyPort(
- HANDLE PortHandle,
- PPORT_MESSAGE ReplyMessage
+ IN HANDLE PortHandle,
+ OUT PPORT_MESSAGE ReplyMessage
);
NTSYSAPI
NTSTATUS
NTAPI
ZwReplyWaitReplyPort(
- HANDLE PortHandle,
- PPORT_MESSAGE ReplyMessage
+ IN HANDLE PortHandle,
+ OUT PPORT_MESSAGE ReplyMessage
);
NTSTATUS
NTAPI
NtRequestPort(
- HANDLE PortHandle,
- PPORT_MESSAGE LpcMessage);
+ IN HANDLE PortHandle,
+ IN PPORT_MESSAGE LpcMessage
+);
NTSYSAPI
NTSTATUS
NTAPI
ZwRequestPort(
- HANDLE PortHandle,
- PPORT_MESSAGE LpcMessage
+ IN HANDLE PortHandle,
+ IN PPORT_MESSAGE LpcMessage
);
NTSYSCALLAPI
NTSTATUS
NTAPI
NtRequestWaitReplyPort(
- HANDLE PortHandle,
- PPORT_MESSAGE LpcReply,
- PPORT_MESSAGE LpcRequest
+ IN HANDLE PortHandle,
+ OUT PPORT_MESSAGE LpcReply,
+ IN PPORT_MESSAGE LpcRequest
);
NTSYSAPI
NTSTATUS
NTAPI
ZwRequestWaitReplyPort(
- HANDLE PortHandle,
- PPORT_MESSAGE LpcReply,
- PPORT_MESSAGE LpcRequest
+ IN HANDLE PortHandle,
+ OUT PPORT_MESSAGE LpcReply,
+ IN PPORT_MESSAGE LpcRequest
);
NTSTATUS
NTAPI
NtResetEvent(
- HANDLE EventHandle,
- PLONG NumberOfWaitingThreads OPTIONAL
+ IN HANDLE EventHandle,
+ OUT PLONG NumberOfWaitingThreads OPTIONAL
);
NTSYSAPI
NTSTATUS
NTAPI
ZwResetEvent(
- HANDLE EventHandle,
- PLONG NumberOfWaitingThreads OPTIONAL
+ IN HANDLE EventHandle,
+ OUT PLONG NumberOfWaitingThreads OPTIONAL
);
NTSTATUS
NTAPI
NtRestoreKey(
- HANDLE KeyHandle,
- HANDLE FileHandle,
- ULONG RestoreFlags
+ IN HANDLE KeyHandle,
+ IN HANDLE FileHandle,
+ IN ULONG RestoreFlags
);
NTSYSAPI
NTSTATUS
NTAPI
ZwRestoreKey(
- HANDLE KeyHandle,
- HANDLE FileHandle,
- ULONG RestoreFlags
+ IN HANDLE KeyHandle,
+ IN HANDLE FileHandle,
+ IN ULONG RestoreFlags
);
NTSTATUS
@@ -3985,27 +4000,27 @@ ZwSignalAndWaitForSingleObject(
NTSTATUS
NTAPI
NtStartProfile(
- HANDLE ProfileHandle
+ IN HANDLE ProfileHandle
);
NTSYSAPI
NTSTATUS
NTAPI
ZwStartProfile(
- HANDLE ProfileHandle
+ IN HANDLE ProfileHandle
);
NTSTATUS
NTAPI
NtStopProfile(
- HANDLE ProfileHandle
+ IN HANDLE ProfileHandle
);
NTSYSAPI
NTSTATUS
NTAPI
ZwStopProfile(
- HANDLE ProfileHandle
+ IN HANDLE ProfileHandle
);
NTSTATUS
diff --git a/reactos/include/reactos/helper.h b/reactos/include/reactos/helper.h
index 940a31980ba..c5fa443140e 100644
--- a/reactos/include/reactos/helper.h
+++ b/reactos/include/reactos/helper.h
@@ -1,22 +1,38 @@
#ifndef _HELPER_H
#define _HELPER_H
-/* FIXME: clean this mess up and move to NDK */
+#ifndef ROUNDUP
#define ROUNDUP(a,b) ((((a)+(b)-1)/(b))*(b))
+#endif
+
+#ifndef ROUNDUP
#define ROUNDDOWN(a,b) (((a)/(b))*(b))
+#endif
+
+#ifndef ROUND_UP
#define ROUND_UP ROUNDUP
+#endif
+
+#ifndef ROUND_DOWN
#define ROUND_DOWN ROUNDDOWN
+#endif
+
+#ifndef PAGE_ROUND_DOWN
#define PAGE_ROUND_DOWN(x) (((ULONG)x)&(~(PAGE_SIZE-1)))
+#endif
+
+#ifndef PAGE_ROUND_UP
#define PAGE_ROUND_UP(x) ( (((ULONG)x)%PAGE_SIZE) ? ((((ULONG)x)&(~(PAGE_SIZE-1)))+PAGE_SIZE) : ((ULONG)x) )
+#endif
+
#define ABS_VALUE(V) (((V) < 0) ? -(V) : (V))
-#define RtlRosMin(X,Y) (((X) < (Y))? (X) : (Y))
+
#define RtlRosMin3(X,Y,Z) (((X) < (Y)) ? RtlRosMin(X,Z) : RtlRosMin(Y,Z))
+
#ifndef KEBUGCHECK
#define KEBUGCHECKEX(a,b,c,d,e) DbgPrint("KeBugCheckEx at %s:%i\n",__FILE__,__LINE__), KeBugCheckEx(a,b,c,d,e)
#define KEBUGCHECK(a) DbgPrint("KeBugCheck at %s:%i\n",__FILE__,__LINE__), KeBugCheck(a)
#endif
-#define EXPORTED __declspec(dllexport)
-#define IMPORTED __declspec(dllimport)
/* iterate through the list using a list entry.
* elem is set to NULL if the list is run thru without breaking out or if list is empty.
@@ -40,7 +56,9 @@
((PIMAGE_DOS_HEADER)a)->e_lfanew + \
sizeof (IMAGE_NT_SIGNATURE) + \
sizeof (IMAGE_FILE_HEADER)))
+#ifndef TAG
#define TAG(A, B, C, D) (ULONG)(((A)<<0) + ((B)<<8) + ((C)<<16) + ((D)<<24))
+#endif
#define RVA(m, b) ((PVOID)((ULONG_PTR)(b) + (ULONG_PTR)(m)))
#define NTSTAT_SEVERITY_SHIFT 30
#define NTSTAT_SEVERITY_MASK 0x00000003
diff --git a/reactos/include/win32k/misc.h b/reactos/include/win32k/misc.h
index e9660bb6dbe..e03faa62a5c 100644
--- a/reactos/include/win32k/misc.h
+++ b/reactos/include/win32k/misc.h
@@ -1,6 +1,8 @@
#ifndef __WIN32K_MISC_H
#define __WIN32K_MISC_H
+#ifndef NTOS_MODE_USER
+
/* W32PROCESS flags */
#define W32PF_NOWINDOWGHOSTING (0x0001)
#define W32PF_MANUALGUICHECK (0x0002)
@@ -10,4 +12,6 @@ VOID
FASTCALL
DestroyThreadWindows(struct _ETHREAD *Thread);
+#endif
+
#endif /* __WIN32K_MISC_H */
diff --git a/reactos/lib/rtl/atom.c b/reactos/lib/rtl/atom.c
index 4467f67bf08..166b9796dd1 100644
--- a/reactos/lib/rtl/atom.c
+++ b/reactos/lib/rtl/atom.c
@@ -348,7 +348,7 @@ RtlAddAtomToAtomTable(IN PRTL_ATOM_TABLE AtomTable,
{
ULONG AtomNameLen = wcslen(AtomName);
- if (AtomNameLen > MAX_ATOM_LEN)
+ if (AtomNameLen > RTL_MAXIMUM_ATOM_LENGTH)
{
Status = STATUS_INVALID_PARAMETER;
goto end;
diff --git a/reactos/ntoskrnl/include/ntoskrnl.h b/reactos/ntoskrnl/include/ntoskrnl.h
index eb9ec20cffe..02940ece414 100755
--- a/reactos/ntoskrnl/include/ntoskrnl.h
+++ b/reactos/ntoskrnl/include/ntoskrnl.h
@@ -17,8 +17,6 @@
#include
#include
#include
-#include
-#include
/* FIXME: Temporary until CC Ros is gone */
#include
@@ -41,6 +39,9 @@
/* SEH support with PSEH */
#include
+/* PNP GUIDs */
+#include
+
/* Helper Header */
#include
diff --git a/reactos/ntoskrnl/ke/i386/irqhand.s b/reactos/ntoskrnl/ke/i386/irqhand.s
index 22cb9b9c208..04b74f08d65 100644
--- a/reactos/ntoskrnl/ke/i386/irqhand.s
+++ b/reactos/ntoskrnl/ke/i386/irqhand.s
@@ -1,4 +1,4 @@
-#include
+#include
#include <../hal/halx86/include/halirq.h>
#ifdef CONFIG_SMP
diff --git a/reactos/services/umpnpmgr/umpnpmgr.c b/reactos/services/umpnpmgr/umpnpmgr.c
index 1791a4d26d9..e0240a4d3cb 100644
--- a/reactos/services/umpnpmgr/umpnpmgr.c
+++ b/reactos/services/umpnpmgr/umpnpmgr.c
@@ -30,7 +30,7 @@
#include
#define NTOS_MODE_USER
#include
-#include
+#include
#include
#include
diff --git a/reactos/w32api/include/crt/excpt.h b/reactos/w32api/include/crt/excpt.h
index e5199b99b3f..967b067a6d0 100644
--- a/reactos/w32api/include/crt/excpt.h
+++ b/reactos/w32api/include/crt/excpt.h
@@ -23,6 +23,10 @@
* NOTE: The constants structs and typedefs below should be defined in the
* Win32 API headers.
*/
+#define EXCEPTION_EXECUTE_HANDLER 1
+#define EXCEPTION_CONTINUE_SEARCH 0
+#define EXCEPTION_CONTINUE_EXECUTION -1
+
#define EH_NONCONTINUABLE 0x01
#define EH_UNWINDING 0x02
#define EH_EXIT_UNWIND 0x04
diff --git a/reactos/w32api/include/ddk/winddk.h b/reactos/w32api/include/ddk/winddk.h
index 3f656599d30..e930b1a144e 100644
--- a/reactos/w32api/include/ddk/winddk.h
+++ b/reactos/w32api/include/ddk/winddk.h
@@ -36,6 +36,7 @@ extern "C" {
*/
#define DDKAPI __stdcall
#define DDKFASTAPI __fastcall
+#define FASTCALL __fastcall
#define DDKCDECLAPI __cdecl
/* FIXME: REMOVE THIS UNCOMPATIBLE CRUFT!!! */
diff --git a/reactos/w32api/include/winbase.h b/reactos/w32api/include/winbase.h
index 42b48df6e9b..298b3405d80 100644
--- a/reactos/w32api/include/winbase.h
+++ b/reactos/w32api/include/winbase.h
@@ -396,9 +396,6 @@ extern "C" {
#define SLE_MINORERROR 2
#define SLE_WARNING 3
#define SHUTDOWN_NORETRY 1
-#define EXCEPTION_EXECUTE_HANDLER 1
-#define EXCEPTION_CONTINUE_EXECUTION (-1)
-#define EXCEPTION_CONTINUE_SEARCH 0
#define MAXINTATOM 0xC000
#define INVALID_ATOM ((ATOM)0)
#define IGNORE 0
diff --git a/reactos/w32api/include/windef.h b/reactos/w32api/include/windef.h
index 3cdde6ed38c..1adf926691c 100644
--- a/reactos/w32api/include/windef.h
+++ b/reactos/w32api/include/windef.h
@@ -103,7 +103,6 @@ extern "C" {
#define PASCAL _pascal
#define CDECL _cdecl
#define STDCALL __stdcall
-#define FASTCALL __fastcall
#define WINAPI __stdcall
#define WINAPIV __cdecl
#define APIENTRY __stdcall
diff --git a/reactos/w32api/include/winnt.h b/reactos/w32api/include/winnt.h
index 36432ef9547..ef6a3dfde77 100644
--- a/reactos/w32api/include/winnt.h
+++ b/reactos/w32api/include/winnt.h
@@ -47,6 +47,24 @@ extern "C" {
#define UNALIGNED
#endif
+#ifndef DECLSPEC_ADDRSAFE
+#if (_MSC_VER >= 1200) && (defined(_M_ALPHA) || defined(_M_AXP64))
+#define DECLSPEC_ADDRSAFE __declspec(address_safe)
+#else
+#define DECLSPEC_ADDRSAFE
+#endif
+#endif
+
+#ifndef FORCEINLINE
+#if (_MSC_VER >= 1200)
+#define FORCEINLINE __forceinline
+#elif (_MSC_VER)
+#define FORCEINLINE __inline
+#else
+#define FORCEINLINE static __inline
+#endif
+#endif
+
#ifndef VOID
#define VOID void
#endif
@@ -2456,6 +2474,11 @@ typedef struct _RTL_CRITICAL_SECTION {
} RTL_CRITICAL_SECTION,*PRTL_CRITICAL_SECTION;
#endif
+typedef LONG
+(NTAPI *PVECTORED_EXCEPTION_HANDLER)(
+ struct _EXCEPTION_POINTERS *ExceptionInfo
+);
+
typedef struct _EVENTLOGRECORD {
DWORD Length;
DWORD Reserved;