1 /* KERNEL TYPES **************************************************************/
3 #ifndef __INCLUDE_DDK_KETYPES_H
4 #define __INCLUDE_DDK_KETYPES_H
6 // include ntos/ketypes.h here?
10 typedef LONG KPRIORITY
;
14 typedef VOID STDCALL_FUNC
15 (*PKBUGCHECK_CALLBACK_ROUTINE
)(PVOID Buffer
, ULONG Length
);
17 typedef BOOLEAN STDCALL_FUNC
18 (*PKSYNCHRONIZE_ROUTINE
)(PVOID SynchronizeContext
);
22 typedef VOID STDCALL_FUNC
23 (*PKNORMAL_ROUTINE
)(PVOID NormalContext
,
24 PVOID SystemArgument1
,
25 PVOID SystemArgument2
);
27 typedef VOID STDCALL_FUNC
28 (*PKKERNEL_ROUTINE
)(struct _KAPC
* Apc
,
29 PKNORMAL_ROUTINE
* NormalRoutine
,
31 PVOID
* SystemArgument1
,
32 PVOID
* SystemArgument2
);
34 typedef VOID STDCALL_FUNC
35 (*PKRUNDOWN_ROUTINE
)(struct _KAPC
* Apc
);
37 struct _DISPATCHER_HEADER
;
39 typedef struct _KWAIT_BLOCK
41 * PURPOSE: Object describing the wait a thread is currently performing
44 LIST_ENTRY WaitListEntry
;
45 struct _KTHREAD
* Thread
;
46 struct _DISPATCHER_HEADER
*Object
;
47 struct _KWAIT_BLOCK
* NextWaitBlock
;
50 } KWAIT_BLOCK
, *PKWAIT_BLOCK
;
52 typedef struct _DISPATCHER_HEADER
59 LIST_ENTRY WaitListHead
;
60 } __attribute__((packed
)) DISPATCHER_HEADER
, *PDISPATCHER_HEADER
;
63 typedef struct _KQUEUE
65 DISPATCHER_HEADER Header
;
66 LIST_ENTRY EntryListHead
;
69 LIST_ENTRY ThreadListHead
;
74 typedef struct _KTIMER
76 DISPATCHER_HEADER Header
;
77 ULARGE_INTEGER DueTime
;
78 LIST_ENTRY TimerListEntry
;
83 typedef ULONG_PTR KSPIN_LOCK
, *PKSPIN_LOCK
;
85 typedef struct _KDEVICE_QUEUE
89 LIST_ENTRY DeviceListHead
;
92 } KDEVICE_QUEUE
, *PKDEVICE_QUEUE
;
100 struct _KTHREAD
* Thread
;
101 LIST_ENTRY ApcListEntry
;
102 PKKERNEL_ROUTINE KernelRoutine
;
103 PKRUNDOWN_ROUTINE RundownRoutine
;
104 PKNORMAL_ROUTINE NormalRoutine
;
106 PVOID SystemArgument1
;
107 PVOID SystemArgument2
;
109 KPROCESSOR_MODE ApcMode
;
111 } __attribute__((packed
)) KAPC
, *PKAPC
;
113 typedef struct _KBUGCHECK_CALLBACK_RECORD
116 PKBUGCHECK_CALLBACK_ROUTINE CallbackRoutine
;
122 } KBUGCHECK_CALLBACK_RECORD
, *PKBUGCHECK_CALLBACK_RECORD
;
124 typedef struct _KMUTEX
126 DISPATCHER_HEADER Header
;
127 LIST_ENTRY MutantListEntry
;
128 struct _KTHREAD
* OwnerThread
;
131 } KMUTEX
, *PKMUTEX
, KMUTANT
, *PKMUTANT
;
133 typedef struct _KSEMAPHORE
135 DISPATCHER_HEADER Header
;
137 } __attribute__((packed
)) KSEMAPHORE
, *PKSEMAPHORE
;
139 typedef struct _KEVENT
141 DISPATCHER_HEADER Header
;
144 typedef struct _KEVENT_PAIR
150 } KEVENT_PAIR
, *PKEVENT_PAIR
;
156 * PURPOSE: Defines a delayed procedure call routine
158 * Dpc = The associated DPC object
159 * DeferredContext = Driver defined context for the DPC
160 * SystemArgument[1-2] = Undocumented.
163 typedef VOID STDCALL_FUNC
164 (*PKDEFERRED_ROUTINE
)(struct _KDPC
* Dpc
,
165 PVOID DeferredContext
,
166 PVOID SystemArgument1
,
167 PVOID SystemArgument2
);
170 * PURPOSE: Defines a delayed procedure call object
177 LIST_ENTRY DpcListEntry
;
178 PKDEFERRED_ROUTINE DeferredRoutine
;
179 PVOID DeferredContext
;
180 PVOID SystemArgument1
;
181 PVOID SystemArgument2
;
183 } __attribute__((packed
)) KDPC
, *PKDPC
;
187 typedef struct _KDEVICE_QUEUE_ENTRY
189 LIST_ENTRY DeviceListEntry
;
192 } KDEVICE_QUEUE_ENTRY
, *PKDEVICE_QUEUE_ENTRY
;
194 typedef struct _WAIT_CONTEXT_BLOCK
197 } WAIT_CONTEXT_BLOCK
, *PWAIT_CONTEXT_BLOCK
;
201 typedef BOOLEAN STDCALL_FUNC
202 (*PKSERVICE_ROUTINE
)(struct _KINTERRUPT
* Interrupt
,
203 PVOID ServiceContext
);
205 typedef struct _KSYSTEM_TIME
210 } KSYSTEM_TIME
, *PKSYSTEM_TIME
;
212 typedef struct _EPROCESS EPROCESS
, *PEPROCESS
;
214 typedef HANDLE HSEMAPHORE
;
216 typedef HANDLE HDRVOBJ
;
218 typedef LONG FLOAT_LONG
, *PFLOAT_LONG
;
222 typedef LONG FIX
; // fixed-point number
224 #endif /* __INCLUDE_DDK_KETYPES_H */