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;
84 #else /* !LIBCAPTIVE */
86 #endif /* !LIBCAPTIVE */
87 (*PWORKER_THREAD_ROUTINE)(PVOID Parameter);
89 typedef struct _WORK_QUEUE_ITEM
92 PWORKER_THREAD_ROUTINE Routine;
94 } WORK_QUEUE_ITEM, *PWORK_QUEUE_ITEM;
96 typedef PVOID STDCALL_FUNC
97 (*PALLOCATE_FUNCTION)(POOL_TYPE PoolType,
101 typedef VOID STDCALL_FUNC
102 (*PFREE_FUNCTION)(PVOID Buffer);
104 typedef union _SLIST_HEADER
109 SINGLE_LIST_ENTRY Next;
113 } SLIST_HEADER, *PSLIST_HEADER;
115 typedef struct _NPAGED_LOOKASIDE_LIST
117 SLIST_HEADER ListHead;
120 ULONG TotalAllocates;
121 ULONG AllocateMisses;
127 PALLOCATE_FUNCTION Allocate;
129 LIST_ENTRY ListEntry;
130 ULONG LastTotalAllocates;
131 ULONG LastAllocateMisses;
134 } NPAGED_LOOKASIDE_LIST, *PNPAGED_LOOKASIDE_LIST;
136 typedef struct _PAGED_LOOKASIDE_LIST
138 SLIST_HEADER ListHead;
141 ULONG TotalAllocates;
142 ULONG AllocateMisses;
148 PALLOCATE_FUNCTION Allocate;
150 LIST_ENTRY ListEntry;
151 ULONG LastTotalAllocates;
152 ULONG LastAllocateMisses;
154 } PAGED_LOOKASIDE_LIST, *PPAGED_LOOKASIDE_LIST;
157 /* callback object (not functional in NT4)*/
159 typedef struct _CALLBACK_OBJECT *PCALLBACK_OBJECT;
161 typedef VOID STDCALL_FUNC
162 (*PCALLBACK_FUNCTION)(PVOID CallbackContext,
166 /* BEGIN REACTOS ONLY */
168 typedef enum _TRAVERSE_METHOD {
169 TraverseMethodPreorder,
170 TraverseMethodInorder,
171 TraverseMethodPostorder
174 typedef LONG STDCALL_FUNC
175 (*PKEY_COMPARATOR)(IN PVOID Key1,
178 typedef BOOLEAN STDCALL_FUNC
179 (*PTRAVERSE_ROUTINE)(IN PVOID Context,
183 struct _BINARY_TREE_NODE;
185 typedef struct _BINARY_TREE
187 struct _BINARY_TREE_NODE * RootNode;
188 PKEY_COMPARATOR Compare;
189 BOOLEAN UseNonPagedPool;
191 NPAGED_LOOKASIDE_LIST NonPaged;
192 PAGED_LOOKASIDE_LIST Paged;
198 } BINARY_TREE, *PBINARY_TREE;
201 struct _SPLAY_TREE_NODE;
203 typedef struct _SPLAY_TREE
205 struct _SPLAY_TREE_NODE * RootNode;
206 PKEY_COMPARATOR Compare;
208 BOOLEAN UseNonPagedPool;
210 NPAGED_LOOKASIDE_LIST NonPaged;
211 PAGED_LOOKASIDE_LIST Paged;
218 } SPLAY_TREE, *PSPLAY_TREE;
221 typedef struct _HASH_TABLE
223 // Size of hash table in number of bits
226 // Use non-paged pool memory?
227 BOOLEAN UseNonPagedPool;
229 // Lock for this structure
235 // Pointer to array of hash buckets with splay trees
236 PSPLAY_TREE HashTrees;
237 } HASH_TABLE, *PHASH_TABLE;
239 /* END REACTOS ONLY */
241 #endif /* __INCLUDE_DDK_EXTYPES_H */