<include>include/libs</include>
<include>include/drivers</include>
<include>include/subsys</include>
+ <include>include/ndk</include>
<include>w32api/include</include>
<include>w32api/include/crt</include>
<include>w32api/include/ddk</include>
/* INCLUDES ******************************************************************/
-#include <ndk/i386/segment.h>
+#include <ndk/asm.h>
/* FUNCTIONS *****************************************************************/
/*
- * 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
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);
-/*
- * 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;
struct _GENERAL_LOOKASIDE *L;
} PP_LOOKASIDE_LIST, *PPP_LOOKASIDE_LIST;
+//
+// Include the right file for this architecture.
+//
#ifdef _M_IX86
-#include <ndk/i386/ketypes.h>
+#include <i386/ketypes.h>
#else
#error "Unknown processor"
#endif
-/*
- * 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 <i386/mmtypes.h>
#else
#error "Unknown processor"
#endif
-/*
- * 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 **************************************************************/
-
-/* EXPORTED DATA *************************************************************/
-
-/* CONSTANTS *****************************************************************/
-
-/*
- * 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
-
-#define TF_SAVED_EXCEPTION_STACK 0x8C
-#define TF_REGS 0x90
-#define TF_ORIG_EBP 0x94
-
-/* TSS Offsets */
-#define KTSS_ESP0 0x4
-#define KTSS_CR3 0x1C
-#define KTSS_EFLAGS 0x24
-#define KTSS_IOMAPBASE 0x66
-
-/*
- * 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
-
-#define KPROCESS_DIRECTORY_TABLE_BASE 0x18
-#define KPROCESS_LDT_DESCRIPTOR0 0x20
-#define KPROCESS_LDT_DESCRIPTOR1 0x24
-#define KPROCESS_IOPM_OFFSET 0x30
-
-#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
-
-/* 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
-
-/* 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
-
-/* 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
-
-/* 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
-
-/* 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
+//
+// 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)
+
+//
+// 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
+
+//
+// TSS Offsets
+//
+#define KTSS_ESP0 0x4
+#define KTSS_CR3 0x1C
+#define KTSS_EFLAGS 0x24
+#define KTSS_IOMAPBASE 0x66
+
+//
+// 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
+
+//
+// KPROCESS Offsets
+//
+#define KPROCESS_DIRECTORY_TABLE_BASE 0x18
+#define KPROCESS_LDT_DESCRIPTOR0 0x20
+#define KPROCESS_LDT_DESCRIPTOR1 0x24
+#define KPROCESS_IOPM_OFFSET 0x30
+
+//
+// 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
+
+//
+// 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
+
+//
+// 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
+
+
+//
+// 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
+
+//
+// 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
+
+//
+// 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
+
+//
+// PEB Offsets
+//
+#define PEB_KERNEL_CALLBACK_TABLE 0x2C
+
+//
+// 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
-/*
- * 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
-/*\r
- * PROJECT: ReactOS Native Headers\r
- * FILE: include/ndk/cmtypes.h\r
- * PURPOSE: Definitions for Config Manager Types not defined in DDK/IFS\r
- * PROGRAMMER: Alex Ionescu (alex@relsoft.net)\r
- * UPDATE HISTORY:\r
- * Created 06/10/04\r
- */\r
+/*++ NDK Version: 0095\r
+\r
+Copyright (c) Alex Ionescu. All rights reserved.\r
+\r
+Header Name:\r
+\r
+ cmtypes.h\r
+\r
+Abstract:\r
+\r
+ Type definitions for the Configuration Manager.\r
+\r
+Author:\r
+\r
+ Alex Ionescu (alex.ionescu@reactos.com) 06-Oct-2004\r
+\r
+--*/\r
\r
#ifndef _CMTYPES_H\r
#define _CMTYPES_H\r
\r
-/* DEPENDENCIES **************************************************************/\r
+//\r
+// Dependencies\r
+//\r
#include <cfg.h>\r
#include "iotypes.h"\r
\r
-/* EXPORTED DATA *************************************************************/\r
-\r
-/* CONSTANTS *****************************************************************/\r
#define MAX_BUS_NAME 24\r
\r
-/* PLUGPLAY_CONTROL_RELATED_DEVICE_DATA.Relation values */\r
-#define PNP_GET_PARENT_DEVICE 1\r
-#define PNP_GET_CHILD_DEVICE 2\r
-#define PNP_GET_SIBLING_DEVICE 3\r
+//\r
+// PLUGPLAY_CONTROL_RELATED_DEVICE_DATA.Relations\r
+//\r
+#define PNP_GET_PARENT_DEVICE 1\r
+#define PNP_GET_CHILD_DEVICE 2\r
+#define PNP_GET_SIBLING_DEVICE 3\r
+\r
+//\r
+// PLUGPLAY_CONTROL_STATUS_DATA Operations\r
+//\r
+#define PNP_GET_DEVICE_STATUS 0\r
+#define PNP_SET_DEVICE_STATUS 1\r
+#define PNP_CLEAR_DEVICE_STATUS 2\r
+\r
+//\r
+// Resource Type\r
+//\r
+#define CmResourceTypeNull 0\r
+#define CmResourceTypePort 1\r
+#define CmResourceTypeInterrupt 2\r
+#define CmResourceTypeMemory 3\r
+#define CmResourceTypeDma 4\r
+#define CmResourceTypeDeviceSpecific 5\r
+#define CmResourceTypeBusNumber 6\r
+#define CmResourceTypeMaximum 7\r
+#define CmResourceTypeNonArbitrated 128\r
+#define CmResourceTypeConfigData 128\r
+#define CmResourceTypeDevicePrivate 129\r
+#define CmResourceTypePcCardConfig 130\r
+#define CmResourceTypeMfCardConfig 131\r
+\r
+#ifdef NTOS_MODE_USER\r
+\r
+//\r
+// Resource Descriptor Share Dispositions\r
+//\r
+typedef enum _CM_SHARE_DISPOSITION\r
+{\r
+ CmResourceShareUndetermined,\r
+ CmResourceShareDeviceExclusive,\r
+ CmResourceShareDriverExclusive,\r
+ CmResourceShareShared\r
+} CM_SHARE_DISPOSITION;\r
\r
-/* PLUGPLAY_CONTROL_STATUS_DATA.Operation values */\r
-#define PNP_GET_DEVICE_STATUS 0\r
-#define PNP_SET_DEVICE_STATUS 1\r
-#define PNP_CLEAR_DEVICE_STATUS 2\r
+#endif\r
\r
-/* ENUMERATIONS **************************************************************/\r
+//\r
+// Port Resource Descriptor Flags\r
+//\r
+#define CM_RESOURCE_PORT_MEMORY 0x0000\r
+#define CM_RESOURCE_PORT_IO 0x0001\r
+#define CM_RESOURCE_PORT_10_BIT_DECODE 0x0004\r
+#define CM_RESOURCE_PORT_12_BIT_DECODE 0x0008\r
+#define CM_RESOURCE_PORT_16_BIT_DECODE 0x0010\r
+#define CM_RESOURCE_PORT_POSITIVE_DECODE 0x0020\r
+#define CM_RESOURCE_PORT_PASSIVE_DECODE 0x0040\r
+#define CM_RESOURCE_PORT_WINDOW_DECODE 0x0080\r
+\r
+//\r
+// Interrupt Resource Descriptor Flags\r
+//\r
+#define CM_RESOURCE_INTERRUPT_LEVEL_SENSITIVE 0x0000\r
+#define CM_RESOURCE_INTERRUPT_LATCHED 0x0001\r
+\r
+//\r
+// Memory Resource Descriptor Flags\r
+//\r
+#define CM_RESOURCE_MEMORY_READ_WRITE 0x0000\r
+#define CM_RESOURCE_MEMORY_READ_ONLY 0x0001\r
+#define CM_RESOURCE_MEMORY_WRITE_ONLY 0x0002\r
+#define CM_RESOURCE_MEMORY_PREFETCHABLE 0x0004\r
+#define CM_RESOURCE_MEMORY_COMBINEDWRITE 0x0008\r
+#define CM_RESOURCE_MEMORY_24 0x0010\r
+#define CM_RESOURCE_MEMORY_CACHEABLE 0x0020\r
+\r
+//\r
+// DMA Resource Descriptor Flags\r
+//\r
+#define CM_RESOURCE_DMA_8 0x0000\r
+#define CM_RESOURCE_DMA_16 0x0001\r
+#define CM_RESOURCE_DMA_32 0x0002\r
+#define CM_RESOURCE_DMA_8_AND_16 0x0004\r
+#define CM_RESOURCE_DMA_BUS_MASTER 0x0008\r
+#define CM_RESOURCE_DMA_TYPE_A 0x0010\r
+#define CM_RESOURCE_DMA_TYPE_B 0x0020\r
+#define CM_RESOURCE_DMA_TYPE_F 0x0040\r
\r
#ifdef NTOS_MODE_USER\r
+\r
+//\r
+// Information Classes for NtQueryKey\r
+//\r
typedef enum _KEY_INFORMATION_CLASS\r
{\r
KeyBasicInformation,\r
KeyUserFlagsInformation,\r
MaxKeySetInfoClass\r
} KEY_SET_INFORMATION_CLASS;\r
+\r
#endif\r
\r
+//\r
+// Plag and Play Classes\r
+//\r
typedef enum _PLUGPLAY_CONTROL_CLASS\r
{\r
PlugPlayControlUserResponse = 0x07,\r
MaxPlugPlayBusClass\r
} PLUGPLAY_BUS_CLASS, *PPLUGPLAY_BUS_CLASS;\r
\r
+//\r
+// Plag and Play Bus Types\r
+//\r
typedef enum _PLUGPLAY_VIRTUAL_BUS_TYPE\r
{\r
Root,\r
MaxPlugPlayVirtualBusType\r
} PLUGPLAY_VIRTUAL_BUS_TYPE, *PPLUGPLAY_VIRTUAL_BUS_TYPE;\r
\r
+//\r
+// Plag and Play Event Categories\r
+//\r
typedef enum _PLUGPLAY_EVENT_CATEGORY\r
{\r
HardwareProfileChangeEvent,\r
BlockedDriverEvent,\r
MaxPlugEventCategory\r
} PLUGPLAY_EVENT_CATEGORY;\r
-/* TYPES *********************************************************************/\r
\r
#ifdef NTOS_MODE_USER\r
+\r
+//\r
+// Information Structures for NtQueryKeyInformation\r
+//\r
typedef struct _KEY_WRITE_TIME_INFORMATION\r
{\r
LARGE_INTEGER LastWriteTime;\r
\r
#endif\r
\r
+//\r
+// Plug and Play Event Block\r
+//\r
typedef struct _PLUGPLAY_EVENT_BLOCK\r
{\r
GUID EventGuid;\r
};\r
} PLUGPLAY_EVENT_BLOCK, *PPLUGPLAY_EVENT_BLOCK;\r
\r
-/* Class 0x0A */\r
+//\r
+// Plug and Play Control Classes\r
+//\r
+\r
+//Class 0x0A\r
typedef struct _PLUGPLAY_CONTROL_PROPERTY_DATA\r
{\r
UNICODE_STRING DeviceInstance;\r
ULONG BufferSize;\r
} PLUGPLAY_CONTROL_PROPERTY_DATA, *PPLUGPLAY_CONTROL_PROPERTY_DATA;\r
\r
-/* Class 0x0C */\r
+// Class 0x0C\r
typedef struct _PLUGPLAY_CONTROL_RELATED_DEVICE_DATA\r
{\r
UNICODE_STRING TargetDeviceInstance;\r
- ULONG Relation; /* 1: Parent 2: Child 3: Sibling */\r
+ ULONG Relation;\r
UNICODE_STRING RelatedDeviceInstance;\r
} PLUGPLAY_CONTROL_RELATED_DEVICE_DATA, *PPLUGPLAY_CONTROL_RELATED_DEVICE_DATA;\r
\r
-/* Class 0x0E */\r
+// Class 0x0E\r
typedef struct _PLUGPLAY_CONTOL_STATUS_DATA\r
{\r
UNICODE_STRING DeviceInstance;\r
- ULONG Operation; /* 0: Get 1: Set 2: Clear */\r
- ULONG DeviceStatus; /* DN_ see cfg.h */\r
- ULONG DeviceProblem; /* CM_PROB_ see cfg.h */\r
+ ULONG Operation;\r
+ ULONG DeviceStatus;\r
+ ULONG DeviceProblem;\r
} PLUGPLAY_CONTROL_STATUS_DATA, *PPLUGPLAY_CONTROL_STATUS_DATA;\r
\r
-/* Class 0x0F */\r
+// Class 0x0F\r
typedef struct _PLUGPLAY_CONTROL_DEPTH_DATA\r
{\r
UNICODE_STRING DeviceInstance;\r
ULONG Depth;\r
} PLUGPLAY_CONTROL_DEPTH_DATA, *PPLUGPLAY_CONTROL_DEPTH_DATA;\r
\r
-/* Class 0x14 */\r
+// Class 0x14\r
typedef struct _PLUGPLAY_CONTROL_RESET_DEVICE_DATA\r
{\r
UNICODE_STRING DeviceInstance;\r
} PLUGPLAY_CONTROL_RESET_DEVICE_DATA, *PPLUGPLAY_CONTROL_RESET_DEVICE_DATA;\r
\r
+//\r
+// Plug and Play Bus Type Definition\r
+//\r
typedef struct _PLUGPLAY_BUS_TYPE\r
{\r
PLUGPLAY_BUS_CLASS BusClass;\r
};\r
} PLUGPLAY_BUS_TYPE, *PPLUGPLAY_BUS_TYPE;\r
\r
+//\r
+// Plug and Play Bus Instance Definition\r
+//\r
typedef struct _PLUGPLAY_BUS_INSTANCE\r
{\r
PLUGPLAY_BUS_TYPE BusType;\r
\r
#ifdef NTOS_MODE_USER\r
\r
+//\r
+// Partial Resource Descriptor and List for Hardware\r
+//\r
#include <pshpack1.h>\r
-typedef struct _CM_PARTIAL_RESOURCE_DESCRIPTOR {\r
- UCHAR Type;\r
- UCHAR ShareDisposition;\r
- USHORT Flags;\r
- union {\r
- struct {\r
- PHYSICAL_ADDRESS Start;\r
- ULONG Length;\r
- } Generic;\r
- struct {\r
- PHYSICAL_ADDRESS Start;\r
- ULONG Length;\r
- } Port;\r
- struct {\r
- ULONG Level;\r
- ULONG Vector;\r
- ULONG Affinity;\r
- } Interrupt;\r
- struct {\r
- PHYSICAL_ADDRESS Start;\r
- ULONG Length;\r
- } Memory;\r
- struct {\r
- ULONG Channel;\r
- ULONG Port;\r
- ULONG Reserved1;\r
- } Dma;\r
- struct {\r
- ULONG Data[3];\r
- } DevicePrivate;\r
- struct {\r
- ULONG Start;\r
- ULONG Length;\r
- ULONG Reserved;\r
- } BusNumber;\r
- struct {\r
- ULONG DataSize;\r
- ULONG Reserved1;\r
- ULONG Reserved2;\r
- } DeviceSpecificData;\r
- } u;\r
+typedef struct _CM_PARTIAL_RESOURCE_DESCRIPTOR\r
+{\r
+ UCHAR Type;\r
+ UCHAR ShareDisposition;\r
+ USHORT Flags;\r
+ union\r
+ {\r
+ struct\r
+ {\r
+ PHYSICAL_ADDRESS Start;\r
+ ULONG Length;\r
+ } Generic;\r
+ struct\r
+ {\r
+ PHYSICAL_ADDRESS Start;\r
+ ULONG Length;\r
+ } Port;\r
+ struct\r
+ {\r
+ ULONG Level;\r
+ ULONG Vector;\r
+ ULONG Affinity;\r
+ } Interrupt;\r
+ struct\r
+ {\r
+ PHYSICAL_ADDRESS Start;\r
+ ULONG Length;\r
+ } Memory;\r
+ struct\r
+ {\r
+ ULONG Channel;\r
+ ULONG Port;\r
+ ULONG Reserved1;\r
+ } Dma;\r
+ struct\r
+ {\r
+ ULONG Data[3];\r
+ } DevicePrivate;\r
+ struct\r
+ {\r
+ ULONG Start;\r
+ ULONG Length;\r
+ ULONG Reserved;\r
+ } BusNumber;\r
+ struct\r
+ {\r
+ ULONG DataSize;\r
+ ULONG Reserved1;\r
+ ULONG Reserved2;\r
+ } DeviceSpecificData;\r
+ } u;\r
} CM_PARTIAL_RESOURCE_DESCRIPTOR, *PCM_PARTIAL_RESOURCE_DESCRIPTOR;\r
\r
-/* CM_PARTIAL_RESOURCE_DESCRIPTOR.Type */\r
-\r
-#define CmResourceTypeNull 0\r
-#define CmResourceTypePort 1\r
-#define CmResourceTypeInterrupt 2\r
-#define CmResourceTypeMemory 3\r
-#define CmResourceTypeDma 4\r
-#define CmResourceTypeDeviceSpecific 5\r
-#define CmResourceTypeBusNumber 6\r
-#define CmResourceTypeMaximum 7\r
-#define CmResourceTypeNonArbitrated 128\r
-#define CmResourceTypeConfigData 128\r
-#define CmResourceTypeDevicePrivate 129\r
-#define CmResourceTypePcCardConfig 130\r
-#define CmResourceTypeMfCardConfig 131\r
-\r
-/* CM_PARTIAL_RESOURCE_DESCRIPTOR.ShareDisposition */\r
-\r
-typedef enum _CM_SHARE_DISPOSITION {\r
- CmResourceShareUndetermined,\r
- CmResourceShareDeviceExclusive,\r
- CmResourceShareDriverExclusive,\r
- CmResourceShareShared\r
-} CM_SHARE_DISPOSITION;\r
-\r
-/* CM_PARTIAL_RESOURCE_DESCRIPTOR.Flags if Type = CmResourceTypePort */\r
-\r
-#define CM_RESOURCE_PORT_MEMORY 0x0000\r
-#define CM_RESOURCE_PORT_IO 0x0001\r
-#define CM_RESOURCE_PORT_10_BIT_DECODE 0x0004\r
-#define CM_RESOURCE_PORT_12_BIT_DECODE 0x0008\r
-#define CM_RESOURCE_PORT_16_BIT_DECODE 0x0010\r
-#define CM_RESOURCE_PORT_POSITIVE_DECODE 0x0020\r
-#define CM_RESOURCE_PORT_PASSIVE_DECODE 0x0040\r
-#define CM_RESOURCE_PORT_WINDOW_DECODE 0x0080\r
-\r
-/* CM_PARTIAL_RESOURCE_DESCRIPTOR.Flags if Type = CmResourceTypeInterrupt */\r
-\r
-#define CM_RESOURCE_INTERRUPT_LEVEL_SENSITIVE 0x0000\r
-#define CM_RESOURCE_INTERRUPT_LATCHED 0x0001\r
-\r
-/* CM_PARTIAL_RESOURCE_DESCRIPTOR.Flags if Type = CmResourceTypeMemory */\r
-\r
-#define CM_RESOURCE_MEMORY_READ_WRITE 0x0000\r
-#define CM_RESOURCE_MEMORY_READ_ONLY 0x0001\r
-#define CM_RESOURCE_MEMORY_WRITE_ONLY 0x0002\r
-#define CM_RESOURCE_MEMORY_PREFETCHABLE 0x0004\r
-#define CM_RESOURCE_MEMORY_COMBINEDWRITE 0x0008\r
-#define CM_RESOURCE_MEMORY_24 0x0010\r
-#define CM_RESOURCE_MEMORY_CACHEABLE 0x0020\r
-\r
-/* CM_PARTIAL_RESOURCE_DESCRIPTOR.Flags if Type = CmResourceTypeDma */\r
-\r
-#define CM_RESOURCE_DMA_8 0x0000\r
-#define CM_RESOURCE_DMA_16 0x0001\r
-#define CM_RESOURCE_DMA_32 0x0002\r
-#define CM_RESOURCE_DMA_8_AND_16 0x0004\r
-#define CM_RESOURCE_DMA_BUS_MASTER 0x0008\r
-#define CM_RESOURCE_DMA_TYPE_A 0x0010\r
-#define CM_RESOURCE_DMA_TYPE_B 0x0020\r
-#define CM_RESOURCE_DMA_TYPE_F 0x0040\r
-\r
-typedef struct _CM_PARTIAL_RESOURCE_LIST {\r
- USHORT Version;\r
- USHORT Revision;\r
- ULONG Count;\r
- CM_PARTIAL_RESOURCE_DESCRIPTOR PartialDescriptors[1];\r
+typedef struct _CM_PARTIAL_RESOURCE_LIST\r
+{\r
+ USHORT Version;\r
+ USHORT Revision;\r
+ ULONG Count;\r
+ CM_PARTIAL_RESOURCE_DESCRIPTOR PartialDescriptors[1];\r
} CM_PARTIAL_RESOURCE_LIST, *PCM_PARTIAL_RESOURCE_LIST;\r
\r
-typedef struct _CM_FULL_RESOURCE_DESCRIPTOR {\r
- INTERFACE_TYPE InterfaceType;\r
- ULONG BusNumber;\r
- CM_PARTIAL_RESOURCE_LIST PartialResourceList;\r
+//\r
+// Full Resource Descriptor and List for Hardware\r
+//\r
+typedef struct _CM_FULL_RESOURCE_DESCRIPTOR\r
+{\r
+ INTERFACE_TYPE InterfaceType;\r
+ ULONG BusNumber;\r
+ CM_PARTIAL_RESOURCE_LIST PartialResourceList;\r
} CM_FULL_RESOURCE_DESCRIPTOR, *PCM_FULL_RESOURCE_DESCRIPTOR;\r
\r
-typedef struct _CM_RESOURCE_LIST {\r
- ULONG Count;\r
- CM_FULL_RESOURCE_DESCRIPTOR List[1];\r
+typedef struct _CM_RESOURCE_LIST\r
+{\r
+ ULONG Count;\r
+ CM_FULL_RESOURCE_DESCRIPTOR List[1];\r
} CM_RESOURCE_LIST, *PCM_RESOURCE_LIST;\r
\r
-typedef struct _CM_INT13_DRIVE_PARAMETER {\r
- USHORT DriveSelect;\r
- ULONG MaxCylinders;\r
- USHORT SectorsPerTrack;\r
- USHORT MaxHeads;\r
- USHORT NumberDrives;\r
+//\r
+// Disk/INT13 Structures\r
+//\r
+typedef struct _CM_INT13_DRIVE_PARAMETER\r
+{\r
+ USHORT DriveSelect;\r
+ ULONG MaxCylinders;\r
+ USHORT SectorsPerTrack;\r
+ USHORT MaxHeads;\r
+ USHORT NumberDrives;\r
} CM_INT13_DRIVE_PARAMETER, *PCM_INT13_DRIVE_PARAMETER;\r
\r
typedef struct _CM_DISK_GEOMETRY_DEVICE_DATA\r
{\r
- ULONG BytesPerSector;\r
- ULONG NumberOfCylinders;\r
- ULONG SectorsPerTrack;\r
- ULONG NumberOfHeads;\r
+ ULONG BytesPerSector;\r
+ ULONG NumberOfCylinders;\r
+ ULONG SectorsPerTrack;\r
+ ULONG NumberOfHeads;\r
} CM_DISK_GEOMETRY_DEVICE_DATA, *PCM_DISK_GEOMETRY_DEVICE_DATA;\r
\r
#include <poppack.h>\r
\r
-#endif\r
+#endif // _!NTOS_MODE_USER\r
\r
-#endif\r
+#endif // _CMTYPES_H\r
\r
-/*
- * 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
-#ifndef _DBGKTYPES_H
-#define _DBGKTYPES_H
+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
-/* DEPENDENCIES **************************************************************/
+--*/
-/* EXPORTED DATA *************************************************************/
+#ifndef _DBGKTYPES_H
+#define _DBGKTYPES_H
-/* 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
+//
+// Dependencies
+//
-/* 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;
};
};
} DBGK_DEBUG_OBJECT, *PDBGK_DEBUG_OBJECT;
+
#endif
+//
+// Debug States
+//
typedef enum _DBG_STATE
{
DbgIdle,
DbgUnloadDllStateChange
} DBG_STATE, *PDBG_STATE;
+//
+// Debug Message Structures
+//
typedef struct _DBGKM_EXCEPTION
{
EXCEPTION_RECORD ExceptionRecord;
PVOID BaseAddress;
} DBGKM_UNLOAD_DLL, *PDBGKM_UNLOAD_DLL;
+//
+// User-Mode Debug State Change Structure
+//
typedef struct _DBGUI_WAIT_STATE_CHANGE
{
DBG_STATE NewState;
} StateInfo;
} DBGUI_WAIT_STATE_CHANGE, *PDBGUI_WAIT_STATE_CHANGE;
+//
+// LPC Debug Message
+//
typedef struct _DBGKM_MSG
{
PORT_MESSAGE h;
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;
-/*\r
- * PROJECT: ReactOS Native Headers\r
- * FILE: include/ndk/exfuncs.h\r
- * PURPOSE: Prototypes for exported Executive Functions not defined in DDK/IFS\r
- * PROGRAMMER: Alex Ionescu (alex@relsoft.net)\r
- * UPDATE HISTORY:\r
- * Created 06/10/04\r
- */\r
-#ifndef _EXFUNCS_H\r
-#define _EXFUNCS_H\r
+/*++ NDK Version: 0095\r
+\r
+Copyright (c) Alex Ionescu. All rights reserved.\r
+\r
+Header Name:\r
+\r
+ exfuncs.h\r
+\r
+Abstract:\r
\r
-/* DEPENDENCIES **************************************************************/\r
+ Function definitions for the Executive.\r
\r
-/* FUNCTION TYPES ************************************************************/\r
+Author:\r
+\r
+ Alex Ionescu (alex.ionescu@reactos.com) 06-Oct-2004\r
+\r
+--*/\r
+\r
+#ifndef _EXFUNCS_H\r
+#define _EXFUNCS_H\r
\r
-/* PROTOTYPES ****************************************************************/\r
+//\r
+// Dependencies\r
+//\r
\r
+//\r
+// Fast Mutex functions\r
+//\r
VOID\r
FASTCALL\r
ExEnterCriticalRegionAndAcquireFastMutexUnsafe(PFAST_MUTEX FastMutex);\r
-/*
- * 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 <cfg.h>
#if defined(_MSC_VER) && !defined(NTOS_MODE_USER)
#include <ntimage.h>
#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;
-#endif
-/* CONSTANTS *****************************************************************/
-#ifndef NTOS_MODE_USER
-#define INVALID_HANDLE_VALUE (HANDLE)-1
+//
+// Invalid Handle Value Constant
+//
+#define INVALID_HANDLE_VALUE (HANDLE)-1
+
#endif
-/* Increments */
-#define MUTANT_INCREMENT 1
-
-/* 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
+//
+// 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)
+
+//
+// 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
+
+//
+// Event Pair Access Masks
+//
+#define EVENT_PAIR_ALL_ACCESS 0x1F0000L
+
+//
+// Maximum Parameters for NtRaiseHardError
+//
+#define MAXIMUM_HARDERROR_PARAMETERS 4
-/* ENUMERATIONS **************************************************************/
+//
+// Shutdown types for NtShutdownSystem
+//
typedef enum _SHUTDOWN_ACTION
{
ShutdownNoReboot,
ShutdownPowerOff
} SHUTDOWN_ACTION;
+//
+// Responses for NtRaiseHardError
+//
typedef enum _HARDERROR_RESPONSE_OPTION
{
OptionAbortRetryIgnore,
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,
SystemPrioritySeperation,
SystemPlugPlayBusInformation,
SystemDockInformation,
- _SystemPowerInformation, /* FIXME */
+ _SystemPowerInformation, // FIXME
SystemProcessorSpeedInformation,
SystemCurrentTimeZoneInformation,
SystemLookasideInformation,
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;
EX_QUEUE_WORKER_INFO Info;
} EX_WORK_QUEUE, *PEX_WORK_QUEUE;
+//
+// Executive Fast Reference Structure
+//
typedef struct _EX_FAST_REF
{
union
};
} 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;
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
#endif
+//
+// Information Structures for NtQueryMutant
+//
typedef struct _MUTANT_BASIC_INFORMATION
{
LONG CurrentCount;
BOOLEAN AbandonedState;
} MUTANT_BASIC_INFORMATION, *PMUTANT_BASIC_INFORMATION;
+//
+// Information Structures for NtQueryAtom
+//
typedef struct _ATOM_BASIC_INFORMATION
{
USHORT UsageCount;
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;
CCHAR NumberOfProcessors;
} SYSTEM_BASIC_INFORMATION, *PSYSTEM_BASIC_INFORMATION;
-/* Class 1 */
+// Class 1
typedef struct _SYSTEM_PROCESSOR_INFORMATION
{
USHORT ProcessorArchitecture;
ULONG ProcessorFeatureBits;
} SYSTEM_PROCESSOR_INFORMATION, *PSYSTEM_PROCESSOR_INFORMATION;
-/* Class 2 */
+// Class 2
typedef struct _SYSTEM_PERFORMANCE_INFORMATION
{
LARGE_INTEGER IdleProcessTime;
ULONG SystemCalls;
} SYSTEM_PERFORMANCE_INFORMATION, *PSYSTEM_PERFORMANCE_INFORMATION;
-/* Class 3 */
+// Class 3
typedef struct _SYSTEM_TIMEOFDAY_INFORMATION
{
LARGE_INTEGER BootTime;
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;
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;
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;
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;
ULONG NumberOfParallelPorts;
} SYSTEM_DEVICE_INFORMATION, *PSYSTEM_DEVICE_INFORMATION;
-/* Class 8 */
+// Class 8
typedef struct _SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION
{
LARGE_INTEGER IdleTime;
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;
LARGE_INTEGER TimeOfCalls[1];
} SYSTEM_CALL_TIME_INFORMATION, *PSYSTEM_CALL_TIME_INFORMATION;
-/* Class 11 */
+// Class 11
typedef struct _SYSTEM_MODULE_INFORMATION_ENTRY
{
ULONG Unknown1;
SYSTEM_MODULE_INFORMATION_ENTRY Module[1];
} SYSTEM_MODULE_INFORMATION, *PSYSTEM_MODULE_INFORMATION;
-/* Class 12 */
+// Class 12
typedef struct _SYSTEM_RESOURCE_LOCK_ENTRY
{
ULONG ResourceAddress;
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;
SYSTEM_POOL_ENTRY Entries[1];
} SYSTEM_POOL_INFORMATION, *PSYSTEM_POOL_INFORMATION;
-/* Class 16 */
+// Class 16
typedef struct _SYSTEM_HANDLE_TABLE_ENTRY_INFO
{
USHORT UniqueProcessId;
SYSTEM_HANDLE_TABLE_ENTRY_INFO Handles[1];
} SYSTEM_HANDLE_INFORMATION, *PSYSTEM_HANDLE_INFORMATION;
-/* Class 17 */
+// Class 17
typedef struct _SYSTEM_OBJECTTYPE_INFORMATION
{
ULONG NextEntryOffset;
OBJECT_NAME_INFORMATION NameInfo;
} SYSTEM_OBJECT_INFORMATION, *PSYSTEM_OBJECT_INFORMATION;
-/* Class 18 */
+// Class 18
typedef struct _SYSTEM_PAGEFILE_INFORMATION
{
ULONG NextEntryOffset;
UNICODE_STRING PageFileName;
} SYSTEM_PAGEFILE_INFORMATION, *PSYSTEM_PAGEFILE_INFORMATION;
-/* Class 19 */
+// Class 19
typedef struct _SYSTEM_VDM_INSTEMUL_INFO
{
ULONG SegmentNotPresent;
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;
ULONG Unused[2];
} SYSTEM_CACHE_INFORMATION, *PSYSTEM_CACHE_INFORMATION;
-/* Class 22 */
+// Class 22
typedef struct _SYSTEM_POOLTAG
{
union
SYSTEM_POOLTAG TagInfo[1];
} SYSTEM_POOLTAG_INFORMATION, *PSYSTEM_POOLTAG_INFORMATION;
-/* Class 23 */
+// Class 23
typedef struct _SYSTEM_INTERRUPT_INFORMATION
{
ULONG ContextSwitches;
ULONG ApcBypassCount;
} SYSTEM_INTERRUPT_INFORMATION, *PSYSTEM_INTERRUPT_INFORMATION;
-/* Class 24 */
+// Class 24
typedef struct _SYSTEM_DPC_BEHAVIOR_INFORMATION
{
ULONG Spare;
ULONG IdealDpcRate;
} SYSTEM_DPC_BEHAVIOR_INFORMATION, *PSYSTEM_DPC_BEHAVIOR_INFORMATION;
-/* Class 25 */
+// Class 25
typedef struct _SYSTEM_MEMORY_INFO
{
PUCHAR StringOffset;
SYSTEM_MEMORY_INFO Memory[1];
} SYSTEM_MEMORY_INFORMATION, *PSYSTEM_MEMORY_INFORMATION;
-/* Class 26 */
+// Class 26
typedef struct _SYSTEM_GDI_DRIVER_INFORMATION
{
UNICODE_STRING DriverName;
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;
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;
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;
ULONG SwitchToIdle;
} SYSTEM_CONTEXT_SWITCH_INFORMATION, *PSYSTEM_CONTEXT_SWITCH_INFORMATION;
-/* Class 37 */
+// Class 37
typedef struct _SYSTEM_REGISTRY_QUOTA_INFORMATION
{
ULONG RegistryQuotaAllowed;
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;
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;
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;
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
-
-NDK FIXMES\r
------------\r
+Complete list of NDK Fixmes before 1.0 Release (Nov 25th 2005)\r
+--------------------------------------------------------------\r
\r
-Order:\r
- * Priority 1 = Most important to fix.\r
- * Priority 5 = Least important to fix.\r
\r
-Format:\r
- <Priority Level>\r
- - FIXME Description (Assigned Fixer) [FIXME location(s)]\r
+List of ReactOS Applications compiling with the NDK\r
+--------------------------------------------------------------\r
\r
-List:\r
- Priority 1:\r
- - FIXED: LDR_DATA_TABLE_ENTRY has a ROSSYM Hack (Alex) [ldrtypes.h]\r
- - FIXED: LDR_FLAGS are not correct (Alex) [ldrtypes.h]\r
- - FIXED: Remove extra Process Info classes from ddk (Alex) [zwtypes.h]\r
- - FIXED: PsEstablishWin32Callouts + Parameters don't match NT (Alex) [obtypes.h]\r
- - FIXED: PROCESS_SET_PORT was removed, ThomasW did a patch about this? (Thomas) [pstypes.h]\r
- - FIXED: Some files need cleanup (Alex + Eric) [zwfuncs.h, rtlfuncs.h, rtltypes.h]\r
\r
- Priority 2:\r
- - FIXED: DEVICE_NODE has 2 fields not part of NT's defintion (Alex) [iotypes.h]\r
- - Object Callbacks don't match NT's (Alex) [obtypes.h]\r
- - Remove Create Callback Hack (Alex) [obtypes.h]\r
- - Object header doesn't match NT (Alex) [obtypes.h] blocks on ->\r
- - Object Directory + implementation doesn't match NT (Alex) [obtypes.h]\r
-\r
- Priority 3:\r
- - FIXED: Some RTL Structures need review (Alex) [rtltypes.h]\r
- - Pushlock support is needed to fix EPROCESS (Alex) [pstypes.h]\r
- - MADDRESS_SPACE must be converted into the NT Type (Alex) [pstypes.h, mmtypes.h]\r
-\r
- Priority 4:\r
- - FIXED: Kernel and Memory Types are not architecture-specific (Eric) [ketypes.h, mmtypes.h]\r
- - FIXED: Win32K Builds with windows.h (Filip) [extypes.h, ketypes.h]\r
- - FIXED: Modify design of NDK so that all the types are in their respective files (Alex) [*.h]\r
-\r
- Priority 5:\r
- - FIXED: LPC Types are totally wrong. (Alex) [lpctypes.h]\r
- - Missing System Info Classes [zwtypes.h]\r
- - FIXED: Process Priority Classes are messed up (Alex) [pstypes.h]\r
- \r
-/*
- * 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
+);
+
+VOID
+NTAPI
+HalDisplayString(
+ IN PCHAR String
+);
+
+BOOLEAN
+NTAPI
+HalQueryDisplayOwnership(
+ VOID
+);
+
+VOID
+NTAPI
+HalReleaseDisplayOwnership(
+ VOID
+);
+
+//
+// Initialization Functions
+//
+BOOLEAN
+NTAPI
+HalAllProcessorsStarted(
+ VOID
+);
-/* PROTOTYPES ****************************************************************/
+VOID
+NTAPI
+HalInitializeProcessor(
+ ULONG ProcessorNumber,
+ PVOID ProcessorStack
+);
BOOLEAN
NTAPI
-HalQueryDisplayOwnership(VOID);
+HalInitSystem(
+ ULONG BootPhase,
+ PLOADER_PARAMETER_BLOCK LoaderBlock
+);
+
+VOID
+NTAPI
+HalReturnToFirmware(
+ FIRMWARE_REENTRY Action
+);
BOOLEAN
NTAPI
-HalAllProcessorsStarted(VOID);
+HalStartNextProcessor(
+ ULONG Unknown1,
+ ULONG Unknown2
+);
+//
+// Interrupt Functions
+//
BOOLEAN
NTAPI
HalBeginSystemInterrupt(
KIRQL Irql
);
-VOID
-NTAPI
-HalDisplayString (
- IN PCHAR String
-);
-
BOOLEAN
NTAPI
HalEnableSystemInterrupt(
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(
VOID
NTAPI
-HalReleaseDisplayOwnership(VOID);
-
-VOID
-NTAPI
-HalReturnToFirmware(
- FIRMWARE_REENTRY Action
+HalRequestIpi(
+ ULONG Unknown
);
+//
+// I/O Functions
+//
VOID
NTAPI
-HalRequestIpi(
- ULONG Unknown
+IoAssignDriveLetters(
+ struct _LOADER_PARAMETER_BLOCK *LoaderBlock,
+ PSTRING NtDeviceName,
+ PUCHAR NtSystemPath,
+ PSTRING NtSystemPathString
);
+//
+// Environment Functions
+//
BOOLEAN
NTAPI
HalSetEnvironmentVariable(
IN PCH Value
);
-BOOLEAN
-NTAPI
-HalStartNextProcessor(
- ULONG Unknown1,
- ULONG Unknown2
-);
-
-VOID
-NTAPI
-IoAssignDriveLetters(
- struct _LOADER_PARAMETER_BLOCK *LoaderBlock,
- PSTRING NtDeviceName,
- PUCHAR NtSystemPath,
- PSTRING NtSystemPathString
-);
#endif
-/*
- * 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,
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;
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
+++ /dev/null
-#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 */
-/*
- * 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;
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;
ULONG V86_Gs;
} KTRAP_FRAME, *PKTRAP_FRAME;
+//
+// LDT Entry Definition
+//
typedef struct _LDT_ENTRY
{
USHORT LimitLow;
} HighWord;
} LDT_ENTRY, *PLDT_ENTRY, *LPLDT_ENTRY;
+//
+// GDT Entry Definition
+//
typedef struct _KGDTENTRY
{
USHORT LimitLow;
} HighWord;
} KGDTENTRY, *PKGDTENTRY;
+//
+// IDT Entry Access Definition
+//
typedef struct _KIDT_ACCESS
{
union
};
} KIDT_ACCESS, *PKIDT_ACCESS;
+//
+// IDT Entry Definition
+//
typedef struct _KIDTENTRY
{
USHORT Offset;
USHORT ExtendedOffset;
} KIDTENTRY, *PKIDTENTRY;
+//
+// Page Table Entry Definition
+//
typedef struct _HARDWARE_PTE_X86
{
ULONG Valid : 1;
ULONG Base;
} KDESCRIPTOR, *PKDESCRIPTOR;
+//
+// Special Registers Structure (outside of CONTEXT)
+//
typedef struct _KSPECIAL_REGISTERS
{
ULONG Cr0;
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;
PROCESSOR_POWER_STATE PowerState;
} KPRCB, *PKPRCB;
-/*
- * This is the complete, internal KPCR structure
- */
+//
+// Processor Control Region
+//
typedef struct _KIPCR
{
union
UCHAR KernelReserved2[0x48]; /* D8 */
KPRCB PrcbData; /* 120 */
} KIPCR, *PKIPCR;
-
#pragma pack(pop)
+//
+// FIXME: TSS without I/O Privilege Map
+//
#include <pshpack1.h>
-
typedef struct _KTSSNOIOPM
{
USHORT PreviousTask;
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;
USHORT Trap;
USHORT IoMapBase;
/* no interrupt redirection map */
- UCHAR IoBitmap[8193];
+ UCHAR IoBitmap[8193];
} KTSS;
-
#include <poppack.h>
-/* i386 Doesn't have Exception Frames */
+//
+// i386 CPUs don't have exception frames
+//
typedef struct _KEXCEPTION_FRAME KEXCEPTION_FRAME, *PKEXCEPTION_FRAME;
#endif
-/*
- * 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
- */
-#ifndef _I386_MMTYPES_H
-#define _I386_MMTYPES_H
+/*++ NDK Version: 0095
-/* DEPENDENCIES **************************************************************/
+Copyright (c) Alex Ionescu. All rights reserved.
-/* EXPORTED DATA *************************************************************/
+Header Name:
-/* CONSTANTS *****************************************************************/
+ mmtypes.h (X86)
-#define PAGE_SIZE 0x1000
-#define PAGE_SHIFT 12L
+Abstract:
+
+ i386 Type definitions for the Memory Manager
+
+Author:
+
+ Alex Ionescu (alex.ionescu@reactos.com) 06-Oct-2004
-/* ENUMERATIONS **************************************************************/
+--*/
-/* TYPES *********************************************************************/
+#ifndef _I386_MMTYPES_H
+#define _I386_MMTYPES_H
+
+//
+// Dependencies
+//
+
+//
+// Page-related Macros
+//
+#define PAGE_SIZE 0x1000
+#define PAGE_SHIFT 12L
#endif
+++ /dev/null
-#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 */
-/*\r
- * PROJECT: ReactOS Native Headers\r
- * FILE: include/ndk/ifssupp.h\r
- * PURPOSE: Defintions present in IFS, required for NDK usage.\r
- * PROGRAMMER: Alex Ionescu (alex@relsoft.net)\r
- * UPDATE HISTORY:\r
- * Created 08/16/05\r
- */\r
-#ifndef _NTIFS_\r
-#define _NTIFS_\r
+/*++ NDK Version: 0095\r
+\r
+Copyright (c) Alex Ionescu. All rights reserved.\r
+\r
+Header Name:\r
+\r
+ ifssupp.h\r
+\r
+Abstract:\r
\r
-/* DEPENDENCIES **************************************************************/\r
+ NDK Support for usage without the IFS. Will be deprecated at WDK Release.\r
\r
-/* EXPORTED DATA *************************************************************/\r
+Author:\r
\r
-/* CONSTANTS *****************************************************************/\r
+ Alex Ionescu (alex.ionescu@reactos.com) 06-Oct-2004\r
\r
-/* TYPES *********************************************************************/\r
+--*/\r
+\r
+#ifndef _NTIFS_\r
+#define _NTIFS_\r
\r
typedef PVOID PRTL_HEAP_PARAMETERS;\r
\r
GenericEqual\r
} RTL_GENERIC_COMPARE_RESULTS;\r
\r
-#endif\r
-\r
+#endif // _NTIFS_\r
-/*
- * 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
- */
-#ifndef _INBVFUNCS_H
-#define _INBVFUNCS_H
+/*++ NDK Version: 0095
+
+Copyright (c) Alex Ionescu. All rights reserved.
+
+Header Name:
+
+ inbvfuncs.h
+
+Abstract:
-/* DEPENDENCIES **************************************************************/
+ Function definitions for the Boot Video Driver.
-/* FUNCTION TYPES ************************************************************/
+Author:
+
+ Alex Ionescu (alex.ionescu@reactos.com) 06-Oct-2004
+
+--*/
+
+#ifndef _INBVFUNCS_H
+#define _INBVFUNCS_H
-/* PROTOTYPES ****************************************************************/
+//
+// Dependencies
+//
+//
+// Ownership Functions
+//
VOID
NTAPI
InbvAcquireDisplayOwnership(VOID);
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(
NTAPI
InbvIsBootDriverInstalled(VOID);
-VOID
+//
+// Display Functions
+//
+BOOLEAN
NTAPI
-InbvNotifyDisplayOwnershipLost(
- IN PVOID Callback
+InbvDisplayString(
+ IN PCHAR String
+);
+
+BOOLEAN
+NTAPI
+InbvEnableDisplayString(
+ IN BOOLEAN Enable
);
BOOLEAN
IN ULONG Color
);
-VOID
-NTAPI
-VidCleanUp(VOID);
-
-BOOLEAN
-NTAPI
-VidResetDisplay(VOID);
-
-BOOLEAN
-NTAPI
-VidIsBootDriverInstalled(VOID);
-
#endif
-/*
- * 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 **************************************************************/
-
-/* FUNCTION TYPES ************************************************************/
+//
+// Dependencies
+//
-/* PROTOTYPES ****************************************************************/
#endif
-/*
- * 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;
-#endif
-/* CONSTANTS *****************************************************************/
+#else
-#ifdef NTOS_MODE_USER
-/* Object Access Rights */
-#define SYMBOLIC_LINK_QUERY 0x0001
-#define SYMBOLIC_LINK_ALL_ACCESS STANDARD_RIGHTS_REQUIRED | 0x0001
+//
+// Symbolic Link Access Rights
+//
+#define SYMBOLIC_LINK_QUERY 0x0001
+#define SYMBOLIC_LINK_ALL_ACCESS STANDARD_RIGHTS_REQUIRED | 0x0001
#endif
-/* 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
-
-/* 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 Attributes */
-#define FILE_ATTRIBUTE_VALID_FLAGS 0x00007fb7
-#define FILE_ATTRIBUTE_VALID_SET_FLAGS 0x000031a7
-
-/* 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
-
-/* 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
-
-/* 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 */
+//
+// 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
+
+//
+// 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 Attributes
+//
+#define FILE_ATTRIBUTE_VALID_FLAGS 0x00007fb7
+#define FILE_ATTRIBUTE_VALID_SET_FLAGS 0x000031a7
+
+//
+// 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
+
+//
+// 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
+
+//
+// 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
+//
#define DNF_PROCESSED 0x00000001
#define DNF_STARTED 0x00000002
#define DNF_START_FAILED 0x00000004
#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,
MaximumInterfaceType
}INTERFACE_TYPE, *PINTERFACE_TYPE;
+//
+// File Information Classes for NtQueryInformationFile
+//
typedef enum _FILE_INFORMATION_CLASS
{
FileDirectoryInformation = 1,
FileMaximumInformation
} FILE_INFORMATION_CLASS, *PFILE_INFORMATION_CLASS;
+//
+// File Information Classes for NtQueryInformationFileSystem
+//
typedef enum _FSINFOCLASS
{
FileFsVolumeInformation = 1,
FileFsDriverPathInformation,
FileFsMaximumInformation
} FS_INFORMATION_CLASS, *PFS_INFORMATION_CLASS;
+
#endif
+//
+// Device Node States
+//
typedef enum _PNP_DEVNODE_STATE
{
DeviceNodeUnspecified = 0x300,
MaxDeviceNodeState = 0x315,
} PNP_DEVNODE_STATE;
-/* TYPES *********************************************************************/
-
#ifdef NTOS_MODE_USER
+
+//
+// File Information structures for NtQueryInformationFile
+//
typedef struct _FILE_BASIC_INFORMATION
{
LARGE_INTEGER CreationTime;
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;
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;
CHAR Data[1];
} FILE_PIPE_PEEK_BUFFER, *PFILE_PIPE_PEEK_BUFFER;
+//
+// I/O Status Block
+//
typedef struct _IO_STATUS_BLOCK
{
union
ULONG_PTR Information;
} IO_STATUS_BLOCK, *PIO_STATUS_BLOCK;
+//
+// I/O Error Log Structures
+//
typedef struct _IO_ERROR_LOG_PACKET
{
UCHAR MajorFunctionCode;
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;
PDEVICE_OBJECT DeviceObject;
} IO_TIMER, *PIO_TIMER;
+//
+// Device Node
+//
typedef struct _DEVICE_NODE
{
struct _DEVICE_NODE *Parent;
ULONG DeletedChidren;
} DEVICE_NODE, *PDEVICE_NODE;
+//
+// Resource Aribtrer Entry
+//
typedef struct _PI_RESOURCE_ARBITER_ENTRY
{
LIST_ENTRY DeviceArbiterList;
UCHAR State;
UCHAR ResourcesChanged;
} PI_RESOURCE_ARBITER_ENTRY, *PPI_RESOURCE_ARBITER_ENTRY;
-
+
+//
+// Extended Device Object Extension Structure
+//
typedef struct _EXTENDED_DEVOBJ_EXTENSION
{
CSHORT Type;
struct _VPB *Vpb;
} EXTENDED_DEVOBJ_EXTENSION, *PEXTENDED_DEVOBJ_EXTENSION;
+//
+// Private Driver Extension Descriptor
+//
typedef struct _PRIVATE_DRIVER_EXTENSIONS
{
struct _PRIVATE_DRIVER_EXTENSIONS *Link;
CHAR Extension[1];
} PRIVATE_DRIVER_EXTENSIONS, *PPRIVATE_DRIVER_EXTENSIONS;
+//
+// Extended I/O Stack Location Structure
+//
#if !defined(_ALPHA_)
#include <pshpack4.h>
#endif
#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 \
#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 \
#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
-/*
- * 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);
-/*
- * 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
#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,
DebugDbgLoadSymbols
} DEBUG_CONTROL_CODE;
-/* TYPES *********************************************************************/
-
+//
+// Kernel Debugger Port Definition
+//
typedef struct _KD_PORT_INFORMATION
{
ULONG ComPort;
ULONG BaseAddress;
} KD_PORT_INFORMATION, *PKD_PORT_INFORMATION;
-#endif
+#endif // _KDTYPES_H
-/*
- * 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
+);
-BOOLEAN
+VOID
NTAPI
-KeAddSystemServiceTable(
- PULONG_PTR Base,
- PULONG Count OPTIONAL,
- ULONG Limit,
- PUCHAR Number,
- ULONG Index
+KiDeliverApc(
+ IN KPROCESSOR_MODE PreviousMode,
+ IN PVOID Reserved,
+ IN PKTRAP_FRAME TrapFrame
);
+//
+// Process/Thread 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
+KeTerminateThread(
+ IN KPRIORITY Increment
+);
+
+BOOLEAN
+NTAPI
+KeIsAttachedProcess(
+ VOID
);
VOID
NTAPI
-KeEnterKernelDebugger(VOID);
+KeSetEventBoostPriority(
+ IN PKEVENT Event,
+ IN PKTHREAD *Thread OPTIONAL
+);
+NTSTATUS
+NTAPI
+KeSetAffinityThread(
+ PKTHREAD Thread,
+ KAFFINITY Affinity
+);
+
+PKPROCESS
+NTAPI
+KeGetCurrentProcess(
+ VOID
+);
+
+BOOLEAN
+NTAPI
+KeAddSystemServiceTable(
+ PULONG_PTR Base,
+ PULONG Count OPTIONAL,
+ ULONG Limit,
+ PUCHAR Number,
+ ULONG Index
+);
+
+//
+// Spinlock Functions
+//
VOID
FASTCALL
KiAcquireSpinLock(
PKSPIN_LOCK SpinLock
);
+//
+// Interrupt Functions
+//
VOID
NTAPI
-KiDeliverApc(
- IN KPROCESSOR_MODE PreviousMode,
- IN PVOID Reserved,
- IN PKTRAP_FRAME TrapFrame
+KeInitializeInterrupt(
+ PKINTERRUPT InterruptObject,
+ PKSERVICE_ROUTINE ServiceRoutine,
+ PVOID ServiceContext,
+ PKSPIN_LOCK SpinLock,
+ ULONG Vector,
+ KIRQL Irql,
+ KIRQL SynchronizeIrql,
+ KINTERRUPT_MODE InterruptMode,
+ BOOLEAN ShareVector,
+ CHAR ProcessorNumber,
+ BOOLEAN FloatingSave
);
-VOID
+BOOLEAN
+NTAPI
+KeConnectInterrupt(
+ PKINTERRUPT InterruptObject
+);
+
+BOOLEAN
NTAPI
-KiDispatchInterrupt(VOID);
+KeDisconnectInterrupt(
+ PKINTERRUPT InterruptObject
+);
VOID
NTAPI
-KeTerminateThread(
- IN KPRIORITY Increment
+KiDispatchInterrupt(
+ VOID
);
-BOOLEAN
+VOID
NTAPI
-KeIsAttachedProcess(VOID);
+KiCoprocessorError(
+ VOID
+);
-BOOLEAN
+VOID
NTAPI
-KeIsExecutingDpc(
+KiUnexpectedInterrupt(
VOID
);
VOID
NTAPI
-KeSetEventBoostPriority(
- IN PKEVENT Event,
- IN PKTHREAD *Thread OPTIONAL
+KeEnterKernelDebugger(
+ VOID
);
+BOOLEAN
+NTAPI
+KeIsExecutingDpc(
+ VOID
+);
+
+//
+// ARC Configuration Functions
+//
PCONFIGURATION_COMPONENT_DATA
NTAPI
KeFindConfigurationNextEntry(
IN PULONG ComponentKey OPTIONAL
);
+//
+// Low-level Hardware/CPU Control Functions
+//
VOID
NTAPI
KeFlushEntireTb(
VOID
NTAPI
-KiCoprocessorError(
- VOID
-);
-
-VOID
-NTAPI
-KiUnexpectedInterrupt(
- VOID
+KeSetDmaIoCoherency(
+ IN ULONG Coherency
);
VOID
-NTAPI
-KeSetDmaIoCoherency(
- IN ULONG Coherency
+KeSetGdtSelector(
+ ULONG Entry,
+ ULONG Value1,
+ ULONG Value2
);
VOID
IN KIRQL ProfileIrql
);
-NTSTATUS
+VOID
NTAPI
-KeSetAffinityThread(
- PKTHREAD Thread,
- KAFFINITY Affinity
+KeSetTimeIncrement(
+ IN ULONG MaxIncrement,
+ IN ULONG MinIncrement
);
+//
+// Misc. Functions
+//
NTSTATUS
NTAPI
KeUserModeCallback(
OUT PULONG OutputLength
);
-VOID
-NTAPI
-KeSetTimeIncrement(
- IN ULONG MaxIncrement,
- IN ULONG MinIncrement
-);
-
-VOID
-NTAPI
-KeInitializeInterrupt(
- PKINTERRUPT InterruptObject,
- PKSERVICE_ROUTINE ServiceRoutine,
- PVOID ServiceContext,
- PKSPIN_LOCK SpinLock,
- ULONG Vector,
- KIRQL Irql,
- KIRQL SynchronizeIrql,
- KINTERRUPT_MODE InterruptMode,
- BOOLEAN ShareVector,
- CHAR ProcessorNumber,
- BOOLEAN FloatingSave
-);
-
-BOOLEAN
-NTAPI
-KeConnectInterrupt(
- PKINTERRUPT InterruptObject
-);
-
-BOOLEAN
-NTAPI
-KeDisconnectInterrupt(
- PKINTERRUPT InterruptObject
-);
-
-PKPROCESS
-NTAPI
-KeGetCurrentProcess(
- VOID
-);
-
-VOID
-KeSetGdtSelector(
- ULONG Entry,
- ULONG Value1,
- ULONG Value2
-);
-
NTSTATUS
NTAPI
KeRaiseUserException(
IN NTSTATUS ExceptionCode
- );
+);
#endif
-/*
- * 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 <arc/arc.h>
#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,
MaximumMode
} MODE;
+//
+// Wait Reasons
+//
typedef enum _KWAIT_REASON
{
Executive,
MaximumWaitReason
} KWAIT_REASON;
+//
+// Profiling Sources
+//
typedef enum _KPROFILE_SOURCE
{
ProfileTime,
ProfileMaximum
} KPROFILE_SOURCE;
+//
+// NT Product and Architecture Types
+//
typedef enum _NT_PRODUCT_TYPE
{
NtProductWinNt = 1,
NEC98x86,
EndAlternatives
} ALTERNATIVE_ARCHITECTURE_TYPE;
+
#endif
+//
+// Thread States
+//
typedef enum _KTHREAD_STATE
{
Initialized,
DeferredReady,
} KTHREAD_STATE, *PKTHREAD_STATE;
+//
+// Process States
+//
typedef enum _KPROCESS_STATE
{
ProcessInMemory,
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;
LONG High2Time;
} KSYSTEM_TIME, *PKSYSTEM_TIME;
+//
+// Shared Kernel User Data
+//
typedef struct _KUSER_SHARED_DATA
{
ULONG TickCountLowDeprecated;
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;
CONFIGURATION_COMPONENT Component;
} CONFIGURATION_COMPONENT_DATA, *PCONFIGURATION_COMPONENT_DATA;
+//
+// APC Environment Types
+//
typedef enum _KAPC_ENVIRONMENT
{
OriginalApcEnvironment,
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;
struct _KPROCESS *Process;
} KPROFILE, *PKPROFILE;
+//
+// Kernel Interrupt Object (FIXME: Verify)
+//
typedef struct _KINTERRUPT
{
CSHORT Type;
ULONG DispatchCode[106];
} KINTERRUPT, *PKINTERRUPT;
+//
+// Kernel Event Pair Object
+//
typedef struct _KEVENT_PAIR
{
CSHORT Type;
KEVENT HighEvent;
} KEVENT_PAIR, *PKEVENT_PAIR;
+//
+// Kernel No Execute Options
+//
typedef struct _KEXECUTE_OPTIONS
{
UCHAR ExecuteDisable:1;
UCHAR Spare:2;
} KEXECUTE_OPTIONS, *PKEXECUTE_OPTIONS;
+//
+// Kernel Object Types
+//
typedef enum _KOBJECTS
{
EventNotificationObject = 0,
MaximumKernelObject = 25
} KOBJECTS;
+//
+// Kernel Thread (KTHREAD)
+//
#include <pshpack1.h>
-
typedef struct _KTHREAD
{
DISPATCHER_HEADER DispatcherHeader; /* 00 */
LIST_ENTRY ThreadListEntry; /* 1A8 */
PVOID SListFaultAddress; /* 1B0 */
} KTHREAD; /* sizeof: 1B4 */
-
#include <poppack.h>
+//
+// Kernel Process (KPROCESS)
+//
typedef struct _KPROCESS
{
DISPATCHER_HEADER Header; /* 000 */
LIST_ENTRY ProcessListEntry; /* 070 */
} KPROCESS;
+//
+// System Service Table Descriptor
+//
typedef struct _KSERVICE_TABLE_DESCRIPTOR
{
PULONG_PTR Base;
#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
-/*
- * 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 <ntimage.h>
#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
);
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
);
OUT PIMAGE_RESOURCE_DIRECTORY *ResourceDirectory
);
+//
+// Misc. Functions
+//
NTSTATUS
NTAPI
LdrGetProcedureAddress(
-/*
- * 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 **************************************************************/
-
-/* EXPORTED DATA *************************************************************/
-
-/* CONSTANTS *****************************************************************/
-#define RESOURCE_TYPE_LEVEL 0
-#define RESOURCE_NAME_LEVEL 1
-#define RESOURCE_LANGUAGE_LEVEL 2
-#define RESOURCE_DATA_LEVEL 3
-
-/* 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 *********************************************************************/
+//
+// Dependencies
+//
+
+//
+// Resource Type Levels
+//
+#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
+
+//
+// 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;
PVOID PatchInformation;
} LDR_DATA_TABLE_ENTRY, *PLDR_DATA_TABLE_ENTRY;
+//
+// Loader Resource Information
+//
typedef struct _LDR_RESOURCE_INFO
{
ULONG Type;
-/*
- * 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 **************************************************************/
-
-/* EXPORTED DATA *************************************************************/
+//
+// Dependencies
+//
-/* 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,
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
#define LPC_HANDLE HANDLE
#endif
+//
+// LPC Port Message
+//
typedef struct _PORT_MESSAGE
{
union
};
} PORT_MESSAGE, *PPORT_MESSAGE;
+//
+// Local and Remove Port Views
+//
typedef struct _PORT_VIEW
{
ULONG Length;
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];
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;
LIST_ENTRY ReceiveHead;
} LPCP_PORT_QUEUE, *PLPCP_PORT_QUEUE;
+//
+// LPC Port Object
+//
typedef struct _LPCP_PORT_OBJECT
{
ULONG Length;
LIST_ENTRY LpcDataInfoChainHead;
} LPCP_PORT_OBJECT, *PLPCP_PORT_OBJECT;
+//
+// LPC Kernel-Mode Message Structures
+//
typedef struct _LPCP_MESSAGE
{
union
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;
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
-/*
- * 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(
-/*
- * 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 <arch/mmtypes.h>
-/* 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) )
+
+//
+// Macro for generating pool tags
+//
+#define TAG(A, B, C, D) (ULONG)(((A)<<0) + ((B)<<8) + ((C)<<16) + ((D)<<24))
-/* CONSTANTS *****************************************************************/
#ifdef NTOS_MODE_USER
-#define SEC_BASED 0x00200000
-#define SEC_NO_CHANGE 0x00400000
-#endif
-/* ENUMERATIONS **************************************************************/
+//
+// Section Flags for NtCreateSection
+//
+#define SEC_BASED 0x00200000
+#define SEC_NO_CHANGE 0x00400000
-#ifdef NTOS_MODE_USER
+//
+// Section Inherit Flags for NtCreateSection
+//
typedef enum _SECTION_INHERIT
{
ViewShare = 1,
ViewUnmap = 2
} SECTION_INHERIT;
+//
+// Pool Types
+//
typedef enum _POOL_TYPE
{
NonPagedPool,
} POOL_TYPE;
#endif
+//
+// Per Processor Non Paged Lookaside List IDs
+//
typedef enum _PP_NPAGED_LOOKASIDE_NUMBER
{
LookasideSmallIrpList = 0,
LookasideMaximumList = 7
} PP_NPAGED_LOOKASIDE_NUMBER;
+//
+// Memory Information Classes for NtQueryVirtualMemory
+//
typedef enum _MEMORY_INFORMATION_CLASS
{
MemoryBasicInformation,
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;
} 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;
} 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;
ULONG PageTableRefCountTableSize;
} MADDRESS_SPACE, *PMADDRESS_SPACE;
+//
+// Generic Address Range Structure
+//
typedef struct _ADDRESS_RANGE
{
ULONG BaseAddrLow;
ULONG Type;
} ADDRESS_RANGE, *PADDRESS_RANGE;
+//
+// Node in Memory Manager's AVL Table
+//
typedef struct _MMADDRESS_NODE
{
union
ULONG EndingVpn;
} MMADDRESS_NODE, *PMMADDRESS_NODE;
+//
+// Memory Manager AVL Table for VADs and other descriptors
+//
typedef struct _MM_AVL_TABLE
{
MMADDRESS_NODE BalancedRoot;
PVOID NodeFreeHint;
} MM_AVL_TABLE, *PMM_AVL_TABLE;
+//
+// Memory Manager Working Set Structures
+//
typedef struct _MMWSLENTRY
{
ULONG Valid:1;
ULONG CommittedPageTables[24];
} MMWSL, *PMMWSL;
+//
+// Flags for Memory Support Structure
+//
typedef struct _MMSUPPORT_FLAGS
{
ULONG SessionSpace:1;
ULONG MemoryPriority:8;
} MMSUPPORT_FLAGS, *PMMSUPPORT_FLAGS;
+//
+// Per-Process Memory Manager Data
+//
typedef struct _MMSUPPORT
{
LARGE_INTEGER LastTrimTime;
ULONG GrowthSinceLastEstimate;
} MMSUPPORT, *PMMSUPPORT;
-#endif
-#endif
+#endif // !NTOS_MODE_USER
+
+#endif // _MMTYPES_H
-/*
- * 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 <stdarg.h>
-/* Helper Header */
-#include <reactos/helper.h>
+#ifndef NTOS_MODE_USER
-/* A version of ntdef.h to be used with PSDK headers. */
-#include "umtypes.h"
+//
+// Headers that are only useful to Kernel Mode modules
+//
+#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
-/* 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 */
-
-#endif
+#endif // !NTOS_MODE_USER
+
+//
+// Headers used both in User Mode and Kernel Mode
+//
+#include <umtypes.h> // General Definitions
+#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 <asm.h> // Assembly Offsets
+
+#endif // _NTNDK_
-/*
- * 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
- */
-#ifndef _OBFUNCS_H
-#define _OBFUNCS_H
+/*++ NDK Version: 0095
+
+Copyright (c) Alex Ionescu. All rights reserved.
+
+Header Name:
+
+ obtypes.h
+
+Abstract:
+
+ Type definitions for the Object Manager
-/* DEPENDENCIES **************************************************************/
+Author:
-/* FUNCTION TYPES ************************************************************/
+ Alex Ionescu (alex.ionescu@reactos.com) 06-Oct-2004
-/* PROTOTYPES ****************************************************************/
+--*/
+#ifndef _OBFUNCS_H
+#define _OBFUNCS_H
+
+//
+// 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
-/*
- * 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
- */
-#ifndef _OBTYPES_H
-#define _OBTYPES_H
+/*++ NDK Version: 0095
-/* DEPENDENCIES **************************************************************/
+Copyright (c) Alex Ionescu. All rights reserved.
-/* CONSTANTS *****************************************************************/
+Header Name:
-#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
-#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; \
-}
+ obtypes.h
-/* 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
+Abstract:
-/* Duplication Flags */
-#define DUPLICATE_SAME_ATTRIBUTES 0x00000004
+ Type definitions for the Object Manager
-/* 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
+Author:
-#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
+ Alex Ionescu (alex.ionescu@reactos.com) 06-Oct-2004
-/* ENUMERATIONS **************************************************************/
+--*/
+
+#ifndef _OBTYPES_H
+#define _OBTYPES_H
+
+//
+// Dependencies
+//
+
+#ifdef NTOS_MODE_USER
+//
+// 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; \
+}
+
+//
+// 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)
+
+#else
+
+//
+// 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,
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,
/* 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
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
} OBJECT_DIRECTORY_INFORMATION, *POBJECT_DIRECTORY_INFORMATION;
#ifndef NTOS_MODE_USER
+
typedef struct _OBJECT_BASIC_INFORMATION
{
ULONG Attributes;
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;
SECURITY_QUALITY_OF_SERVICE SecurityQualityOfService;
} OBJECT_CREATE_INFORMATION, *POBJECT_CREATE_INFORMATION;
+//
+// Object Type Initialize for ObCreateObjectType
+//
typedef struct _OBJECT_TYPE_INITIALIZER
{
USHORT Length;
OB_OKAYTOCLOSE_METHOD OkayToCloseProcedure;
} OBJECT_TYPE_INITIALIZER, *POBJECT_TYPE_INITIALIZER;
+//
+// Object Type Object
+//
typedef struct _OBJECT_TYPE
{
ERESOURCE Mutex;
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;
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
{
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;
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];
ULONG SessionId;
} OBJECT_DIRECTORY, *POBJECT_DIRECTORY;
+//
+// Device Map
+//
typedef struct _DEVICE_MAP
{
POBJECT_DIRECTORY DosDevicesDirectory;
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
-/*
- * 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 <ntpoapi.h>
#endif
-/* EXPORTED DATA *************************************************************/
-
-/* CONSTANTS *****************************************************************/
-
-/* ENUMERATIONS **************************************************************/
+//
+// Docking states
+//
typedef enum _SYSTEM_DOCK_STATE
{
SystemDockStateUnknown,
SystemDocked
} SYSTEM_DOCK_STATE, *PSYSTEM_DOCK_STATE;
-/* TYPES *********************************************************************/
-
#ifndef NTOS_MODE_USER
+
+//
+// Processor Power State Data
+//
typedef struct _PROCESSOR_POWER_STATE
{
PVOID IdleFunction;
ULONG Spare1[1];
} PROCESSOR_POWER_STATE, *PPROCESSOR_POWER_STATE;
+//
+// Device Notification Structure
+//
typedef struct _PO_DEVICE_NOTIFY
{
LIST_ENTRY Link;
ULONG ChildCount;
ULONG ActiveChild;
} PO_DEVICE_NOTIFY, *PPO_DEVICE_NOTIFY;
-#endif
-#endif
+
+#endif // !NTOS_MODE_USER
+
+#endif // _POTYPES_H
-/*
- * 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 ****************************************************************/
-
-struct _W32THREAD* NTAPI
-PsGetWin32Thread(VOID);
+//
+// Win32K Process/Thread Functions
+//
+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
PVOID
NTAPI
-PsGetThreadWin32Thread(PETHREAD Thread);
-
-VOID
-NTAPI
-PsRevertThreadToSelf(
- IN struct _ETHREAD* Thread
+PsGetThreadWin32Thread(
+ PETHREAD Thread
);
-struct _W32THREAD*
+VOID
NTAPI
-PsGetWin32Thread(
- VOID
+PsEstablishWin32Callouts(
+ PW32_CALLOUT_DATA CalloutData
);
-struct _W32PROCESS*
+//
+// Process Impersonation Functions
+//
+VOID
NTAPI
-PsGetWin32Process(
- VOID
+PsRevertThreadToSelf(
+ IN PETHREAD Thread
);
-VOID
-NTAPI
-PsEstablishWin32Callouts(PW32_CALLOUT_DATA CalloutData);
-
+//
+// Misc. Functions
+//
HANDLE
NTAPI
-PsGetProcessId(struct _EPROCESS *Process);
+PsGetProcessId(PEPROCESS Process);
#endif
-/*
- * 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"
#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 *****************************************************************/
-/* 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 */
+//
+// 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
+
+//
+// Process priority classes
+//
#define PROCESS_PRIORITY_CLASS_INVALID 0
#define PROCESS_PRIORITY_CLASS_IDLE 1
#define PROCESS_PRIORITY_CLASS_NORMAL 2
#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,
ThreadActualBasePriority,
MaxThreadInfoClass
} THREADINFOCLASS;
-#endif
-#ifndef NTOS_MODE_USER
+#else
+
typedef enum _JOBOBJECTINFOCLASS
{
JobObjectBasicAccountingInformation = 1,
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,
struct _ETHREAD *Thread,
BOOLEAN Create
);
-#endif
-
-/* TYPES *********************************************************************/
-struct _W32THREAD;
-struct _W32PROCESS;
-
-struct _ETHREAD;
+#endif
#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 */
UNICODE_STRING CSDVersion; /* 1DCh */
} PEB, *PPEB;
+//
+// GDI Batch Descriptor
+//
typedef struct _GDI_TEB_BATCH
{
ULONG Offset;
ULONG Buffer[0x136];
} GDI_TEB_BATCH, *PGDI_TEB_BATCH;
+//
+// Initial TEB
+//
typedef struct _INITIAL_TEB
{
PVOID PreviousStackBase;
PVOID AllocatedStackBase;
} INITIAL_TEB, *PINITIAL_TEB;
+//
+// TEB Active Frame Structures
+//
typedef struct _TEB_ACTIVE_FRAME_CONTEXT
{
ULONG Flags;
PTEB_ACTIVE_FRAME_CONTEXT Context;
} TEB_ACTIVE_FRAME, *PTEB_ACTIVE_FRAME;
+//
+// Thread Environment Block (TEB)
+//
typedef struct _TEB
{
NT_TIB Tib; /* 00h */
} TEB, *PTEB;
#ifdef NTOS_MODE_USER
+
+//
+// Process Information Structures for NtQueryProcessInformation
+//
typedef struct _PROCESS_BASIC_INFORMATION
{
NTSTATUS ExitStatus;
{
ULONG SessionId;
} PROCESS_SESSION_INFORMATION, *PPROCESS_SESSION_INFORMATION;
+
#endif
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;
#include <internal/mm.h>
#endif
+//
+// EPROCESS Quota Structures
+//
typedef struct _EPROCESS_QUOTA_ENTRY
{
SIZE_T Usage;
ULONG ProcessCount;
} EPROCESS_QUOTA_BLOCK, *PEPROCESS_QUOTA_BLOCK;
+//
+// FIXME: This really belongs in mmtypes.h
+//
typedef struct _PAGEFAULT_HISTORY
{
ULONG CurrentIndex;
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 <pshpack4.h>
typedef struct _ETHREAD
{
UCHAR ActiveFaultCount; /* 24E */
} ETHREAD;
+//
+// Executive Process (EPROCESS)
+//
typedef struct _EPROCESS
{
KPROCESS Pcb; /* 000 */
} EPROCESS;
#include <poppack.h>
+//
+// Job Token Filter Data
+//
#include <pshpack1.h>
typedef struct _PS_JOB_TOKEN_FILTER
{
ULONG CapturedPrivilegesLength;
} PS_JOB_TOKEN_FILTER, *PPS_JOB_TOKEN_FILTER;
+//
+// Executive Job (EJOB)
+//
typedef struct _EJOB
{
KEVENT Event;
} EJOB, *PEJOB;
#include <poppack.h>
+//
+// Win32K Callback Registration Data
+//
typedef struct _W32_CALLOUT_DATA
{
PW32_PROCESS_CALLBACK W32ProcessCallout;
OB_CREATE_METHOD DesktopCreate;
} W32_CALLOUT_DATA, *PW32_CALLOUT_DATA;
-#endif
+#endif // !NTOS_MODE_USER
-#endif
+#endif // _PSTYPES_H
--- /dev/null
+Native Development Kit README\r
+ NDK 1.00\r
+-----------------------------\r
+\r
+1. LICENSE\r
+\r
+1.1 OPEN SOURCE USAGE\r
+\r
+Open Source Projects may choose to use one of either the two following licenses:\r
+\r
+GNU GENERAL PUBLIC LICENSE Version 2, June 1991\r
+\r
+ OR\r
+\r
+GNU LESSER GENERAL PUBLIC LICENSE Version 2.1, February 1999\r
+\r
+The choice is yours to make based on the license which is most compatible with your\r
+software.\r
+\r
+You MUST read GPL.TXT or LGPL.TXT after your decision. Violating your chosen license\r
+voids your usage rights of the NDK and will lead to legal action on the part of the\r
+author.\r
+\r
+If your Open Source product does not use a license which is compatible with the ones\r
+listed above, please contact the author to reach a mutual agreement to find a better\r
+solution for your product. Alternatively, you may choose to use the Proprietary Usage\r
+license displayed below in section 1.2\r
+\r
+If you are unsure of whether or not your product qualifies as an Open Source product,\r
+please contact the Free Software Foundation, or visit their website at www.fsf.org.\r
+\r
+\r
+1.2 PROPRIETARY USAGE\r
+\r
+Because it may be undesirable or impossible to adapt this software to your commercial\r
+and/or proprietary product(s) and/or service(s) using a (L)GPL license, proprietary\r
+products are free to use the following license:\r
+\r
+NDK LICENSE Version 1, November 2005\r
+\r
+You MUST read NDK.TXT for the full text of this license. Violating your chosen license\r
+voids your usage rights of the NDK, constitutes a copyright violation, and will lead to\r
+legal action on the part of the author.\r
+\r
+If you are unsure of have any questions about the NDK License, please contact the\r
+author for further clarification.\r
+\r
+2. USAGE\r
+\r
+2.1 TODO (COPY FROM WIKI)\r
+\r
+... TODO ... (COPY FROM WIKI)\r
-/*
- * 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 <ntnls.h>
#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;
+}
-/*
- * Splay Tree Macros
- */
-#define RtlIsLeftChild(Links) \
- (RtlLeftChild(RtlParent(Links)) == (PRTL_SPLAY_LINKS)(Links))
+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;
+}
-#define RtlIsRightChild(Links) \
- (RtlRightChild(RtlParent(Links)) == (PRTL_SPLAY_LINKS)(Links))
+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;
+}
-#define RtlRightChild(Links) \
- ((PRTL_SPLAY_LINKS)(Links))->RightChild
+BOOLEAN
+FORCEINLINE
+IsListEmpty(
+ IN const LIST_ENTRY * ListHead
+)
+{
+ return (BOOLEAN)(ListHead->Flink == ListHead);
+}
-#define RtlIsRoot(Links) \
- (RtlParent(Links) == (PRTL_SPLAY_LINKS)(Links))
+FORCEINLINE
+PSINGLE_LIST_ENTRY
+PopEntryList(
+ PSINGLE_LIST_ENTRY ListHead
+)
+{
+ PSINGLE_LIST_ENTRY FirstEntry;
+ FirstEntry = ListHead->Next;
+ if (FirstEntry != NULL) {
+ ListHead->Next = FirstEntry->Next;
+ }
-#define RtlLeftChild(Links) \
- ((PRTL_SPLAY_LINKS)(Links))->LeftChild
+ return FirstEntry;
+}
-#define RtlParent(Links) \
- ((PRTL_SPLAY_LINKS)(Links))->Parent
+FORCEINLINE
+VOID
+PushEntryList(
+ PSINGLE_LIST_ENTRY ListHead,
+ PSINGLE_LIST_ENTRY Entry
+)
+{
+ Entry->Next = ListHead->Next;
+ ListHead->Next = Entry;
+}
-#define RtlInitializeSplayLinks(Links) \
- { \
- PRTL_SPLAY_LINKS _SplayLinks; \
- _SplayLinks = (PRTL_SPLAY_LINKS)(Links); \
- _SplayLinks->Parent = _SplayLinks; \
- _SplayLinks->LeftChild = NULL; \
- _SplayLinks->RightChild = NULL; \
- }
+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);
+}
-#define RtlInsertAsLeftChild(ParentLinks,ChildLinks) \
- { \
- PRTL_SPLAY_LINKS _SplayParent; \
- PRTL_SPLAY_LINKS _SplayChild; \
- _SplayParent = (PRTL_SPLAY_LINKS)(ParentLinks); \
- _SplayChild = (PRTL_SPLAY_LINKS)(ChildLinks); \
- _SplayParent->LeftChild = _SplayChild; \
- _SplayChild->Parent = _SplayParent; \
- }
+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;
+}
-#define RtlInsertAsRightChild(ParentLinks,ChildLinks) \
- { \
- PRTL_SPLAY_LINKS _SplayParent; \
- PRTL_SPLAY_LINKS _SplayChild; \
- _SplayParent = (PRTL_SPLAY_LINKS)(ParentLinks); \
- _SplayChild = (PRTL_SPLAY_LINKS)(ChildLinks); \
- _SplayParent->RightChild = _SplayChild; \
- _SplayChild->Parent = _SplayParent; \
- }
+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))
-/* PROTOTYPES ****************************************************************/
+#endif
-/*
- * Splay Tree Functions
- */
+//
+// RTL Splay Tree Functions
+//
NTSYSAPI
PRTL_SPLAY_LINKS
NTAPI
NTAPI
RtlRealPredecessor(PRTL_SPLAY_LINKS Links);
-/*
- * Error and Exception Functions
- */
+#define RtlIsLeftChild(Links) \
+ (RtlLeftChild(RtlParent(Links)) == (PRTL_SPLAY_LINKS)(Links))
+
+#define RtlIsRightChild(Links) \
+ (RtlRightChild(RtlParent(Links)) == (PRTL_SPLAY_LINKS)(Links))
+
+#define RtlRightChild(Links) \
+ ((PRTL_SPLAY_LINKS)(Links))->RightChild
+
+#define RtlIsRoot(Links) \
+ (RtlParent(Links) == (PRTL_SPLAY_LINKS)(Links))
+
+#define RtlLeftChild(Links) \
+ ((PRTL_SPLAY_LINKS)(Links))->LeftChild
+
+#define RtlParent(Links) \
+ ((PRTL_SPLAY_LINKS)(Links))->Parent
+
+#define RtlInitializeSplayLinks(Links) \
+ { \
+ PRTL_SPLAY_LINKS _SplayLinks; \
+ _SplayLinks = (PRTL_SPLAY_LINKS)(Links); \
+ _SplayLinks->Parent = _SplayLinks; \
+ _SplayLinks->LeftChild = NULL; \
+ _SplayLinks->RightChild = NULL; \
+ }
+
+#define RtlInsertAsLeftChild(ParentLinks,ChildLinks) \
+ { \
+ PRTL_SPLAY_LINKS _SplayParent; \
+ PRTL_SPLAY_LINKS _SplayChild; \
+ _SplayParent = (PRTL_SPLAY_LINKS)(ParentLinks); \
+ _SplayChild = (PRTL_SPLAY_LINKS)(ChildLinks); \
+ _SplayParent->LeftChild = _SplayChild; \
+ _SplayChild->Parent = _SplayParent; \
+ }
+
+#define RtlInsertAsRightChild(ParentLinks,ChildLinks) \
+ { \
+ PRTL_SPLAY_LINKS _SplayParent; \
+ PRTL_SPLAY_LINKS _SplayChild; \
+ _SplayParent = (PRTL_SPLAY_LINKS)(ParentLinks); \
+ _SplayChild = (PRTL_SPLAY_LINKS)(ChildLinks); \
+ _SplayParent->RightChild = _SplayChild; \
+ _SplayChild->Parent = _SplayParent; \
+ }
+
+//
+// Error and Exception Functions
+//
NTSYSAPI
PVOID
NTAPI
IN PVOID ReturnValue
);
-/*
- * Heap Functions
- */
-
+//
+// Heap Functions
+//
NTSYSAPI
PVOID
NTAPI
#define RtlGetProcessHeap() (NtCurrentPeb()->ProcessHeap)
-
-/*
- * Security Functions
- */
+//
+// Security Functions
+//
NTSYSAPI
NTSTATUS
NTAPI
IN HANDLE Token
);
-/*
- * Single-Character Functions
- */
+//
+// Single-Character Functions
+//
NTSYSAPI
NTSTATUS
NTAPI
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);
#define RtlUshortByteSwap(_x) _byteswap_ushort((USHORT)(_x))
#define RtlUlongByteSwap(_x) _byteswap_ulong((_x))
#define RtlUlonglongByteSwap(_x) _byteswap_uint64((_x))
+
#else
USHORT
#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
BOOLEAN AllocateDestinationString
);
-/*
- * Unicode->OEM String Functions
- */
+//
+// Unicode->OEM String Functions
+//
NTSYSAPI
NTSTATUS
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
ULONG UnicodeSize
);
-/*
- * Unicode->MultiByte String Functions
- */
+//
+// Unicode->MultiByte String Functions
+//
NTSYSAPI
NTSTATUS
NTAPI
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
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
);
#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
IN PCSZ Source
);
-/*
- * Unicode String Functions
- */
+//
+// Unicode String Functions
+//
NTSYSAPI
NTSTATUS
NTAPI
);
#ifdef NTOS_MODE_USER
+
NTSYSAPI
NTSTATUS
NTAPI
IN PCUNICODE_STRING UniSource,
IN BOOLEAN AllocateDestinationString
);
+
#endif
NTSYSAPI
PULONG Value
);
-/*
- * Ansi String Functions
- */
+//
+// Ansi String Functions
+//
NTSYSAPI
VOID
NTAPI
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
ULONG MbSize
);
-/*
- * Atom Functions
- */
+//
+// Atom Functions
+//
NTSYSAPI
NTSTATUS
NTAPI
OUT PRTL_ATOM Atom
);
-/*
- * Memory Functions
- */
+//
+// Memory Functions
+//
NTSYSAPI
VOID
NTAPI
IN ULONG Fill
);
-/*
- * Process Management Functions
- */
+//
+// Process Management Functions
+//
NTSYSAPI
VOID
NTAPI
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
PUNICODE_STRING Value
);
-/*
- * Critical Section/Resource Functions
- */
+//
+// Critical Section/Resource Functions
+//
NTSYSAPI
NTSTATUS
NTAPI
IN PRTL_RESOURCE Resource
);
-/*
- * Compression Functions
- */
+//
+// Compression Functions
+//
NTSYSAPI
NTSTATUS
NTAPI
OUT PULONG CompressFragmentWorkSpaceSize
);
-/*
- * Debug Info Functions
- */
+//
+// Debug Info Functions
+//
NTSYSAPI
PRTL_DEBUG_BUFFER
NTAPI
IN OUT PRTL_DEBUG_BUFFER DebugBuffer
);
-/*
- * Bitmap Functions
- */
+//
+// Bitmap Functions
+//
NTSYSAPI
BOOLEAN
NTAPI
IN ULONG NumberToSet
);
-/*
- * Timer Functions
- */
+//
+// Timer Functions
+//
NTSYSAPI
NTSTATUS
NTAPI
NTAPI
RtlDeleteTimerQueue(HANDLE TimerQueue);
-/*
- * Debug Functions
- */
+//
+// Debug Functions
+//
ULONG
__cdecl
DbgPrint(
NTAPI
DbgBreakPoint(VOID);
-/*
- * Handle Table Functions
- */
+//
+// Handle Table Functions
+//
NTSYSAPI
PRTL_HANDLE_TABLE_ENTRY
NTAPI
OUT PRTL_HANDLE_TABLE_ENTRY *Handle
);
-/*
- * PE Functions
- */
+//
+// PE Functions
+//
NTSYSAPI
NTSTATUS
NTAPI
ULONG Rva
);
-/*
- * Registry Functions
- */
+//
+// Registry Functions
+//
NTSYSAPI
NTSTATUS
NTAPI
ULONG ValueLength
);
-/*
- * NLS Functions
- */
+//
+// NLS Functions
+//
NTSYSAPI
VOID
NTAPI
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;
NTAPI_INLINE
RtlEnlargedIntegerMultiply(
LONG Multiplicand,
- LONG Multiplier)
+ LONG Multiplier
+)
{
LARGE_INTEGER Product;
RtlEnlargedUnsignedDivide(
IN ULARGE_INTEGER Dividend,
IN ULONG Divisor,
- IN PULONG Remainder OPTIONAL)
+ IN PULONG Remainder OPTIONAL
+)
{
ULONG Quotient;
NTAPI_INLINE
RtlEnlargedUnsignedMultiply(
ULONG Multiplicand,
- ULONG Multiplier)
+ ULONG Multiplier
+)
{
LARGE_INTEGER Product;
NTAPI
RtlUniform(PULONG Seed);
-/*
- * Network Functions
- */
+//
+// Network Functions
+//
NTSYSAPI
NTSTATUS
NTAPI
OUT PULONG IpAddr
);
-/*
- * Time Functions
- */
+//
+// Time Functions
+//
NTSYSAPI
NTSTATUS
NTAPI
PTIME_FIELDS TimeFields
);
-/*
- * Version Functions
- */
+//
+// Version Functions
+//
NTSYSAPI
NTSTATUS
NTAPI
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
-/*
- * 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
- */
-#ifndef _RTLTYPES_H
-#define _RTLTYPES_H
+/*++ NDK Version: 0095
-/* DEPENDENCIES **************************************************************/
-#include "pstypes.h"
+Copyright (c) Alex Ionescu. All rights reserved.
-/* CONSTANTS *****************************************************************/
-#define MAXIMUM_LEADBYTES 12
-
-#define PPF_NORMALIZED 0x01
-#define PPF_PROFILE_USER 0x02
-#define PPF_PROFILE_SERVER 0x04
-#define PPF_PROFILE_KERNEL 0x08
-
-#define PPF_RESERVE_1MB 0x20
-#define PPF_DISABLE_HEAP_CHECKS 0x100
-#define PPF_PROCESS_OR_1 0x200
-#define PPF_PROCESS_OR_2 0x400
-
-#define PEB_BASE (0x7FFDF000)
-
-#define EXCEPTION_CHAIN_END ((PEXCEPTION_REGISTRATION_RECORD)-1)
-#define EXCEPTION_CONTINUE_SEARCH 0
-#define EXCEPTION_EXECUTE_HANDLER 1
-
-#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
-
-#define EH_NONCONTINUABLE 0x01
-#define EH_UNWINDING 0x02
-#define EH_EXIT_UNWIND 0x04
-#define EH_STACK_INVALID 0x08
-#define EH_NESTED_CALL 0x10
-
-#define RTL_RANGE_LIST_ADD_IF_CONFLICT 0x00000001
-#define RTL_RANGE_LIST_ADD_SHARED 0x00000002
-
-#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
-
-#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
+Header Name:
-/* RtlDuplicateString settings */
-#define RTL_DUPLICATE_UNICODE_STRING_NULL_TERMINATE 1
-#define RTL_DUPLICATE_UNICODE_STRING_ALLOCATE_NULL_STRING 2
+ rtltypes.h
-/* 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
+Abstract:
-#define MAX_ATOM_LEN 255 /* TCHARS not including nullterm */
+ Type definitions for the Run-Time Library
-/* List Macros */
-static __inline
-VOID
-InitializeListHead(
- IN PLIST_ENTRY ListHead)
-{
- ListHead->Flink = ListHead->Blink = ListHead;
-}
+Author:
-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;
-}
+ Alex Ionescu (alex.ionescu@reactos.com) 06-Oct-2004
-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;
-}
+#ifndef _RTLTYPES_H
+#define _RTLTYPES_H
-static __inline
-PLIST_ENTRY
-RemoveTailList(
- IN PLIST_ENTRY ListHead)
-{
- PLIST_ENTRY Blink;
- PLIST_ENTRY Entry;
+//
+// Dependencies
+//
+#include "pstypes.h"
- Entry = ListHead->Blink;
- Blink = Entry->Blink;
- ListHead->Blink = Blink;
- Blink->Flink = ListHead;
- return Entry;
-}
+//
+// Maximum Atom Length
+//
+#define RTL_MAXIMUM_ATOM_LENGTH 255
+
+//
+// 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
+
+//
+// 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
+
+//
+// Range and Range List Flags
+//
+#define RTL_RANGE_LIST_ADD_IF_CONFLICT 0x00000001
+#define RTL_RANGE_LIST_ADD_SHARED 0x00000002
+
+#define RTL_RANGE_SHARED 0x01
+#define RTL_RANGE_CONFLICT 0x02
+
+//
+// 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
+
+//
+// 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
+
+//
+// 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
+
+//
+// RTL Lock Type (Critical Section or Resource)
+//
+#define RTL_CRITSECT_TYPE 0
+#define RTL_RESOURCE_TYPE 1
-#define IsFirstEntry(ListHead, Entry) \
- ((ListHead)->Flink == Entry)
+#ifdef NTOS_MODE_USER
-#define IsLastEntry(ListHead, Entry) \
- ((ListHead)->Blink == Entry)
+//
+// String Hash Algorithms
+//
+#define HASH_STRING_ALGORITHM_DEFAULT 0
+#define HASH_STRING_ALGORITHM_X65599 1
+#define HASH_STRING_ALGORITHM_INVALID 0xffffffff
+
+//
+// RtlDuplicateString Flags
+//
+#define RTL_DUPLICATE_UNICODE_STRING_NULL_TERMINATE 1
+#define RTL_DUPLICATE_UNICODE_STRING_ALLOCATE_NULL_STRING 2
+
+//
+// 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 Handle Flags
+//
+#define RTL_HANDLE_VALID 0x1
+
+//
+// RTL Atom Flags
+//
+#define RTL_ATOM_IS_PINNED 0x1
+
+//
+// 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__) \
-{ \
+//
+// Constant String Macro
+//
+#define RTL_CONSTANT_STRING(__SOURCE_STRING__) \
+{ \
sizeof(__SOURCE_STRING__) - sizeof((__SOURCE_STRING__)[0]), \
- sizeof(__SOURCE_STRING__), \
- (__SOURCE_STRING__) \
+ sizeof(__SOURCE_STRING__), \
+ (__SOURCE_STRING__) \
}
-#define RtlEqualLuid(L1, L2) (((L1)->HighPart == (L2)->HighPart) && \
- ((L1)->LowPart == (L2)->LowPart))
#endif
-/* 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 Atom Flags */
-#define RTL_ATOM_IS_PINNED 0x1
-
-/* EXPORTED DATA *************************************************************/
#ifdef NTOS_MODE_USER
-extern BOOLEAN NTSYSAPI NLS_MB_CODE_PAGE_TAG;
-extern BOOLEAN NTSYSAPI NLS_MB_OEM_CODE_PAGE_TAG;
-#endif
-
-/* ENUMERATIONS **************************************************************/
-#ifdef NTOS_MODE_USER
+//
+// Table and Compare result types
+//
typedef enum _TABLE_SEARCH_RESULT
{
TableEmptyTree,
GenericGreaterThan,
GenericEqual
} RTL_GENERIC_COMPARE_RESULTS;
+
+#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 /* "//." */
+ 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);
+
+//
+// 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,
#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
);
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,
PVOID Buffer
);
+//
+// RTL Query Registry callback
+//
typedef NTSTATUS
(NTAPI *PRTL_QUERY_REGISTRY_ROUTINE)(
IN PWSTR ValueName,
IN PVOID EntryContext
);
-typedef NTSTATUS
-(NTAPI * PRTL_HEAP_COMMIT_ROUTINE)(
- IN PVOID Base,
- IN OUT PVOID *CommitAddress,
- IN OUT PSIZE_T CommitSize
-);
-
+//
+// RTL Range List callbacks
+//
#ifdef NTOS_MODE_USER
typedef BOOLEAN
-(NTAPI *PRTL_CONFLICT_RANGE_CALLBACK) (
+(NTAPI *PRTL_CONFLICT_RANGE_CALLBACK)(
PVOID Context,
struct _RTL_RANGE *Range
);
-#endif
-/* TYPES *********************************************************************/
+//
+// Custom Heap Commit Routine for RtlCreateHeap
+//
+typedef NTSTATUS
+(NTAPI * PRTL_HEAP_COMMIT_ROUTINE)(
+ IN PVOID Base,
+ IN OUT PVOID *CommitAddress,
+ IN OUT PSIZE_T CommitSize
+);
-#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;
SIZE_T Reserved[2];
} RTL_HEAP_PARAMETERS, *PRTL_HEAP_PARAMETERS;
+//
+// RTL Bitmap structures
+//
typedef struct _RTL_BITMAP
{
ULONG SizeOfBitMap;
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;
ULONG LastIndexValue;
} GENERATE_NAME_CONTEXT, *PGENERATE_NAME_CONTEXT;
+//
+// RTL Splay and Balanced Links structures
+//
typedef struct _RTL_SPLAY_LINKS
{
struct _RTL_SPLAY_LINKS *Parent;
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;
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;
PVOID TableContext;
} RTL_AVL_TABLE, *PRTL_AVL_TABLE;
+//
+// RtlQueryRegistry Data
+//
typedef struct _RTL_QUERY_REGISTRY_TABLE
{
PRTL_QUERY_REGISTRY_ROUTINE QueryRoutine;
ULONG DefaultLength;
} RTL_QUERY_REGISTRY_TABLE, *PRTL_QUERY_REGISTRY_TABLE;
+//
+// RTL Unicode Table Structures
+//
typedef struct _UNICODE_PREFIX_TABLE_ENTRY
{
CSHORT NodeTypeCode;
PUNICODE_PREFIX_TABLE_ENTRY LastNextEntry;
} UNICODE_PREFIX_TABLE, *PUNICODE_PREFIX_TABLE;
+//
+// Time Structure for RTL Time calls
+//
typedef struct _TIME_FIELDS
{
CSHORT Year;
} 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];
PVOID Reserved[8];
} RTL_DEBUG_BUFFER, *PRTL_DEBUG_BUFFER;
+//
+// RTL Handle Structures
+//
typedef struct _RTL_HANDLE_TABLE_ENTRY
{
ULONG Flags;
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;
} RTL_DRIVE_LETTER_CURDIR, *PRTL_DRIVE_LETTER_CURDIR;
#ifndef NTOS_MODE_USER
+
+//
+// RTL Critical Section Structures
+//
typedef struct _RTL_CRITICAL_SECTION_DEBUG
{
USHORT Type;
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;
PVOID UserData;
PVOID Owner;
UCHAR Attributes;
- UCHAR Flags; /* RTL_RANGE_... flags */
+ UCHAR Flags;
} RTL_RANGE, *PRTL_RANGE;
typedef struct _RANGE_LIST_ITERATOR
#endif
+//
+// RTL Resource
+//
typedef struct _RTL_RESOURCE
{
RTL_CRITICAL_SECTION Lock;
PVOID DebugInfo;
} RTL_RESOURCE, *PRTL_RESOURCE;
+//
+// RTL Message Structures for PE Resources
+//
typedef struct _RTL_MESSAGE_RESOURCE_ENTRY
{
USHORT Length;
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;
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;
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;
LONG DaylightBias;
} TIME_ZONE_INFORMATION, *PTIME_ZONE_INFORMATION, *LPTIME_ZONE_INFORMATION;
-typedef enum _ACL_INFORMATION_CLASS
-{
- 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
+//
+// Header for NLS Files
+//
+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;
+
#endif
-/*
- * 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
- */
-#ifndef _SEFUNCS_H
-#define _SEFUNCS_H
+/*++ NDK Version: 0095
+
+Copyright (c) Alex Ionescu. All rights reserved.
+
+Header Name:
+
+ sefuncs.h
+
+Abstract:
+
+ Function definitions for the security manager.
-/* DEPENDENCIES **************************************************************/
+Author:
-/* FUNCTION TYPES ************************************************************/
+ Alex Ionescu (alex.ionescu@reactos.com) 06-Oct-2004
-/* PROTOTYPES ****************************************************************/
+--*/
+#ifndef _SEFUNCS_H
+#define _SEFUNCS_H
+
+//
+// Security Descriptors
+//
NTSTATUS
NTAPI
SeCaptureSecurityDescriptor(
OUT PSECURITY_DESCRIPTOR *CapturedSecurityDescriptor
);
+NTSTATUS
+NTAPI
+SeReleaseSecurityDescriptor(
+ IN PSECURITY_DESCRIPTOR CapturedSecurityDescriptor,
+ IN KPROCESSOR_MODE CurrentMode,
+ IN BOOLEAN CaptureIfKernelMode
+);
+
+//
+// Access States
+//
NTSTATUS
NTAPI
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(
-/*
- * 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)
#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
{
};
} 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 */
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
-/*
- * 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(
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
NTSTATUS
NTAPI
-CsrIdentifyAlertableThread(VOID);
+CsrIdentifyAlertableThread(
+ VOID
+);
VOID
NTAPI
-CsrFreeCaptureBuffer(struct _CSR_CAPTURE_BUFFER *CaptureBuffer);
+CsrFreeCaptureBuffer(
+ struct _CSR_CAPTURE_BUFFER *CaptureBuffer
+);
NTSTATUS
NTAPI
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
NTSTATUS
NTAPI
-LdrShutdownProcess(VOID);
+LdrShutdownProcess(
+ VOID
+);
NTSTATUS
NTAPI
-LdrShutdownThread(VOID);
+LdrShutdownThread(
+ VOID
+);
NTSTATUS
NTAPI
-LdrUnloadDll(IN PVOID BaseAddress);
+LdrUnloadDll(
+ IN PVOID BaseAddress
+);
NTSTATUS
NTAPI
);
#endif
-/* EOF */
-/*
- * 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 <winioctl.h>
#include <ntnls.h>
-#undef WIN32_NO_STATUS
#include <ntstatus.h>
-/* 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)
-
-/* 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 */
+//
+// 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
+
+//
+// Basic Types that aren't defined in User-Mode Headers
+//
typedef CONST int CINT;
typedef CONST char *PCSZ;
typedef ULONG CLONG;
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;
-/*
- * 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 <evntrace.h>
#include "lpctypes.h"
#include "dbgktypes.h"
#include "kdtypes.h"
-/* FUNCTION TYPES ************************************************************/
-
-/* PROTOTYPES ****************************************************************/
+//
+// FIXME: Group these in logical groups.
+//
NTSTATUS
NTAPI
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
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
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
);
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
);
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
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
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
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
NTAPI
NtFreeVirtualMemory(
IN HANDLE ProcessHandle,
- IN PVOID *BaseAddress,
- IN PULONG RegionSize,
- IN ULONG FreeType
+ IN PVOID *BaseAddress,
+ IN PULONG RegionSize,
+ IN ULONG FreeType
);
NTSYSAPI
NTAPI
ZwFreeVirtualMemory(
IN HANDLE ProcessHandle,
- IN PVOID *BaseAddress,
- IN PULONG RegionSize,
- IN ULONG FreeType
+ IN PVOID *BaseAddress,
+ IN PULONG RegionSize,
+ IN ULONG FreeType
);
NTSYSCALLAPI
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
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
);
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
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
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
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
);
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
);
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
);
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
);
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
);
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
);
IN HANDLE ProcessHandle,
IN PVOID BaseAddress,
OUT PVOID Buffer,
- IN ULONG NumberOfBytesToRead,
+ IN ULONG NumberOfBytesToRead,
OUT PULONG NumberOfBytesRead
);
IN HANDLE ProcessHandle,
IN PVOID BaseAddress,
OUT PVOID Buffer,
- IN ULONG NumberOfBytesToRead,
+ IN ULONG NumberOfBytesToRead,
OUT PULONG NumberOfBytesRead
);
NTSTATUS
NTAPI
NtReleaseSemaphore(
- IN HANDLE SemaphoreHandle,
- IN LONG ReleaseCount,
+ IN HANDLE SemaphoreHandle,
+ IN LONG ReleaseCount,
OUT PLONG PreviousCount
);
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
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
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
#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.
((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
#ifndef __WIN32K_MISC_H
#define __WIN32K_MISC_H
+#ifndef NTOS_MODE_USER
+
/* W32PROCESS flags */
#define W32PF_NOWINDOWGHOSTING (0x0001)
#define W32PF_MANUALGUICHECK (0x0002)
FASTCALL
DestroyThreadWindows(struct _ETHREAD *Thread);
+#endif
+
#endif /* __WIN32K_MISC_H */
{
ULONG AtomNameLen = wcslen(AtomName);
- if (AtomNameLen > MAX_ATOM_LEN)
+ if (AtomNameLen > RTL_MAXIMUM_ATOM_LENGTH)
{
Status = STATUS_INVALID_PARAMETER;
goto end;
#include <ddk/ntifs.h>
#include <ddk/wdmguid.h>
#include <ndk/ntndk.h>
-#include <ndk/sysguid.h>
-#include <ndk/asm.h>
/* FIXME: Temporary until CC Ros is gone */
#include <ccros.h>
/* SEH support with PSEH */
#include <pseh/pseh.h>
+/* PNP GUIDs */
+#include <umpnpmgr/sysguid.h>
+
/* Helper Header */
#include <reactos/helper.h>
-#include <ndk/i386/segment.h>
+#include <ndk/asm.h>
#include <../hal/halx86/include/halirq.h>
#ifdef CONFIG_SMP
#include <windows.h>
#define NTOS_MODE_USER
#include <ndk/ntndk.h>
-#include <ndk/sysguid.h>
+#include <umpnpmgr/sysguid.h>
#include <ddk/wdmguid.h>
#include <ddk/cfgmgr32.h>
* 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
*/
#define DDKAPI __stdcall
#define DDKFASTAPI __fastcall
+#define FASTCALL __fastcall
#define DDKCDECLAPI __cdecl
/* FIXME: REMOVE THIS UNCOMPATIBLE CRUFT!!! */
#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
#define PASCAL _pascal
#define CDECL _cdecl
#define STDCALL __stdcall
-#define FASTCALL __fastcall
#define WINAPI __stdcall
#define WINAPIV __cdecl
#define APIENTRY __stdcall
#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
} RTL_CRITICAL_SECTION,*PRTL_CRITICAL_SECTION;
#endif
+typedef LONG
+(NTAPI *PVECTORED_EXCEPTION_HANDLER)(
+ struct _EXCEPTION_POINTERS *ExceptionInfo
+);
+
typedef struct _EVENTLOGRECORD {
DWORD Length;
DWORD Reserved;