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;
11 extern POBJECT_TYPE IMPORTED ExDesktopObjectType;
12 extern POBJECT_TYPE IMPORTED ExEventObjectType;
13 extern POBJECT_TYPE IMPORTED ExWindowStationObjectType;
16 typedef ULONG INTERLOCKED_RESULT;
17 typedef ULONG WORK_QUEUE_TYPE;
19 typedef ULONG ERESOURCE_THREAD, *PERESOURCE_THREAD;
21 typedef struct _OWNER_ENTRY
23 ERESOURCE_THREAD OwnerThread;
29 } OWNER_ENTRY, *POWNER_ENTRY;
31 typedef struct _ERESOURCE
33 LIST_ENTRY SystemResourcesList;
34 POWNER_ENTRY OwnerTable;
37 PKSEMAPHORE SharedWaiters;
38 PKEVENT ExclusiveWaiters;
39 OWNER_ENTRY OwnerThreads[2];
40 ULONG ContentionCount;
41 USHORT NumberOfSharedWaiters;
42 USHORT NumberOfExclusiveWaiters;
46 ULONG CreatorBackTraceIndex;
49 } ERESOURCE, *PERESOURCE;
55 struct _KTHREAD* Owner;
59 } FAST_MUTEX, *PFAST_MUTEX;
61 typedef struct _ZONE_HEADER
63 SINGLE_LIST_ENTRY FreeList;
64 SINGLE_LIST_ENTRY SegmentList;
66 ULONG TotalSegmentSize;
67 } ZONE_HEADER, *PZONE_HEADER;
69 typedef struct _ZONE_SEGMENT
71 SINGLE_LIST_ENTRY Entry;
73 } ZONE_SEGMENT, *PZONE_SEGMENT;
75 typedef struct _ZONE_ENTRY
77 SINGLE_LIST_ENTRY Entry;
78 } ZONE_ENTRY, *PZONE_ENTRY;
82 (*PWORKER_THREAD_ROUTINE)(PVOID Parameter);
84 typedef struct _WORK_QUEUE_ITEM
87 PWORKER_THREAD_ROUTINE Routine;
89 } WORK_QUEUE_ITEM, *PWORK_QUEUE_ITEM;
92 (*PALLOCATE_FUNCTION)(POOL_TYPE PoolType,
97 (*PFREE_FUNCTION)(PVOID Buffer);
99 typedef union _SLIST_HEADER
104 SINGLE_LIST_ENTRY Next;
108 } SLIST_HEADER, *PSLIST_HEADER;
110 typedef struct _NPAGED_LOOKASIDE_LIST
112 SLIST_HEADER ListHead;
115 ULONG TotalAllocates;
116 ULONG AllocateMisses;
122 PALLOCATE_FUNCTION Allocate;
124 LIST_ENTRY ListEntry;
125 ULONG LastTotalAllocates;
126 ULONG LastAllocateMisses;
129 } NPAGED_LOOKASIDE_LIST, *PNPAGED_LOOKASIDE_LIST;
131 typedef struct _PAGED_LOOKASIDE_LIST
133 SLIST_HEADER ListHead;
136 ULONG TotalAllocates;
137 ULONG AllocateMisses;
143 PALLOCATE_FUNCTION Allocate;
145 LIST_ENTRY ListEntry;
146 ULONG LastTotalAllocates;
147 ULONG LastAllocateMisses;
149 } PAGED_LOOKASIDE_LIST, *PPAGED_LOOKASIDE_LIST;
152 /* callback object (not functional in NT4)*/
154 typedef struct _CALLBACK_OBJECT *PCALLBACK_OBJECT;
157 (*PCALLBACK_FUNCTION)(PVOID CallbackContext,
161 /* BEGIN REACTOS ONLY */
163 typedef enum _TRAVERSE_METHOD {
164 TraverseMethodPreorder,
165 TraverseMethodInorder,
166 TraverseMethodPostorder
170 (*PKEY_COMPARATOR)(IN PVOID Key1,
173 typedef BOOLEAN STDCALL
174 (*PTRAVERSE_ROUTINE)(IN PVOID Context,
178 struct _BINARY_TREE_NODE;
180 typedef struct _BINARY_TREE
182 struct _BINARY_TREE_NODE * RootNode;
183 PKEY_COMPARATOR Compare;
184 BOOLEAN UseNonPagedPool;
186 NPAGED_LOOKASIDE_LIST NonPaged;
187 PAGED_LOOKASIDE_LIST Paged;
193 } BINARY_TREE, *PBINARY_TREE;
196 struct _SPLAY_TREE_NODE;
198 typedef struct _SPLAY_TREE
200 struct _SPLAY_TREE_NODE * RootNode;
201 PKEY_COMPARATOR Compare;
203 BOOLEAN UseNonPagedPool;
205 NPAGED_LOOKASIDE_LIST NonPaged;
206 PAGED_LOOKASIDE_LIST Paged;
213 } SPLAY_TREE, *PSPLAY_TREE;
216 typedef struct _HASH_TABLE
218 // Size of hash table in number of bits
221 // Use non-paged pool memory?
222 BOOLEAN UseNonPagedPool;
224 // Lock for this structure
230 // Pointer to array of hash buckets with splay trees
231 PSPLAY_TREE HashTrees;
232 } HASH_TABLE, *PHASH_TABLE;
234 /* END REACTOS ONLY */
236 #endif /* __INCLUDE_DDK_EXTYPES_H */