1 /* $Id: extypes.h,v 1.7 2002/03/22 20:58:23 chorns Exp $ */
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 LONG
STDCALL (*PKEY_COMPARATOR
)(PVOID Key1
,
166 struct _BINARY_TREE_NODE
;
168 typedef struct _BINARY_TREE
170 struct _BINARY_TREE_NODE
* RootNode
;
171 PKEY_COMPARATOR Compare
;
172 PAGED_LOOKASIDE_LIST LookasideList
;
174 } BINARY_TREE
, *PBINARY_TREE
;
177 struct _SPLAY_TREE_NODE
;
179 typedef struct _SPLAY_TREE
181 struct _SPLAY_TREE_NODE
* RootNode
;
182 PKEY_COMPARATOR Compare
;
184 PAGED_LOOKASIDE_LIST LookasideList
;
187 } SPLAY_TREE
, *PSPLAY_TREE
;
190 typedef struct _HASH_TABLE
192 // Lock for this structure
195 // Size of hash table in number of bits
198 // Pointer to array of hash buckets with splay trees
199 PSPLAY_TREE HashTrees
;
200 } HASH_TABLE
, *PHASH_TABLE
;
202 /* END REACTOS ONLY */
204 #endif /* __INCLUDE_DDK_EXTYPES_H */