3 #ifndef __INCLUDE_DDK_EXTYPES_H
4 #define __INCLUDE_DDK_EXTYPES_H
7 extern POBJECT_TYPE EXPORTED ExDesktopObjectType;
8 extern POBJECT_TYPE EXPORTED ExEventObjectType;
9 extern POBJECT_TYPE EXPORTED ExWindowStationObjectType;
10 extern POBJECT_TYPE EXPORTED ExIoCompletionType;
12 extern POBJECT_TYPE IMPORTED ExDesktopObjectType;
13 extern POBJECT_TYPE IMPORTED ExEventObjectType;
14 extern POBJECT_TYPE IMPORTED ExWindowStationObjectType;
15 extern POBJECT_TYPE IMPORTED ExIoCompletionType;
18 typedef ULONG INTERLOCKED_RESULT;
19 typedef ULONG WORK_QUEUE_TYPE;
21 typedef ULONG_PTR ERESOURCE_THREAD, *PERESOURCE_THREAD;
23 typedef struct _OWNER_ENTRY
25 ERESOURCE_THREAD OwnerThread;
31 } OWNER_ENTRY, *POWNER_ENTRY;
33 typedef struct _ERESOURCE
35 LIST_ENTRY SystemResourcesList;
36 POWNER_ENTRY OwnerTable;
39 PKSEMAPHORE SharedWaiters;
40 PKEVENT ExclusiveWaiters;
41 OWNER_ENTRY OwnerThreads[2];
42 ULONG ContentionCount;
43 USHORT NumberOfSharedWaiters;
44 USHORT NumberOfExclusiveWaiters;
48 ULONG CreatorBackTraceIndex;
51 } ERESOURCE, *PERESOURCE;
57 struct _KTHREAD* Owner;
61 } FAST_MUTEX, *PFAST_MUTEX;
63 typedef struct _ZONE_HEADER
65 SINGLE_LIST_ENTRY FreeList;
66 SINGLE_LIST_ENTRY SegmentList;
68 ULONG TotalSegmentSize;
69 } ZONE_HEADER, *PZONE_HEADER;
71 typedef struct _ZONE_SEGMENT
73 SINGLE_LIST_ENTRY Entry;
75 } ZONE_SEGMENT, *PZONE_SEGMENT;
77 typedef struct _ZONE_ENTRY
79 SINGLE_LIST_ENTRY Entry;
80 } ZONE_ENTRY, *PZONE_ENTRY;
83 typedef VOID STDCALL_FUNC
84 (*PWORKER_THREAD_ROUTINE)(PVOID Parameter);
86 typedef struct _WORK_QUEUE_ITEM
89 PWORKER_THREAD_ROUTINE Routine;
91 } WORK_QUEUE_ITEM, *PWORK_QUEUE_ITEM;
93 typedef PVOID STDCALL_FUNC
94 (*PALLOCATE_FUNCTION)(POOL_TYPE PoolType,
98 typedef VOID STDCALL_FUNC
99 (*PFREE_FUNCTION)(PVOID Buffer);
101 typedef union _SLIST_HEADER
106 SINGLE_LIST_ENTRY Next;
110 } SLIST_HEADER, *PSLIST_HEADER;
112 typedef struct _NPAGED_LOOKASIDE_LIST
114 SLIST_HEADER ListHead;
117 ULONG TotalAllocates;
118 ULONG AllocateMisses;
124 PALLOCATE_FUNCTION Allocate;
126 LIST_ENTRY ListEntry;
127 ULONG LastTotalAllocates;
128 ULONG LastAllocateMisses;
131 } NPAGED_LOOKASIDE_LIST, *PNPAGED_LOOKASIDE_LIST;
133 typedef struct _PAGED_LOOKASIDE_LIST
135 SLIST_HEADER ListHead;
138 ULONG TotalAllocates;
139 ULONG AllocateMisses;
145 PALLOCATE_FUNCTION Allocate;
147 LIST_ENTRY ListEntry;
148 ULONG LastTotalAllocates;
149 ULONG LastAllocateMisses;
151 } PAGED_LOOKASIDE_LIST, *PPAGED_LOOKASIDE_LIST;
154 /* callback object (not functional in NT4)*/
156 typedef struct _CALLBACK_OBJECT *PCALLBACK_OBJECT;
158 typedef VOID STDCALL_FUNC
159 (*PCALLBACK_FUNCTION)(PVOID CallbackContext,
163 /* BEGIN REACTOS ONLY */
165 typedef enum _TRAVERSE_METHOD {
166 TraverseMethodPreorder,
167 TraverseMethodInorder,
168 TraverseMethodPostorder
171 typedef LONG STDCALL_FUNC
172 (*PKEY_COMPARATOR)(IN PVOID Key1,
175 typedef BOOLEAN STDCALL_FUNC
176 (*PTRAVERSE_ROUTINE)(IN PVOID Context,
180 struct _BINARY_TREE_NODE;
182 typedef struct _BINARY_TREE
184 struct _BINARY_TREE_NODE * RootNode;
185 PKEY_COMPARATOR Compare;
186 BOOLEAN UseNonPagedPool;
188 NPAGED_LOOKASIDE_LIST NonPaged;
189 PAGED_LOOKASIDE_LIST Paged;
195 } BINARY_TREE, *PBINARY_TREE;
198 struct _SPLAY_TREE_NODE;
200 typedef struct _SPLAY_TREE
202 struct _SPLAY_TREE_NODE * RootNode;
203 PKEY_COMPARATOR Compare;
205 BOOLEAN UseNonPagedPool;
207 NPAGED_LOOKASIDE_LIST NonPaged;
208 PAGED_LOOKASIDE_LIST Paged;
215 } SPLAY_TREE, *PSPLAY_TREE;
218 typedef struct _HASH_TABLE
220 // Size of hash table in number of bits
223 // Use non-paged pool memory?
224 BOOLEAN UseNonPagedPool;
226 // Lock for this structure
232 // Pointer to array of hash buckets with splay trees
233 PSPLAY_TREE HashTrees;
234 } HASH_TABLE, *PHASH_TABLE;
236 /* END REACTOS ONLY */
238 #endif /* __INCLUDE_DDK_EXTYPES_H */