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 *****************************************************************/
22 #define INVALID_HANDLE_VALUE (HANDLE)-1
24 /* Callback Object Access Rights */
25 #define CALLBACK_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x0001)
26 #define CALLBACK_EXECUTE (STANDARD_RIGHTS_EXECUTE|SYNCHRONIZE|0x0001)
27 #define CALLBACK_WRITE (STANDARD_RIGHTS_WRITE|SYNCHRONIZE|0x0001)
28 #define CALLBACK_READ (STANDARD_RIGHTS_READ|SYNCHRONIZE|0x0001)
30 /* ENUMERATIONS **************************************************************/
32 /* TYPES *********************************************************************/
34 /* You'll need the IFS for these, so let's not force everyone to have it */
36 typedef struct _EX_QUEUE_WORKER_INFO
38 UCHAR QueueDisabled
:1;
39 UCHAR MakeThreadsAsNecessary
:1;
42 } EX_QUEUE_WORKER_INFO
, *PEX_QUEUE_WORKER_INFO
;
44 typedef struct _EX_WORK_QUEUE
47 ULONG DynamicThreadCount
;
48 ULONG WorkItemsProcessed
;
49 ULONG WorkItemsProcessedLastPass
;
50 ULONG QueueDepthLastPass
;
51 EX_QUEUE_WORKER_INFO Info
;
52 } EX_WORK_QUEUE
, *PEX_WORK_QUEUE
;
55 typedef struct _HANDLE_TABLE_ENTRY_INFO
58 } HANDLE_TABLE_ENTRY_INFO
, *PHANDLE_TABLE_ENTRY_INFO
;
60 typedef struct _RUNDOWN_DESCRIPTOR
64 } RUNDOWN_DESCRIPTOR
, *PRUNDOWN_DESCRIPTOR
;
66 typedef struct _CALLBACK_OBJECT
70 LIST_ENTRY RegisteredCallbacks
;
71 ULONG AllowMultipleCallbacks
;
72 } CALLBACK_OBJECT
, *PCALLBACK_OBJECT
;
74 typedef struct _HANDLE_TABLE_ENTRY
79 ULONG_PTR ObAttributes
;
80 PHANDLE_TABLE_ENTRY_INFO InfoTable
;
86 USHORT GrantedAccessIndex
;
87 LONG NextFreeTableEntry
;
89 } HANDLE_TABLE_ENTRY
, *PHANDLE_TABLE_ENTRY
;
91 typedef struct _HANDLE_TABLE
95 PHANDLE_TABLE_ENTRY
**Table
;
96 PEPROCESS QuotaProcess
;
97 HANDLE UniqueProcessId
;
98 LONG FirstFreeTableEntry
;
99 LONG NextIndexNeedingPool
;
100 ERESOURCE HandleTableLock
;
101 LIST_ENTRY HandleTableList
;
102 KEVENT HandleContentionEvent
;
103 } HANDLE_TABLE
, *PHANDLE_TABLE
;