Large partial cleanup of ntoskrnl internal headers, mostly to delete obsoleted or...
[reactos.git] / reactos / include / ndk / extypes.h
1 /*
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)
6 * UPDATE HISTORY:
7 * Created 06/10/04
8 */
9
10 #ifndef _EXTYPES_H
11 #define _EXTYPES_H
12
13 /* DEPENDENCIES **************************************************************/
14 #include "ketypes.h"
15
16 /* EXPORTED DATA *************************************************************/
17 extern POBJECT_TYPE NTOSAPI ExIoCompletionType;
18 extern NTOSAPI POBJECT_TYPE ExMutantObjectType;
19 extern NTOSAPI POBJECT_TYPE ExTimerType;
20
21 /* CONSTANTS *****************************************************************/
22 #define INVALID_HANDLE_VALUE (HANDLE)-1
23
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)
29
30 /* ENUMERATIONS **************************************************************/
31
32 /* TYPES *********************************************************************/
33
34 /* You'll need the IFS for these, so let's not force everyone to have it */
35 #ifdef _NTIFS_
36 typedef struct _EX_QUEUE_WORKER_INFO
37 {
38 UCHAR QueueDisabled:1;
39 UCHAR MakeThreadsAsNecessary:1;
40 UCHAR WaitMode:1;
41 ULONG WorkerCount:29;
42 } EX_QUEUE_WORKER_INFO, *PEX_QUEUE_WORKER_INFO;
43
44 typedef struct _EX_WORK_QUEUE
45 {
46 KQUEUE WorkerQueue;
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;
53 #endif
54
55 typedef struct _HANDLE_TABLE_ENTRY_INFO
56 {
57 ULONG AuditMask;
58 } HANDLE_TABLE_ENTRY_INFO, *PHANDLE_TABLE_ENTRY_INFO;
59
60 typedef struct _RUNDOWN_DESCRIPTOR
61 {
62 ULONG_PTR References;
63 KEVENT RundownEvent;
64 } RUNDOWN_DESCRIPTOR, *PRUNDOWN_DESCRIPTOR;
65
66 typedef struct _CALLBACK_OBJECT
67 {
68 ULONG Name;
69 KSPIN_LOCK Lock;
70 LIST_ENTRY RegisteredCallbacks;
71 ULONG AllowMultipleCallbacks;
72 } CALLBACK_OBJECT , *PCALLBACK_OBJECT;
73
74 typedef struct _HANDLE_TABLE_ENTRY
75 {
76 union
77 {
78 PVOID Object;
79 ULONG_PTR ObAttributes;
80 PHANDLE_TABLE_ENTRY_INFO InfoTable;
81 ULONG_PTR Value;
82 } u1;
83 union
84 {
85 ULONG GrantedAccess;
86 USHORT GrantedAccessIndex;
87 LONG NextFreeTableEntry;
88 } u2;
89 } HANDLE_TABLE_ENTRY, *PHANDLE_TABLE_ENTRY;
90
91 typedef struct _HANDLE_TABLE
92 {
93 ULONG Flags;
94 LONG HandleCount;
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;
104
105 #endif
106