1 /* KERNEL TYPES **************************************************************/
3 #ifndef __INCLUDE_DDK_KETYPES_H
4 #define __INCLUDE_DDK_KETYPES_H
7 extern CHAR EXPORTED KeNumberProcessors
;
8 extern LOADER_PARAMETER_BLOCK EXPORTED KeLoaderBlock
;
9 extern ULONG EXPORTED KeDcacheFlushCount
;
10 extern ULONG EXPORTED KeIcacheFlushCount
;
12 extern CHAR IMPORTED KeNumberProcessors
;
13 extern LOADER_PARAMETER_BLOCK IMPORTED KeLoaderBlock
;
14 extern ULONG EXPORTED KeDcacheFlushCount
;
15 extern ULONG EXPORTED KeIcacheFlushCount
;
22 typedef LONG KPRIORITY
;
24 typedef VOID STDCALL_FUNC
25 (*PKBUGCHECK_CALLBACK_ROUTINE
)(PVOID Buffer
, ULONG Length
);
27 typedef BOOLEAN STDCALL_FUNC
28 (*PKSYNCHRONIZE_ROUTINE
)(PVOID SynchronizeContext
);
32 typedef VOID STDCALL_FUNC
33 (*PKNORMAL_ROUTINE
)(PVOID NormalContext
,
34 PVOID SystemArgument1
,
35 PVOID SystemArgument2
);
37 typedef VOID STDCALL_FUNC
38 (*PKKERNEL_ROUTINE
)(struct _KAPC
* Apc
,
39 PKNORMAL_ROUTINE
* NormalRoutine
,
41 PVOID
* SystemArgument1
,
42 PVOID
* SystemArgument2
);
44 typedef VOID STDCALL_FUNC
45 (*PKRUNDOWN_ROUTINE
)(struct _KAPC
* Apc
);
47 struct _DISPATCHER_HEADER
;
49 typedef struct _KWAIT_BLOCK
51 * PURPOSE: Object describing the wait a thread is currently performing
54 LIST_ENTRY WaitListEntry
;
55 struct _KTHREAD
* Thread
;
56 struct _DISPATCHER_HEADER
*Object
;
57 struct _KWAIT_BLOCK
* NextWaitBlock
;
60 } KWAIT_BLOCK
, *PKWAIT_BLOCK
;
62 typedef struct _DISPATCHER_HEADER
69 LIST_ENTRY WaitListHead
;
70 } __attribute__((packed
)) DISPATCHER_HEADER
, *PDISPATCHER_HEADER
;
73 typedef struct _KQUEUE
75 DISPATCHER_HEADER Header
;
76 LIST_ENTRY EntryListHead
;
79 LIST_ENTRY ThreadListHead
;
84 typedef struct _KTIMER
86 DISPATCHER_HEADER Header
;
87 ULARGE_INTEGER DueTime
;
88 LIST_ENTRY TimerListEntry
;
93 typedef ULONG_PTR KSPIN_LOCK
, *PKSPIN_LOCK
;
95 typedef struct _KDEVICE_QUEUE
99 LIST_ENTRY DeviceListHead
;
102 } KDEVICE_QUEUE
, *PKDEVICE_QUEUE
;
110 struct _KTHREAD
* Thread
;
111 LIST_ENTRY ApcListEntry
;
112 PKKERNEL_ROUTINE KernelRoutine
;
113 PKRUNDOWN_ROUTINE RundownRoutine
;
114 PKNORMAL_ROUTINE NormalRoutine
;
116 PVOID SystemArgument1
;
117 PVOID SystemArgument2
;
119 KPROCESSOR_MODE ApcMode
;
121 } __attribute__((packed
)) KAPC
, *PKAPC
;
123 typedef struct _KBUGCHECK_CALLBACK_RECORD
126 PKBUGCHECK_CALLBACK_ROUTINE CallbackRoutine
;
132 } KBUGCHECK_CALLBACK_RECORD
, *PKBUGCHECK_CALLBACK_RECORD
;
134 typedef struct _KMUTEX
136 DISPATCHER_HEADER Header
;
137 LIST_ENTRY MutantListEntry
;
138 struct _KTHREAD
* OwnerThread
;
141 } KMUTEX
, *PKMUTEX
, KMUTANT
, *PKMUTANT
;
143 typedef struct _KSEMAPHORE
145 DISPATCHER_HEADER Header
;
147 } __attribute__((packed
)) KSEMAPHORE
, *PKSEMAPHORE
;
149 typedef struct _KEVENT
151 DISPATCHER_HEADER Header
;
154 typedef struct _KEVENT_PAIR
160 } KEVENT_PAIR
, *PKEVENT_PAIR
;
166 * PURPOSE: Defines a delayed procedure call routine
168 * Dpc = The associated DPC object
169 * DeferredContext = Driver defined context for the DPC
170 * SystemArgument[1-2] = Undocumented.
173 typedef VOID STDCALL_FUNC
174 (*PKDEFERRED_ROUTINE
)(struct _KDPC
* Dpc
,
175 PVOID DeferredContext
,
176 PVOID SystemArgument1
,
177 PVOID SystemArgument2
);
180 * PURPOSE: Defines a delayed procedure call object
187 LIST_ENTRY DpcListEntry
;
188 PKDEFERRED_ROUTINE DeferredRoutine
;
189 PVOID DeferredContext
;
190 PVOID SystemArgument1
;
191 PVOID SystemArgument2
;
193 } __attribute__((packed
)) KDPC
, *PKDPC
;
197 typedef struct _KDEVICE_QUEUE_ENTRY
199 LIST_ENTRY DeviceListEntry
;
202 } KDEVICE_QUEUE_ENTRY
, *PKDEVICE_QUEUE_ENTRY
;
204 typedef struct _WAIT_CONTEXT_BLOCK
207 } WAIT_CONTEXT_BLOCK
, *PWAIT_CONTEXT_BLOCK
;
211 typedef BOOLEAN STDCALL_FUNC
212 (*PKSERVICE_ROUTINE
)(struct _KINTERRUPT
* Interrupt
,
213 PVOID ServiceContext
);
215 typedef struct _KSYSTEM_TIME
220 } KSYSTEM_TIME
, *PKSYSTEM_TIME
;
222 typedef struct _EPROCESS EPROCESS
, *PEPROCESS
;
224 #endif /* __INCLUDE_DDK_KETYPES_H */