1 /* KERNEL TYPES **************************************************************/
3 #ifndef __INCLUDE_DDK_KETYPES_H
4 #define __INCLUDE_DDK_KETYPES_H
7 extern CHAR EXPORTED KeNumberProcessors
;
9 extern CHAR IMPORTED KeNumberProcessors
;
15 typedef LONG KPRIORITY
;
17 typedef VOID (*PKBUGCHECK_CALLBACK_ROUTINE
)(PVOID Buffer
, ULONG Length
);
18 typedef BOOLEAN (*PKSYNCHRONIZE_ROUTINE
)(PVOID SynchronizeContext
);
22 typedef VOID (*PKNORMAL_ROUTINE
)(PVOID NormalContext
,
23 PVOID SystemArgument1
,
24 PVOID SystemArgument2
);
25 typedef VOID (*PKKERNEL_ROUTINE
)(struct _KAPC
* Apc
,
26 PKNORMAL_ROUTINE
* NormalRoutine
,
28 PVOID
* SystemArgument1
,
29 PVOID
* SystemArgument2
);
31 typedef VOID (*PKRUNDOWN_ROUTINE
)(struct _KAPC
* Apc
);
33 struct _DISPATCHER_HEADER
;
35 typedef struct _KWAIT_BLOCK
37 * PURPOSE: Object describing the wait a thread is currently performing
40 LIST_ENTRY WaitListEntry
;
41 struct _KTHREAD
* Thread
;
42 struct _DISPATCHER_HEADER
*Object
;
43 struct _KWAIT_BLOCK
* NextWaitBlock
;
46 } KWAIT_BLOCK
, *PKWAIT_BLOCK
;
48 typedef struct _DISPATCHER_HEADER
55 LIST_ENTRY WaitListHead
;
59 typedef struct _KQUEUE
61 DISPATCHER_HEADER Header
;
62 LIST_ENTRY EntryListHead
;
65 LIST_ENTRY ThreadListEntry
;
70 typedef struct _KTIMER
72 DISPATCHER_HEADER Header
;
73 ULARGE_INTEGER DueTime
;
74 LIST_ENTRY TimerListEntry
;
80 typedef struct _KTIMER
83 signed long long expire_time;
94 typedef struct _KSPIN_LOCK
97 } KSPIN_LOCK
, *PKSPIN_LOCK
;
99 typedef struct _KDEVICE_QUEUE
104 } KDEVICE_QUEUE
, *PKDEVICE_QUEUE
;
112 struct _KTHREAD
* Thread
;
113 LIST_ENTRY ApcListEntry
;
114 PKKERNEL_ROUTINE KernelRoutine
;
115 PKRUNDOWN_ROUTINE RundownRoutine
;
116 PKNORMAL_ROUTINE NormalRoutine
;
118 PVOID SystemArgument1
;
119 PVOID SystemArgument2
;
121 KPROCESSOR_MODE ApcMode
;
128 PKBUGCHECK_CALLBACK_ROUTINE CallbackRoutine
;
134 } KBUGCHECK_CALLBACK_RECORD
, *PKBUGCHECK_CALLBACK_RECORD
;
136 typedef struct _KMUTEX
138 DISPATCHER_HEADER Header
;
139 LIST_ENTRY MutantListEntry
;
140 struct _KTHREAD
* OwnerThread
;
143 } KMUTEX
, *PKMUTEX
, KMUTANT
, *PKMUTANT
;
147 DISPATCHER_HEADER Header
;
149 } KSEMAPHORE
, *PKSEMAPHORE
;
151 typedef struct _KEVENT
153 DISPATCHER_HEADER Header
;
158 typedef VOID (*PDRIVER_ADD_DEVICE
)(VOID
);
163 * PURPOSE: Defines a delayed procedure call routine
165 * Dpc = The associated DPC object
166 * DeferredContext = Driver defined context for the DPC
167 * SystemArgument[1-2] = Undocumented.
170 typedef VOID (*PKDEFERRED_ROUTINE
)(struct _KDPC
* Dpc
, PVOID DeferredContext
,
171 PVOID SystemArgument1
, PVOID SystemArgument2
);
175 * PURPOSE: Defines a delayed procedure call object
181 LIST_ENTRY DpcListEntry
;
182 PKDEFERRED_ROUTINE DeferredRoutine
;
183 PVOID DeferredContext
;
184 PVOID SystemArgument1
;
185 PVOID SystemArgument2
;
191 typedef struct _KDEVICE_QUEUE_ENTRY
195 } KDEVICE_QUEUE_ENTRY
, *PKDEVICE_QUEUE_ENTRY
;
197 typedef struct _WAIT_CONTEXT_BLOCK
199 } WAIT_CONTEXT_BLOCK
, *PWAIT_CONTEXT_BLOCK
;
203 typedef BOOLEAN (*PKSERVICE_ROUTINE
)(struct _KINTERRUPT
* Interrupt
,
204 PVOID ServiceContext
);
206 typedef struct _KINTERRUPT
209 KAFFINITY ProcessorEnableMask
;
212 BOOLEAN FloatingSave
;
213 PKSERVICE_ROUTINE ServiceRoutine
;
214 PVOID ServiceContext
;
217 } KINTERRUPT
, *PKINTERRUPT
;
219 #endif /* __INCLUDE_DDK_KETYPES_H */