- New implementation of SendMessage, ReceiveMessage, ReplyMessage functions
[wine] / include / ntddk.h
1 /*
2         this file defines interfaces mainly exposed to device drivers and
3         native nt dll's
4
5 */
6 #ifndef __WINE_NTDDK_H
7 #define __WINE_NTDDK_H
8
9 #include <ntdef.h>
10
11 /* fixme: put it elsewhere */
12 typedef long BOOL; 
13 /* end fixme */
14
15 /****************** 
16  * asynchronous I/O 
17  */
18 /* conflict with X11-includes*/
19
20 #undef Status
21 typedef struct _IO_STATUS_BLOCK 
22 {       union 
23         { NTSTATUS Status;
24           PVOID Pointer;
25         } u;
26         ULONG_PTR Information;
27 } IO_STATUS_BLOCK, *PIO_STATUS_BLOCK;    
28
29 typedef VOID (NTAPI *PIO_APC_ROUTINE) ( PVOID ApcContext, PIO_STATUS_BLOCK IoStatusBlock, ULONG Reserved );
30
31 typedef enum _KEY_INFORMATION_CLASS {
32         KeyBasicInformation,
33         KeyNodeInformation,
34         KeyFullInformation
35 } KEY_INFORMATION_CLASS;
36
37 typedef enum _KEY_VALUE_INFORMATION_CLASS {
38         KeyValueBasicInformation,
39         KeyValueFullInformation,
40         KeyValuePartialInformation,
41         KeyValueFullInformationAlign64,
42         KeyValuePartialInformationAlign64
43 } KEY_VALUE_INFORMATION_CLASS;
44
45 typedef enum _PROCESSINFOCLASS 
46 {       ProcessBasicInformation,
47         ProcessQuotaLimits,
48         ProcessIoCounters,
49         ProcessVmCounters,
50         ProcessTimes,
51         ProcessBasePriority,
52         ProcessRaisePriority,
53         ProcessDebugPort,
54         ProcessExceptionPort,
55         ProcessAccessToken,
56         ProcessLdtInformation,
57         ProcessLdtSize,
58         ProcessDefaultHardErrorMode,
59         ProcessIoPortHandlers,
60         ProcessPooledUsageAndLimits,
61         ProcessWorkingSetWatch,
62         ProcessUserModeIOPL,
63         ProcessEnableAlignmentFaultFixup,
64         ProcessPriorityClass,
65         ProcessWx86Information,
66         ProcessHandleCount,
67         ProcessAffinityMask,
68         ProcessPriorityBoost,
69         ProcessDeviceMap,
70         ProcessSessionInformation,
71         ProcessForegroundInformation,
72         ProcessWow64Information,
73         MaxProcessInfoClass
74 } PROCESSINFOCLASS;
75
76 typedef enum _THREADINFOCLASS 
77 {       ThreadBasicInformation,
78         ThreadTimes,
79         ThreadPriority,
80         ThreadBasePriority,
81         ThreadAffinityMask,
82         ThreadImpersonationToken,
83         ThreadDescriptorTableEntry,
84         ThreadEnableAlignmentFaultFixup,
85         ThreadEventPair_Reusable,
86         ThreadQuerySetWin32StartAddress,
87         ThreadZeroTlsCell,
88         ThreadPerformanceCount,
89         ThreadAmILastThread,
90         ThreadIdealProcessor,
91         ThreadPriorityBoost,
92         ThreadSetTlsArrayAddress,
93         ThreadIsIoPending,
94         MaxThreadInfoClass
95 } THREADINFOCLASS;
96
97 typedef enum _FILE_INFORMATION_CLASS {
98         FileDirectoryInformation = 1,
99         FileFullDirectoryInformation,
100         FileBothDirectoryInformation,
101         FileBasicInformation,
102         FileStandardInformation,
103         FileInternalInformation,
104         FileEaInformation,
105         FileAccessInformation,
106         FileNameInformation,
107         FileRenameInformation,
108         FileLinkInformation,
109         FileNamesInformation,
110         FileDispositionInformation,
111         FilePositionInformation,
112         FileFullEaInformation,
113         FileModeInformation,
114         FileAlignmentInformation,
115         FileAllInformation,
116         FileAllocationInformation,
117         FileEndOfFileInformation,
118         FileAlternateNameInformation,
119         FileStreamInformation,
120         FilePipeInformation,
121         FilePipeLocalInformation,
122         FilePipeRemoteInformation,
123         FileMailslotQueryInformation,
124         FileMailslotSetInformation,
125         FileCompressionInformation,
126         FileObjectIdInformation,
127         FileCompletionInformation,
128         FileMoveClusterInformation,
129         FileQuotaInformation,
130         FileReparsePointInformation,
131         FileNetworkOpenInformation,
132         FileAttributeTagInformation,
133         FileTrackingInformation,
134         FileMaximumInformation
135 } FILE_INFORMATION_CLASS, *PFILE_INFORMATION_CLASS;
136
137 typedef enum _SECTION_INHERIT 
138 {       ViewShare = 1,
139         ViewUnmap = 2
140 } SECTION_INHERIT;
141  
142 /*
143         placeholder
144 */
145 typedef enum _OBJECT_INFORMATION_CLASS
146 {       DunnoTheConstants1
147 } OBJECT_INFORMATION_CLASS, *POBJECT_INFORMATION_CLASS;
148
149 typedef enum SYSTEM_INFORMATION_CLASS
150 {       DunnoTheConstants2
151 } SYSTEM_INFORMATION_CLASS, *PSYSTEM_INFORMATION_CLASS;
152
153 /*
154  *      NtQuerySystemInformation interface
155  */
156 typedef struct _SYSTEM_TIME_ADJUSTMENT
157 {
158         ULONG   TimeAdjustment;
159         BOOL    TimeAdjustmentDisabled;
160
161 } SYSTEM_TIME_ADJUSTMENT, *PSYSTEM_TIME_ADJUSTMENT;
162
163 typedef struct _SYSTEM_CONFIGURATION_INFO 
164 {
165         union 
166         { ULONG OemId;
167           struct 
168           { WORD        ProcessorArchitecture;
169             WORD        Reserved;
170           } tag1;
171         } tag2;
172         ULONG   PageSize;
173         PVOID   MinimumApplicationAddress;
174         PVOID   MaximumApplicationAddress;
175         ULONG   ActiveProcessorMask;
176         ULONG   NumberOfProcessors;
177         ULONG   ProcessorType;
178         ULONG   AllocationGranularity;
179         WORD    ProcessorLevel;
180         WORD    ProcessorRevision;
181
182 } SYSTEM_CONFIGURATION_INFO, *PSYSTEM_CONFIGURATION_INFO;
183
184
185 typedef struct _SYSTEM_CACHE_INFORMATION 
186 {
187         ULONG   CurrentSize;
188         ULONG   PeakSize;
189         ULONG   PageFaultCount;
190         ULONG   MinimumWorkingSet;
191         ULONG   MaximumWorkingSet;
192         ULONG   Unused[4];
193
194 } SYSTEM_CACHE_INFORMATION;
195
196 /*
197         timer
198 */
199 typedef enum _TIMER_TYPE 
200 {       NotificationTimer,
201         SynchronizationTimer
202 } TIMER_TYPE;
203
204 #endif