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;