[NTDLL/KERNEL32]
[reactos.git] / subsystems / win / basesrv / basesrv.h
1 /*** Private header for BASESRV ***/
2
3 #pragma once
4
5 /* PSDK/NDK Headers */
6 #include <stdio.h>
7 #include <windows.h>
8
9 #define NTOS_MODE_USER
10 #include <ndk/ntndk.h>
11
12 /* CSRSS Header */
13 #include <csrss/server.h>
14
15
16 #include <win/base.h>
17
18
19
20 #define BASESRV_SERVERDLL_INDEX 1
21 #define BASESRV_FIRST_API_NUMBER 0
22
23
24 // Windows NT 4 table, adapted from http://j00ru.vexillium.org/csrss_list/api_list.html#Windows_NT
25 // It is for testing purposes. After that I will update it to 2k3 version and add stubs.
26 typedef enum _BASESRV_API_NUMBER
27 {
28 BasepCreateProcess = BASESRV_FIRST_API_NUMBER,
29 BasepCreateThread,
30 BasepGetTempFile,
31 BasepExitProcess,
32 // BasepDebugProcess,
33 BasepCheckVDM,
34 BasepUpdateVDMEntry,
35 // BasepGetNextVDMCommand,
36 // BasepExitVDM,
37 // BasepIsFirstVDM,
38 BasepGetVDMExitCode,
39 // BasepSetReenterCount,
40 BasepSetProcessShutdownParam,
41 BasepGetProcessShutdownParam,
42 // BasepNlsSetUserInfo,
43 // BasepNlsSetMultipleUserInfo,
44 // BasepNlsCreateSortSection,
45 // BasepNlsPreserveSection,
46 // BasepSetVDMCurDirs,
47 // BasepGetVDMCurDirs,
48 // BasepBatNotification,
49 // BasepRegisterWowExec,
50 BasepSoundSentryNotification,
51 // BasepRefreshIniFileMapping,
52 BasepDefineDosDevice,
53
54 BasepMaxApiNumber
55 } BASESRV_API_NUMBER, *PBASESRV_API_NUMBER;
56
57
58 typedef struct _BASE_SXS_CREATEPROCESS_MSG
59 {
60 ULONG Flags;
61 ULONG ProcessParameterFlags;
62 HANDLE FileHandle;
63 UNICODE_STRING SxsWin32ExePath;
64 UNICODE_STRING SxsNtExePath;
65 SIZE_T OverrideManifestOffset;
66 ULONG OverrideManifestSize;
67 SIZE_T OverridePolicyOffset;
68 ULONG OverridePolicySize;
69 PVOID PEManifestAddress;
70 ULONG PEManifestSize;
71 UNICODE_STRING CultureFallbacks;
72 ULONG Unknown[7];
73 UNICODE_STRING AssemblyName;
74 } BASE_SXS_CREATEPROCESS_MSG, *PBASE_SXS_CREATEPROCESS_MSG;
75
76 typedef struct
77 {
78 //
79 // NT-type structure (BASE_CREATEPROCESS_MSG)
80 //
81 HANDLE ProcessHandle;
82 HANDLE ThreadHandle;
83 CLIENT_ID ClientId;
84 ULONG CreationFlags;
85 ULONG VdmBinaryType;
86 ULONG VdmTask;
87 HANDLE hVDM;
88 BASE_SXS_CREATEPROCESS_MSG Sxs;
89 PVOID PebAddressNative;
90 ULONG PebAddressWow64;
91 USHORT ProcessorArchitecture;
92
93 //
94 // ReactOS Data
95 //
96 BOOL bInheritHandles;
97 } BASE_CREATE_PROCESS, *PBASE_CREATE_PROCESS;
98
99 typedef struct
100 {
101 CLIENT_ID ClientId;
102 HANDLE ThreadHandle;
103 } BASE_CREATE_THREAD, *PBASE_CREATE_THREAD;
104
105 typedef struct
106 {
107 UINT uExitCode;
108 } BASE_EXIT_PROCESS, *PBASE_EXIT_PROCESS;
109
110 typedef struct
111 {
112 UINT UniqueID;
113 } BASE_GET_TEMP_FILE, *PBASE_GET_TEMP_FILE;
114
115 typedef struct
116 {
117 ULONG iTask;
118 HANDLE ConsoleHandle;
119 ULONG BinaryType;
120 HANDLE WaitObjectForParent;
121 HANDLE StdIn;
122 HANDLE StdOut;
123 HANDLE StdErr;
124 ULONG CodePage;
125 ULONG dwCreationFlags;
126 PCHAR CmdLine;
127 PCHAR appName;
128 PCHAR PifFile;
129 PCHAR CurDirectory;
130 PCHAR Env;
131 ULONG EnvLen;
132 PVOID StartupInfo;
133 PCHAR Desktop;
134 ULONG DesktopLen;
135 PCHAR Title;
136 ULONG TitleLen;
137 PCHAR Reserved;
138 ULONG ReservedLen;
139 USHORT CmdLen;
140 USHORT AppLen;
141 USHORT PifLen;
142 USHORT CurDirectoryLen;
143 USHORT CurDrive;
144 USHORT VDMState;
145 } BASE_CHECK_VDM, *PBASE_CHECK_VDM;
146
147 typedef struct
148 {
149 ULONG iTask;
150 ULONG BinaryType;
151 HANDLE ConsoleHandle;
152 HANDLE VDMProcessHandle;
153 HANDLE WaitObjectForParent;
154 USHORT EntryIndex;
155 USHORT VDMCreationState;
156 } BASE_UPDATE_VDM_ENTRY, *PBASE_UPDATE_VDM_ENTRY;
157
158 typedef struct
159 {
160 HANDLE ConsoleHandle;
161 HANDLE hParent;
162 ULONG ExitCode;
163 } BASE_GET_VDM_EXIT_CODE, *PBASE_GET_VDM_EXIT_CODE;
164
165 typedef struct
166 {
167 DWORD Level;
168 DWORD Flags;
169 } BASE_SET_PROCESS_SHUTDOWN_PARAMS, *PBASE_SET_PROCESS_SHUTDOWN_PARAMS;
170
171 typedef struct
172 {
173 DWORD Level;
174 DWORD Flags;
175 } BASE_GET_PROCESS_SHUTDOWN_PARAMS, *PBASE_GET_PROCESS_SHUTDOWN_PARAMS;
176
177 typedef struct
178 {
179 ULONG VideoMode;
180 } BASE_SOUND_SENTRY, *PBASE_SOUND_SENTRY;
181
182 typedef struct
183 {
184 UNICODE_STRING DeviceName;
185 UNICODE_STRING TargetName;
186 DWORD dwFlags;
187 } BASE_DEFINE_DOS_DEVICE, *PBASE_DEFINE_DOS_DEVICE;
188
189
190 typedef struct _BASE_API_MESSAGE
191 {
192 PORT_MESSAGE Header;
193
194 PCSR_CAPTURE_BUFFER CsrCaptureData;
195 CSR_API_NUMBER ApiNumber;
196 ULONG Status;
197 ULONG Reserved;
198 union
199 {
200 BASE_CREATE_PROCESS CreateProcessRequest;
201 BASE_CREATE_THREAD CreateThreadRequest;
202 BASE_EXIT_PROCESS ExitProcessRequest; // CSRSS_TERMINATE_PROCESS TerminateProcessRequest;
203 BASE_GET_TEMP_FILE GetTempFile;
204 BASE_CHECK_VDM CheckVdm;
205 BASE_UPDATE_VDM_ENTRY UpdateVdmEntry;
206 BASE_GET_VDM_EXIT_CODE GetVdmExitCode;
207 BASE_SET_PROCESS_SHUTDOWN_PARAMS SetShutdownParametersRequest; // CSRSS_SET_SHUTDOWN_PARAMETERS
208 BASE_GET_PROCESS_SHUTDOWN_PARAMS GetShutdownParametersRequest; // CSRSS_GET_SHUTDOWN_PARAMETERS
209 BASE_SOUND_SENTRY SoundSentryRequest;
210 BASE_DEFINE_DOS_DEVICE DefineDosDeviceRequest;
211 } Data;
212 } BASE_API_MESSAGE, *PBASE_API_MESSAGE;
213
214
215
216
217
218
219
220
221 typedef struct _NLS_USER_INFO
222 {
223 WCHAR iCountry[80];
224 WCHAR sCountry[80];
225 WCHAR sList[80];
226 WCHAR iMeasure[80];
227 WCHAR iPaperSize[80];
228 WCHAR sDecimal[80];
229 WCHAR sThousand[80];
230 WCHAR sGrouping[80];
231 WCHAR iDigits[80];
232 WCHAR iLZero[80];
233 WCHAR iNegNumber[80];
234 WCHAR sNativeDigits[80];
235 WCHAR iDigitSubstitution[80];
236 WCHAR sCurrency[80];
237 WCHAR sMonDecSep[80];
238 WCHAR sMonThouSep[80];
239 WCHAR sMonGrouping[80];
240 WCHAR iCurrDigits[80];
241 WCHAR iCurrency[80];
242 WCHAR iNegCurr[80];
243 WCHAR sPosSign[80];
244 WCHAR sNegSign[80];
245 WCHAR sTimeFormat[80];
246 WCHAR s1159[80];
247 WCHAR s2359[80];
248 WCHAR sShortDate[80];
249 WCHAR sYearMonth[80];
250 WCHAR sLongDate[80];
251 WCHAR iCalType[80];
252 WCHAR iFirstDay[80];
253 WCHAR iFirstWeek[80];
254 WCHAR sLocale[80];
255 WCHAR sLocaleName[85];
256 LCID UserLocaleId;
257 LUID InteractiveUserLuid;
258 CHAR InteractiveUserSid[68]; // SECURITY_MAX_SID_SIZE to make ROS happy
259 ULONG ulCacheUpdateCount;
260 } NLS_USER_INFO, *PNLS_USER_INFO;
261
262
263 typedef struct _BASE_STATIC_SERVER_DATA
264 {
265 UNICODE_STRING WindowsDirectory;
266 UNICODE_STRING WindowsSystemDirectory;
267 UNICODE_STRING NamedObjectDirectory;
268 USHORT WindowsMajorVersion;
269 USHORT WindowsMinorVersion;
270 USHORT BuildNumber;
271 USHORT CSDNumber;
272 USHORT RCNumber;
273 WCHAR CSDVersion[128];
274 SYSTEM_BASIC_INFORMATION SysInfo;
275 SYSTEM_TIMEOFDAY_INFORMATION TimeOfDay;
276 PVOID IniFileMapping;
277 NLS_USER_INFO NlsUserInfo;
278 BOOLEAN DefaultSeparateVDM;
279 BOOLEAN IsWowTaskReady;
280 UNICODE_STRING WindowsSys32x86Directory;
281 BOOLEAN fTermsrvAppInstallMode;
282 TIME_ZONE_INFORMATION tziTermsrvClientTimeZone;
283 KSYSTEM_TIME ktTermsrvClientBias;
284 ULONG TermsrvClientTimeZoneId;
285 BOOLEAN LUIDDeviceMapsEnabled;
286 ULONG TermsrvClientTimeZoneChangeNum;
287 } BASE_STATIC_SERVER_DATA, *PBASE_STATIC_SERVER_DATA;
288
289