1 /* KERNEL TYPES **************************************************************/
3 #ifndef __INCLUDE_DDK_KETYPES_H
4 #define __INCLUDE_DDK_KETYPES_H
8 typedef LONG KPRIORITY
;
10 typedef VOID (*PKBUGCHECK_CALLBACK_ROUTINE
)(PVOID Buffer
, ULONG Length
);
11 typedef BOOLEAN (*PKSYNCHRONIZE_ROUTINE
)(PVOID SynchronizeContext
);
15 typedef VOID (*PKNORMAL_ROUTINE
)(PVOID NormalContext
,
16 PVOID SystemArgument1
,
17 PVOID SystemArgument2
);
18 typedef VOID (*PKKERNEL_ROUTINE
)(struct _KAPC
* Apc
,
19 PKNORMAL_ROUTINE
* NormalRoutine
,
21 PVOID
* SystemArgument1
,
22 PVOID
* SystemArgument2
);
24 typedef VOID (*PKRUNDOWN_ROUTINE
)(struct _KAPC
* Apc
);
28 * PURPOSE: Object describing the wait a thread is currently performing
31 LIST_ENTRY WaitListEntry
;
32 struct _KTHREAD
* Thread
;
34 struct _KWAIT_BLOCK
* NextWaitBlock
;
37 } KWAIT_BLOCK
, *PKWAIT_BLOCK
;
39 typedef struct _DISPATCHER_HEADER
46 LIST_ENTRY WaitListHead
;
50 typedef struct _KQUEUE
52 DISPATCHER_HEADER Header
;
53 LIST_ENTRY EntryListHead
;
56 LIST_ENTRY ThreadListEntry
;
62 typedef struct _KTIMER
64 DISPATCHER_HEADER Header;
65 ULARGE_INTEGER DueTime;
66 LIST_ENTRY TimerListEntry;
72 typedef struct _KTIMER
75 signed long long expire_time
;
85 typedef struct _KSPIN_LOCK
88 } KSPIN_LOCK
, *PKSPIN_LOCK
;
90 typedef struct _KDEVICE_QUEUE
95 } KDEVICE_QUEUE
, *PKDEVICE_QUEUE
;
103 struct _KTHREAD
* Thread
;
104 LIST_ENTRY ApcListEntry
;
105 PKKERNEL_ROUTINE KernelRoutine
;
106 PKRUNDOWN_ROUTINE RundownRoutine
;
107 PKNORMAL_ROUTINE NormalRoutine
;
109 PVOID SystemArgument1
;
110 PVOID SystemArgument2
;
112 KPROCESSOR_MODE ApcMode
;
119 PKBUGCHECK_CALLBACK_ROUTINE CallbackRoutine
;
125 } KBUGCHECK_CALLBACK_RECORD
, *PKBUGCHECK_CALLBACK_RECORD
;
129 DISPATCHER_HEADER Header
;
130 LIST_ENTRY MutantListEntry
;
131 struct _KTHREAD
* OwnerThread
;
134 } KMUTEX
, *PKMUTEX
, KMUTANT
, *PKMUTANT
;
138 DISPATCHER_HEADER Header
;
140 } KSEMAPHORE
, *PKSEMAPHORE
;
142 typedef struct _KEVENT
144 DISPATCHER_HEADER Header
;
149 typedef VOID (*PDRIVER_ADD_DEVICE
)(VOID
);
154 * PURPOSE: Defines a delayed procedure call routine
156 * Dpc = The associated DPC object
157 * DeferredContext = Driver defined context for the DPC
158 * SystemArgument[1-2] = Undocumented.
161 typedef VOID (*PKDEFERRED_ROUTINE
)(struct _KDPC
* Dpc
, PVOID DeferredContext
,
162 PVOID SystemArgument1
, PVOID SystemArgument2
);
166 * PURPOSE: Defines a delayed procedure call object
172 LIST_ENTRY DpcListEntry
;
173 PKDEFERRED_ROUTINE DeferredRoutine
;
174 PVOID DeferredContext
;
175 PVOID SystemArgument1
;
176 PVOID SystemArgument2
;
182 typedef struct _KDEVICE_QUEUE_ENTRY
186 } KDEVICE_QUEUE_ENTRY
, *PKDEVICE_QUEUE_ENTRY
;
188 typedef struct _WAIT_CONTEXT_BLOCK
190 } WAIT_CONTEXT_BLOCK
, *PWAIT_CONTEXT_BLOCK
;
194 typedef BOOLEAN (*PKSERVICE_ROUTINE
)(struct _KINTERRUPT
* Interrupt
,
195 PVOID ServiceContext
);
197 typedef struct _KINTERRUPT
200 KAFFINITY ProcessorEnableMask
;
203 BOOLEAN FloatingSave
;
204 PKSERVICE_ROUTINE ServiceRoutine
;
205 PVOID ServiceContext
;
208 } KINTERRUPT
, *PKINTERRUPT
;
210 #endif /* __INCLUDE_DDK_KETYPES_H */