2 * PROJECT: ReactOS Native Headers
3 * FILE: include/ndk/extypes.h
4 * PURPOSE: Definitions for exported Executive Functions not defined in DDK/IFS
5 * PROGRAMMER: Alex Ionescu (alex@relsoft.net)
13 /* DEPENDENCIES **************************************************************/
16 /* EXPORTED DATA *************************************************************/
17 extern POBJECT_TYPE NTOSAPI ExIoCompletionType
;
18 extern NTOSAPI POBJECT_TYPE ExMutantObjectType
;
19 extern NTOSAPI POBJECT_TYPE ExTimerType
;
21 /* CONSTANTS *****************************************************************/
23 /* FIXME: Win32k uses windows.h! */
25 #define INVALID_HANDLE_VALUE (HANDLE)-1
28 /* Callback Object Access Rights */
29 #define CALLBACK_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x0001)
30 #define CALLBACK_EXECUTE (STANDARD_RIGHTS_EXECUTE|SYNCHRONIZE|0x0001)
31 #define CALLBACK_WRITE (STANDARD_RIGHTS_WRITE|SYNCHRONIZE|0x0001)
32 #define CALLBACK_READ (STANDARD_RIGHTS_READ|SYNCHRONIZE|0x0001)
34 /* ENUMERATIONS **************************************************************/
36 /* TYPES *********************************************************************/
38 /* You'll need the IFS for this, so use an equivalent version */
40 typedef PVOID EX_RUNDOWN_REF
;
43 /* You'll need the IFS for these, so let's not force everyone to have it */
45 typedef struct _EX_QUEUE_WORKER_INFO
47 UCHAR QueueDisabled
:1;
48 UCHAR MakeThreadsAsNecessary
:1;
51 } EX_QUEUE_WORKER_INFO
, *PEX_QUEUE_WORKER_INFO
;
53 typedef struct _EX_WORK_QUEUE
56 ULONG DynamicThreadCount
;
57 ULONG WorkItemsProcessed
;
58 ULONG WorkItemsProcessedLastPass
;
59 ULONG QueueDepthLastPass
;
60 EX_QUEUE_WORKER_INFO Info
;
61 } EX_WORK_QUEUE
, *PEX_WORK_QUEUE
;
64 typedef struct _EX_FAST_REF
72 } EX_FAST_REF
, *PEX_FAST_REF
;
74 typedef struct _EX_PUSH_LOCK
87 } EX_PUSH_LOCK
, *PEX_PUSH_LOCK
;
89 typedef struct _HANDLE_TABLE_ENTRY_INFO
92 } HANDLE_TABLE_ENTRY_INFO
, *PHANDLE_TABLE_ENTRY_INFO
;
94 typedef struct _RUNDOWN_DESCRIPTOR
98 } RUNDOWN_DESCRIPTOR
, *PRUNDOWN_DESCRIPTOR
;
100 typedef struct _CALLBACK_OBJECT
104 LIST_ENTRY RegisteredCallbacks
;
105 ULONG AllowMultipleCallbacks
;
106 } CALLBACK_OBJECT
, *PCALLBACK_OBJECT
;
108 typedef struct _HANDLE_TABLE_ENTRY
113 ULONG_PTR ObAttributes
;
114 PHANDLE_TABLE_ENTRY_INFO InfoTable
;
120 USHORT GrantedAccessIndex
;
121 LONG NextFreeTableEntry
;
123 } HANDLE_TABLE_ENTRY
, *PHANDLE_TABLE_ENTRY
;
125 typedef struct _HANDLE_TABLE
129 PHANDLE_TABLE_ENTRY
**Table
;
130 PEPROCESS QuotaProcess
;
131 HANDLE UniqueProcessId
;
132 LONG FirstFreeTableEntry
;
133 LONG NextIndexNeedingPool
;
134 ERESOURCE HandleTableLock
;
135 LIST_ENTRY HandleTableList
;
136 KEVENT HandleContentionEvent
;
137 } HANDLE_TABLE
, *PHANDLE_TABLE
;