5 #ifndef __INCLUDE_NTOS_KRNLTYPES_H
6 #define __INCLUDE_NTOS_KRNLTYPES_H
8 #define DOE_UNLOAD_PENDING 0x1
9 #define DOE_DELETE_PENDING 0x2
10 #define DOE_REMOVE_PENDING 0x4
11 #define DOE_REMOVE_PROCESSED 0x8
12 #define DOE_START_PENDING 0x10
14 extern POBJECT_TYPE EXPORTED ExMutantObjectType
;
15 extern POBJECT_TYPE EXPORTED ExTimerType
;
18 * PURPOSE: Special timer associated with each device
20 typedef struct _IO_TIMER
{
21 USHORT Type
; /* Every IO Object has a Type */
22 USHORT TimerEnabled
; /* Tells us if the Timer is enabled or not */
23 LIST_ENTRY IoTimerList
; /* List of other Timers on the system */
24 PIO_TIMER_ROUTINE TimerRoutine
; /* The associated timer routine */
25 PVOID Context
; /* Context */
26 PDEVICE_OBJECT DeviceObject
; /* Driver that owns this IO Timer */
27 } IO_TIMER
, *PIO_TIMER
;
29 typedef struct _EX_QUEUE_WORKER_INFO
{
30 UCHAR QueueDisabled
:1;
31 UCHAR MakeThreadsAsNecessary
:1;
34 } EX_QUEUE_WORKER_INFO
, *PEX_QUEUE_WORKER_INFO
;
36 typedef struct _EX_WORK_QUEUE
{
38 ULONG DynamicThreadCount
;
39 ULONG WorkItemsProcessed
;
40 ULONG WorkItemsProcessedLastPass
;
41 ULONG QueueDepthLastPass
;
42 EX_QUEUE_WORKER_INFO Info
;
43 } EX_WORK_QUEUE
, *PEX_WORK_QUEUE
;
45 typedef struct _KDPC_DATA
47 LIST_ENTRY DpcListHead
;
51 } KDPC_DATA
, *PKDPC_DATA
;
53 typedef struct _KTRAP_FRAME
99 } KTRAP_FRAME
, *PKTRAP_FRAME
;
101 typedef struct _PP_LOOKASIDE_LIST
103 struct _GENERAL_LOOKASIDE
*P
;
104 struct _GENERAL_LOOKASIDE
*L
;
105 } PP_LOOKASIDE_LIST
, *PPP_LOOKASIDE_LIST
;
107 typedef enum _PP_NPAGED_LOOKASIDE_NUMBER
109 LookasideSmallIrpList
= 0,
110 LookasideLargeIrpList
= 1,
111 LookasideMdlList
= 2,
112 LookasideCreateInfoList
= 3,
113 LookasideNameBufferList
= 4,
114 LookasideTwilightList
= 5,
115 LookasideCompletionList
= 6,
116 LookasideMaximumList
= 7
117 } PP_NPAGED_LOOKASIDE_NUMBER
;
119 typedef enum _KOBJECTS
{
120 EventNotificationObject
= 0,
121 EventSynchronizationObject
= 1,
128 TimerNotificationObject
= 8,
129 TimerSynchronizationObject
= 9,
140 DeviceQueueObject
= 20,
141 EventPairObject
= 21,
142 InterruptObject
= 22,
144 ThreadedDpcObject
= 24,
145 MaximumKernelObject
= 25
148 typedef struct _M128
{
153 typedef struct _KEXCEPTION_FRAME
{
159 ULONG64 InitialStack
;
171 ULONG64 CallbackStack
;
172 ULONG64 OutputBuffer
;
173 ULONG64 OutputLength
;
174 UCHAR ExceptionRecord
[64];
185 } KEXCEPTION_FRAME
, *PKEXCEPTION_FRAME
;
187 typedef struct _KEVENT_PAIR
193 } KEVENT_PAIR
, *PKEVENT_PAIR
;
195 typedef struct _RUNDOWN_DESCRIPTOR
{
196 ULONG_PTR References
;
198 } RUNDOWN_DESCRIPTOR
, *PRUNDOWN_DESCRIPTOR
;
200 #endif /* __INCLUDE_NTOS_KRNLTYPES_H */