[NTDLL]
[reactos.git] / include / reactos / subsys / win / basemsg.h
1 /*
2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS Client/Server Runtime SubSystem
4 * FILE: include/reactos/subsys/win/basemsg.h
5 * PURPOSE: Public definitions for communication
6 * between Base API Clients and Servers
7 * PROGRAMMERS: Hermes Belusca-Maito (hermes.belusca@sfr.fr)
8 */
9
10 #ifndef _BASEMSG_H
11 #define _BASEMSG_H
12
13 #pragma once
14
15 #define BASESRV_SERVERDLL_INDEX 1
16 #define BASESRV_FIRST_API_NUMBER 0
17
18 // Windows Server 2003 table from http://j00ru.vexillium.org/csrss_list/api_list.html#Windows_2k3
19 typedef enum _BASESRV_API_NUMBER
20 {
21 BasepCreateProcess = BASESRV_FIRST_API_NUMBER,
22 BasepCreateThread,
23 BasepGetTempFile,
24 BasepExitProcess,
25 // BasepDebugProcess,
26 // BasepCheckVDM,
27 // BasepUpdateVDMEntry,
28 // BasepGetNextVDMCommand,
29 // BasepExitVDM,
30 // BasepIsFirstVDM,
31 // BasepGetVDMExitCode,
32 // BasepSetReenterCount,
33 BasepSetProcessShutdownParam,
34 BasepGetProcessShutdownParam,
35 // BasepNlsSetUserInfo,
36 // BasepNlsSetMultipleUserInfo,
37 // BasepNlsCreateSection,
38 // BasepSetVDMCurDirs,
39 // BasepGetVDMCurDirs,
40 // BasepBatNotification,
41 // BasepRegisterWowExec,
42 BasepSoundSentryNotification,
43 // BasepRefreshIniFileMapping,
44 BasepDefineDosDevice,
45 // BasepSetTermsrvAppInstallMode,
46 // BasepNlsUpdateCacheCount,
47 // BasepSetTermsrvClientTimeZone,
48 // BasepSxsCreateActivationContext,
49 // BasepRegisterThread,
50 // BasepNlsGetUserInfo,
51
52 BasepMaxApiNumber
53 } BASESRV_API_NUMBER, *PBASESRV_API_NUMBER;
54
55 typedef struct _BASE_SXS_CREATEPROCESS_MSG
56 {
57 ULONG Flags;
58 ULONG ProcessParameterFlags;
59 HANDLE FileHandle;
60 UNICODE_STRING SxsWin32ExePath;
61 UNICODE_STRING SxsNtExePath;
62 SIZE_T OverrideManifestOffset;
63 ULONG OverrideManifestSize;
64 SIZE_T OverridePolicyOffset;
65 ULONG OverridePolicySize;
66 PVOID PEManifestAddress;
67 ULONG PEManifestSize;
68 UNICODE_STRING CultureFallbacks;
69 ULONG Unknown[7];
70 UNICODE_STRING AssemblyName;
71 } BASE_SXS_CREATEPROCESS_MSG, *PBASE_SXS_CREATEPROCESS_MSG;
72
73 typedef struct
74 {
75 //
76 // NT-type structure (BASE_CREATEPROCESS_MSG)
77 //
78 HANDLE ProcessHandle;
79 HANDLE ThreadHandle;
80 CLIENT_ID ClientId;
81 ULONG CreationFlags;
82 ULONG VdmBinaryType;
83 ULONG VdmTask;
84 HANDLE hVDM;
85 BASE_SXS_CREATEPROCESS_MSG Sxs;
86 PVOID PebAddressNative;
87 ULONG PebAddressWow64;
88 USHORT ProcessorArchitecture;
89 } BASE_CREATE_PROCESS, *PBASE_CREATE_PROCESS;
90
91 typedef struct
92 {
93 CLIENT_ID ClientId;
94 HANDLE ThreadHandle;
95 } BASE_CREATE_THREAD, *PBASE_CREATE_THREAD;
96
97 typedef struct
98 {
99 UINT uExitCode;
100 } BASE_EXIT_PROCESS, *PBASE_EXIT_PROCESS;
101
102 typedef struct
103 {
104 UINT UniqueID;
105 } BASE_GET_TEMP_FILE, *PBASE_GET_TEMP_FILE;
106
107 typedef struct
108 {
109 ULONG iTask;
110 HANDLE ConsoleHandle;
111 ULONG BinaryType;
112 HANDLE WaitObjectForParent;
113 HANDLE StdIn;
114 HANDLE StdOut;
115 HANDLE StdErr;
116 ULONG CodePage;
117 ULONG dwCreationFlags;
118 PCHAR CmdLine;
119 PCHAR appName;
120 PCHAR PifFile;
121 PCHAR CurDirectory;
122 PCHAR Env;
123 ULONG EnvLen;
124 PVOID StartupInfo;
125 PCHAR Desktop;
126 ULONG DesktopLen;
127 PCHAR Title;
128 ULONG TitleLen;
129 PCHAR Reserved;
130 ULONG ReservedLen;
131 USHORT CmdLen;
132 USHORT AppLen;
133 USHORT PifLen;
134 USHORT CurDirectoryLen;
135 USHORT CurDrive;
136 USHORT VDMState;
137 } BASE_CHECK_VDM, *PBASE_CHECK_VDM;
138
139 typedef struct
140 {
141 ULONG iTask;
142 ULONG BinaryType;
143 HANDLE ConsoleHandle;
144 HANDLE VDMProcessHandle;
145 HANDLE WaitObjectForParent;
146 USHORT EntryIndex;
147 USHORT VDMCreationState;
148 } BASE_UPDATE_VDM_ENTRY, *PBASE_UPDATE_VDM_ENTRY;
149
150 typedef struct
151 {
152 HANDLE ConsoleHandle;
153 HANDLE hParent;
154 ULONG ExitCode;
155 } BASE_GET_VDM_EXIT_CODE, *PBASE_GET_VDM_EXIT_CODE;
156
157 typedef struct
158 {
159 DWORD Level;
160 DWORD Flags;
161 } BASE_SET_PROCESS_SHUTDOWN_PARAMS, *PBASE_SET_PROCESS_SHUTDOWN_PARAMS;
162
163 typedef struct
164 {
165 DWORD Level;
166 DWORD Flags;
167 } BASE_GET_PROCESS_SHUTDOWN_PARAMS, *PBASE_GET_PROCESS_SHUTDOWN_PARAMS;
168
169 typedef struct
170 {
171 ULONG VideoMode;
172 } BASE_SOUND_SENTRY, *PBASE_SOUND_SENTRY;
173
174 typedef struct
175 {
176 UNICODE_STRING DeviceName;
177 UNICODE_STRING TargetName;
178 DWORD dwFlags;
179 } BASE_DEFINE_DOS_DEVICE, *PBASE_DEFINE_DOS_DEVICE;
180
181 typedef struct _BASE_API_MESSAGE
182 {
183 PORT_MESSAGE Header;
184
185 PCSR_CAPTURE_BUFFER CsrCaptureData;
186 CSR_API_NUMBER ApiNumber;
187 NTSTATUS Status; // ReturnValue;
188 ULONG Reserved;
189 union
190 {
191 BASE_CREATE_PROCESS CreateProcessRequest;
192 BASE_CREATE_THREAD CreateThreadRequest;
193 BASE_EXIT_PROCESS ExitProcessRequest;
194 BASE_GET_TEMP_FILE GetTempFile;
195 BASE_CHECK_VDM CheckVdm;
196 BASE_UPDATE_VDM_ENTRY UpdateVdmEntry;
197 BASE_GET_VDM_EXIT_CODE GetVdmExitCode;
198 BASE_SET_PROCESS_SHUTDOWN_PARAMS SetShutdownParametersRequest;
199 BASE_GET_PROCESS_SHUTDOWN_PARAMS GetShutdownParametersRequest;
200 BASE_SOUND_SENTRY SoundSentryRequest;
201 BASE_DEFINE_DOS_DEVICE DefineDosDeviceRequest;
202 } Data;
203 } BASE_API_MESSAGE, *PBASE_API_MESSAGE;
204
205 // Check that a BASE_API_MESSAGE can hold in a CSR_API_MESSAGE.
206 CHECK_API_MSG_SIZE(BASE_API_MESSAGE);
207
208 #endif // _BASEMSG_H
209
210 /* EOF */