Some more NDK fixes
[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
15 /* EXPORTED DATA *************************************************************/
16 extern POBJECT_TYPE NTOSAPI ExIoCompletionType;
17 extern NTOSAPI POBJECT_TYPE ExMutantObjectType;
18 extern NTOSAPI POBJECT_TYPE ExTimerType;
19
20 /* CONSTANTS *****************************************************************/
21 #define INVALID_HANDLE_VALUE (HANDLE)-1
22
23 /* ENUMERATIONS **************************************************************/
24
25 typedef enum _HARDERROR_RESPONSE_OPTION
26 {
27 OptionAbortRetryIgnore,
28 OptionOk,
29 OptionOkCancel,
30 OptionRetryCancel,
31 OptionYesNo,
32 OptionYesNoCancel,
33 OptionShutdownSystem
34 } HARDERROR_RESPONSE_OPTION, *PHARDERROR_RESPONSE_OPTION;
35
36 typedef enum _HARDERROR_RESPONSE
37 {
38 ResponseReturnToCaller,
39 ResponseNotHandled,
40 ResponseAbort,
41 ResponseCancel,
42 ResponseIgnore,
43 ResponseNo,
44 ResponseOk,
45 ResponseRetry,
46 ResponseYes
47 } HARDERROR_RESPONSE, *PHARDERROR_RESPONSE;
48
49 /* TYPES *********************************************************************/
50
51 typedef struct _EX_QUEUE_WORKER_INFO
52 {
53 UCHAR QueueDisabled:1;
54 UCHAR MakeThreadsAsNecessary:1;
55 UCHAR WaitMode:1;
56 ULONG WorkerCount:29;
57 } EX_QUEUE_WORKER_INFO, *PEX_QUEUE_WORKER_INFO;
58
59 typedef struct _EX_WORK_QUEUE
60 {
61 KQUEUE WorkerQueue;
62 ULONG DynamicThreadCount;
63 ULONG WorkItemsProcessed;
64 ULONG WorkItemsProcessedLastPass;
65 ULONG QueueDepthLastPass;
66 EX_QUEUE_WORKER_INFO Info;
67 } EX_WORK_QUEUE, *PEX_WORK_QUEUE;
68
69 typedef struct _HANDLE_TABLE_ENTRY_INFO
70 {
71 ULONG AuditMask;
72 } HANDLE_TABLE_ENTRY_INFO, *PHANDLE_TABLE_ENTRY_INFO;
73
74 typedef struct _RUNDOWN_DESCRIPTOR
75 {
76 ULONG_PTR References;
77 KEVENT RundownEvent;
78 } RUNDOWN_DESCRIPTOR, *PRUNDOWN_DESCRIPTOR;
79
80 typedef struct _HANDLE_TABLE_ENTRY
81 {
82 union
83 {
84 PVOID Object;
85 ULONG_PTR ObAttributes;
86 PHANDLE_TABLE_ENTRY_INFO InfoTable;
87 ULONG_PTR Value;
88 } u1;
89 union
90 {
91 ULONG GrantedAccess;
92 USHORT GrantedAccessIndex;
93 LONG NextFreeTableEntry;
94 } u2;
95 } HANDLE_TABLE_ENTRY, *PHANDLE_TABLE_ENTRY;
96
97 typedef struct _HANDLE_TABLE
98 {
99 ULONG Flags;
100 LONG HandleCount;
101 PHANDLE_TABLE_ENTRY **Table;
102 PEPROCESS QuotaProcess;
103 HANDLE UniqueProcessId;
104 LONG FirstFreeTableEntry;
105 LONG NextIndexNeedingPool;
106 ERESOURCE HandleTableLock;
107 LIST_ENTRY HandleTableList;
108 KEVENT HandleContentionEvent;
109 } HANDLE_TABLE;
110
111 #endif
112