1 /* KERNEL TYPES **************************************************************/
3 #ifndef __INCLUDE_DDK_KETYPES_H
4 #define __INCLUDE_DDK_KETYPES_H
7 typedef struct _LOADER_PARAMETER_BLOCK
10 * Magic value (useless really)
21 * Number of files (including the kernel) loaded
23 unsigned int nr_files
;
26 * Range of physical memory being used by the system
28 unsigned int start_mem
;
32 * List of module lengths (terminated by a 0)
34 unsigned int module_length
[64];
37 * Kernel parameter string
39 char kernel_parameters
[256];
41 } LOADER_PARAMETER_BLOCK
, *PLOADER_PARAMETER_BLOCK
;
44 extern CHAR EXPORTED KeNumberProcessors
;
45 extern LOADER_PARAMETER_BLOCK EXPORTED KeLoaderBlock
;
47 extern CHAR IMPORTED KeNumberProcessors
;
48 extern LOADER_PARAMETER_BLOCK IMPORTED KeLoaderBlock
;
54 typedef LONG KPRIORITY
;
56 typedef VOID (*PKBUGCHECK_CALLBACK_ROUTINE
)(PVOID Buffer
, ULONG Length
);
57 typedef BOOLEAN (*PKSYNCHRONIZE_ROUTINE
)(PVOID SynchronizeContext
);
61 typedef VOID (*PKNORMAL_ROUTINE
)(PVOID NormalContext
,
62 PVOID SystemArgument1
,
63 PVOID SystemArgument2
);
64 typedef VOID (*PKKERNEL_ROUTINE
)(struct _KAPC
* Apc
,
65 PKNORMAL_ROUTINE
* NormalRoutine
,
67 PVOID
* SystemArgument1
,
68 PVOID
* SystemArgument2
);
70 typedef VOID (*PKRUNDOWN_ROUTINE
)(struct _KAPC
* Apc
);
72 struct _DISPATCHER_HEADER
;
74 typedef struct _KWAIT_BLOCK
76 * PURPOSE: Object describing the wait a thread is currently performing
79 LIST_ENTRY WaitListEntry
;
80 struct _KTHREAD
* Thread
;
81 struct _DISPATCHER_HEADER
*Object
;
82 struct _KWAIT_BLOCK
* NextWaitBlock
;
85 } KWAIT_BLOCK
, *PKWAIT_BLOCK
;
87 typedef struct _DISPATCHER_HEADER
94 LIST_ENTRY WaitListHead
;
98 typedef struct _KQUEUE
100 DISPATCHER_HEADER Header
;
101 LIST_ENTRY EntryListHead
;
104 LIST_ENTRY ThreadListEntry
;
109 typedef struct _KTIMER
111 DISPATCHER_HEADER Header
;
112 ULARGE_INTEGER DueTime
;
113 LIST_ENTRY TimerListEntry
;
119 typedef struct _KTIMER
122 signed long long expire_time;
133 typedef struct _KSPIN_LOCK
136 } KSPIN_LOCK
, *PKSPIN_LOCK
;
138 typedef struct _KDEVICE_QUEUE
143 } KDEVICE_QUEUE
, *PKDEVICE_QUEUE
;
151 struct _KTHREAD
* Thread
;
152 LIST_ENTRY ApcListEntry
;
153 PKKERNEL_ROUTINE KernelRoutine
;
154 PKRUNDOWN_ROUTINE RundownRoutine
;
155 PKNORMAL_ROUTINE NormalRoutine
;
157 PVOID SystemArgument1
;
158 PVOID SystemArgument2
;
160 KPROCESSOR_MODE ApcMode
;
167 PKBUGCHECK_CALLBACK_ROUTINE CallbackRoutine
;
173 } KBUGCHECK_CALLBACK_RECORD
, *PKBUGCHECK_CALLBACK_RECORD
;
175 typedef struct _KMUTEX
177 DISPATCHER_HEADER Header
;
178 LIST_ENTRY MutantListEntry
;
179 struct _KTHREAD
* OwnerThread
;
182 } KMUTEX
, *PKMUTEX
, KMUTANT
, *PKMUTANT
;
186 DISPATCHER_HEADER Header
;
188 } KSEMAPHORE
, *PKSEMAPHORE
;
190 typedef struct _KEVENT
192 DISPATCHER_HEADER Header
;
197 typedef VOID (*PDRIVER_ADD_DEVICE
)(VOID
);
202 * PURPOSE: Defines a delayed procedure call routine
204 * Dpc = The associated DPC object
205 * DeferredContext = Driver defined context for the DPC
206 * SystemArgument[1-2] = Undocumented.
209 typedef VOID (*PKDEFERRED_ROUTINE
)(struct _KDPC
* Dpc
, PVOID DeferredContext
,
210 PVOID SystemArgument1
, PVOID SystemArgument2
);
214 * PURPOSE: Defines a delayed procedure call object
220 LIST_ENTRY DpcListEntry
;
221 PKDEFERRED_ROUTINE DeferredRoutine
;
222 PVOID DeferredContext
;
223 PVOID SystemArgument1
;
224 PVOID SystemArgument2
;
230 typedef struct _KDEVICE_QUEUE_ENTRY
234 } KDEVICE_QUEUE_ENTRY
, *PKDEVICE_QUEUE_ENTRY
;
236 typedef struct _WAIT_CONTEXT_BLOCK
238 } WAIT_CONTEXT_BLOCK
, *PWAIT_CONTEXT_BLOCK
;
242 typedef BOOLEAN (*PKSERVICE_ROUTINE
)(struct _KINTERRUPT
* Interrupt
,
243 PVOID ServiceContext
);
245 typedef struct _KINTERRUPT
248 KAFFINITY ProcessorEnableMask
;
251 BOOLEAN FloatingSave
;
252 PKSERVICE_ROUTINE ServiceRoutine
;
253 PVOID ServiceContext
;
256 } KINTERRUPT
, *PKINTERRUPT
;
258 #endif /* __INCLUDE_DDK_KETYPES_H */