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 /* copied from W32API */
225 typedef struct _KFLOATING_SAVE
235 } KFLOATING_SAVE, *PKFLOATING_SAVE;
237 #endif /* __INCLUDE_DDK_KETYPES_H */