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
;
68 (*PKBUGCHECK_CALLBACK_ROUTINE
)(PVOID Buffer
,
71 typedef BOOLEAN STDCALL
72 (*PKSYNCHRONIZE_ROUTINE
)(PVOID SynchronizeContext
);
77 (*PKNORMAL_ROUTINE
)(PVOID NormalContext
,
78 PVOID SystemArgument1
,
79 PVOID SystemArgument2
);
82 (*PKKERNEL_ROUTINE
)(struct _KAPC
* Apc
,
83 PKNORMAL_ROUTINE
* NormalRoutine
,
85 PVOID
* SystemArgument1
,
86 PVOID
* SystemArgument2
);
89 (*PKRUNDOWN_ROUTINE
)(struct _KAPC
* Apc
);
91 struct _DISPATCHER_HEADER
;
93 typedef struct _KWAIT_BLOCK
95 * PURPOSE: Object describing the wait a thread is currently performing
98 LIST_ENTRY WaitListEntry
;
99 struct _KTHREAD
* Thread
;
100 struct _DISPATCHER_HEADER
*Object
;
101 struct _KWAIT_BLOCK
* NextWaitBlock
;
104 } KWAIT_BLOCK
, *PKWAIT_BLOCK
;
106 typedef struct _DISPATCHER_HEADER
113 LIST_ENTRY WaitListHead
;
114 } __attribute__((packed
)) DISPATCHER_HEADER
;
117 typedef struct _KQUEUE
119 DISPATCHER_HEADER Header
;
120 LIST_ENTRY EntryListHead
;
123 LIST_ENTRY ThreadListEntry
;
128 typedef struct _KTIMER
130 DISPATCHER_HEADER Header
;
131 ULARGE_INTEGER DueTime
;
132 LIST_ENTRY TimerListEntry
;
139 typedef struct _KSPIN_LOCK
142 } KSPIN_LOCK
, *PKSPIN_LOCK
;
144 typedef struct _KDEVICE_QUEUE
149 } KDEVICE_QUEUE
, *PKDEVICE_QUEUE
;
157 struct _KTHREAD
* Thread
;
158 LIST_ENTRY ApcListEntry
;
159 PKKERNEL_ROUTINE KernelRoutine
;
160 PKRUNDOWN_ROUTINE RundownRoutine
;
161 PKNORMAL_ROUTINE NormalRoutine
;
163 PVOID SystemArgument1
;
164 PVOID SystemArgument2
;
166 KPROCESSOR_MODE ApcMode
;
168 } __attribute__((packed
)) KAPC
, *PKAPC
;
170 typedef struct _KBUGCHECK_CALLBACK_RECORD
173 PKBUGCHECK_CALLBACK_ROUTINE CallbackRoutine
;
179 } KBUGCHECK_CALLBACK_RECORD
, *PKBUGCHECK_CALLBACK_RECORD
;
181 typedef struct _KMUTEX
183 DISPATCHER_HEADER Header
;
184 LIST_ENTRY MutantListEntry
;
185 struct _KTHREAD
* OwnerThread
;
188 } KMUTEX
, *PKMUTEX
, KMUTANT
, *PKMUTANT
;
190 typedef struct _KSEMAPHORE
192 DISPATCHER_HEADER Header
;
194 } __attribute__((packed
)) KSEMAPHORE
, *PKSEMAPHORE
;
196 typedef struct _KEVENT
198 DISPATCHER_HEADER Header
;
201 typedef struct _KEVENT_PAIR
207 } KEVENT_PAIR
, *PKEVENT_PAIR
;
213 * PURPOSE: Defines a delayed procedure call routine
215 * Dpc = The associated DPC object
216 * DeferredContext = Driver defined context for the DPC
217 * SystemArgument[1-2] = Undocumented.
221 (*PKDEFERRED_ROUTINE
)(struct _KDPC
* Dpc
,
222 PVOID DeferredContext
,
223 PVOID SystemArgument1
,
224 PVOID SystemArgument2
);
227 * PURPOSE: Defines a delayed procedure call object
234 LIST_ENTRY DpcListEntry
;
235 PKDEFERRED_ROUTINE DeferredRoutine
;
236 PVOID DeferredContext
;
237 PVOID SystemArgument1
;
238 PVOID SystemArgument2
;
240 } __attribute__((packed
)) KDPC
, *PKDPC
;
244 typedef struct _KDEVICE_QUEUE_ENTRY
249 } KDEVICE_QUEUE_ENTRY
, *PKDEVICE_QUEUE_ENTRY
;
251 typedef struct _WAIT_CONTEXT_BLOCK
253 } WAIT_CONTEXT_BLOCK
, *PWAIT_CONTEXT_BLOCK
;
257 typedef BOOLEAN STDCALL
258 (*PKSERVICE_ROUTINE
)(struct _KINTERRUPT
* Interrupt
,
259 PVOID ServiceContext
);
261 typedef struct _KINTERRUPT
264 KAFFINITY ProcessorEnableMask
;
267 BOOLEAN FloatingSave
;
268 PKSERVICE_ROUTINE ServiceRoutine
;
269 PVOID ServiceContext
;
272 } KINTERRUPT
, *PKINTERRUPT
;
274 typedef struct _KSYSTEM_TIME
279 } KSYSTEM_TIME
, *PKSYSTEM_TIME
;
281 typedef struct _EPROCESS EPROCESS
, *PEPROCESS
;
283 #endif /* __INCLUDE_DDK_KETYPES_H */