1 /* KERNEL TYPES **************************************************************/
3 #ifndef __INCLUDE_DDK_KETYPES_H
4 #define __INCLUDE_DDK_KETYPES_H
6 #define MB_FLAGS_MEM_INFO (0x1)
7 #define MB_FLAGS_BOOT_DEVICE (0x2)
8 #define MB_FLAGS_COMMAND_LINE (0x4)
9 #define MB_FLAGS_MODULE_INFO (0x8)
10 #define MB_FLAGS_AOUT_SYMS (0x10)
11 #define MB_FLAGS_ELF_SYMS (0x20)
12 #define MB_FLAGS_MMAP_INFO (0x40)
13 #define MB_FLAGS_DRIVES_INFO (0x80)
14 #define MB_FLAGS_CONFIG_TABLE (0x100)
15 #define MB_FLAGS_BOOT_LOADER_NAME (0x200)
16 #define MB_FLAGS_APM_TABLE (0x400)
17 #define MB_FLAGS_GRAPHICS_TABLE (0x800)
19 typedef struct _LOADER_MODULE
25 } LOADER_MODULE
, *PLOADER_MODULE
;
27 typedef struct _ADDRESS_RANGE
34 } ADDRESS_RANGE
, *PADDRESS_RANGE
;
36 typedef struct _LOADER_PARAMETER_BLOCK
52 } LOADER_PARAMETER_BLOCK
, *PLOADER_PARAMETER_BLOCK
;
55 extern CHAR EXPORTED KeNumberProcessors
;
56 extern LOADER_PARAMETER_BLOCK EXPORTED KeLoaderBlock
;
58 extern CHAR IMPORTED KeNumberProcessors
;
59 extern LOADER_PARAMETER_BLOCK IMPORTED KeLoaderBlock
;
65 typedef LONG KPRIORITY
;
67 typedef VOID (*PKBUGCHECK_CALLBACK_ROUTINE
)(PVOID Buffer
, ULONG Length
);
68 typedef BOOLEAN (*PKSYNCHRONIZE_ROUTINE
)(PVOID SynchronizeContext
);
72 typedef VOID (*PKNORMAL_ROUTINE
)(PVOID NormalContext
,
73 PVOID SystemArgument1
,
74 PVOID SystemArgument2
);
75 typedef VOID (*PKKERNEL_ROUTINE
)(struct _KAPC
* Apc
,
76 PKNORMAL_ROUTINE
* NormalRoutine
,
78 PVOID
* SystemArgument1
,
79 PVOID
* SystemArgument2
);
81 typedef VOID (*PKRUNDOWN_ROUTINE
)(struct _KAPC
* Apc
);
83 struct _DISPATCHER_HEADER
;
85 typedef struct _KWAIT_BLOCK
87 * PURPOSE: Object describing the wait a thread is currently performing
90 LIST_ENTRY WaitListEntry
;
91 struct _KTHREAD
* Thread
;
92 struct _DISPATCHER_HEADER
*Object
;
93 struct _KWAIT_BLOCK
* NextWaitBlock
;
96 } KWAIT_BLOCK
, *PKWAIT_BLOCK
;
98 typedef struct _DISPATCHER_HEADER
105 LIST_ENTRY WaitListHead
;
106 } __attribute__((packed
)) DISPATCHER_HEADER
;
109 typedef struct _KQUEUE
111 DISPATCHER_HEADER Header
;
112 LIST_ENTRY EntryListHead
;
115 LIST_ENTRY ThreadListEntry
;
120 typedef struct _KTIMER
122 DISPATCHER_HEADER Header
;
123 ULARGE_INTEGER DueTime
;
124 LIST_ENTRY TimerListEntry
;
131 typedef struct _KSPIN_LOCK
134 } KSPIN_LOCK
, *PKSPIN_LOCK
;
136 typedef struct _KDEVICE_QUEUE
141 } KDEVICE_QUEUE
, *PKDEVICE_QUEUE
;
149 struct _KTHREAD
* Thread
;
150 LIST_ENTRY ApcListEntry
;
151 PKKERNEL_ROUTINE KernelRoutine
;
152 PKRUNDOWN_ROUTINE RundownRoutine
;
153 PKNORMAL_ROUTINE NormalRoutine
;
155 PVOID SystemArgument1
;
156 PVOID SystemArgument2
;
158 KPROCESSOR_MODE ApcMode
;
160 } __attribute__((packed
)) KAPC
, *PKAPC
;
162 typedef struct _KBUGCHECK_CALLBACK_RECORD
165 PKBUGCHECK_CALLBACK_ROUTINE CallbackRoutine
;
171 } KBUGCHECK_CALLBACK_RECORD
, *PKBUGCHECK_CALLBACK_RECORD
;
173 typedef struct _KMUTEX
175 DISPATCHER_HEADER Header
;
176 LIST_ENTRY MutantListEntry
;
177 struct _KTHREAD
* OwnerThread
;
180 } KMUTEX
, *PKMUTEX
, KMUTANT
, *PKMUTANT
;
182 typedef struct _KSEMAPHORE
184 DISPATCHER_HEADER Header
;
186 } __attribute__((packed
)) KSEMAPHORE
, *PKSEMAPHORE
;
188 typedef struct _KEVENT
190 DISPATCHER_HEADER Header
;
193 typedef struct _KEVENT_PAIR
199 } KEVENT_PAIR
, *PKEVENT_PAIR
;
205 * PURPOSE: Defines a delayed procedure call routine
207 * Dpc = The associated DPC object
208 * DeferredContext = Driver defined context for the DPC
209 * SystemArgument[1-2] = Undocumented.
212 typedef VOID (*PKDEFERRED_ROUTINE
)(struct _KDPC
* Dpc
, PVOID DeferredContext
,
213 PVOID SystemArgument1
, PVOID SystemArgument2
);
216 * PURPOSE: Defines a delayed procedure call object
223 LIST_ENTRY DpcListEntry
;
224 PKDEFERRED_ROUTINE DeferredRoutine
;
225 PVOID DeferredContext
;
226 PVOID SystemArgument1
;
227 PVOID SystemArgument2
;
229 } __attribute__((packed
)) KDPC
, *PKDPC
;
233 typedef struct _KDEVICE_QUEUE_ENTRY
238 } KDEVICE_QUEUE_ENTRY
, *PKDEVICE_QUEUE_ENTRY
;
240 typedef struct _WAIT_CONTEXT_BLOCK
242 } WAIT_CONTEXT_BLOCK
, *PWAIT_CONTEXT_BLOCK
;
246 typedef BOOLEAN (*PKSERVICE_ROUTINE
)(struct _KINTERRUPT
* Interrupt
,
247 PVOID ServiceContext
);
249 typedef struct _KINTERRUPT
252 KAFFINITY ProcessorEnableMask
;
255 BOOLEAN FloatingSave
;
256 PKSERVICE_ROUTINE ServiceRoutine
;
257 PVOID ServiceContext
;
260 } KINTERRUPT
, *PKINTERRUPT
;
262 typedef struct _KSYSTEM_TIME
267 } KSYSTEM_TIME
, *PKSYSTEM_TIME
;
269 typedef struct _EPROCESS EPROCESS
, *PEPROCESS
;
271 #endif /* __INCLUDE_DDK_KETYPES_H */