ReactOS 0.4.17-dev-769-g1500a35
smss.h
Go to the documentation of this file.
1/*
2 * PROJECT: ReactOS Windows-Compatible Session Manager
3 * LICENSE: BSD 2-Clause License
4 * FILE: base/system/smss/smss.h
5 * PURPOSE: Main SMSS Header
6 * PROGRAMMERS: Alex Ionescu
7 */
8
9#ifndef _SM_
10#define _SM_
11
12#pragma once
13
14/* DEPENDENCIES ***************************************************************/
15
16#include <stdio.h>
17
18/* Native Headers */
19#define WIN32_NO_STATUS
20#include <windef.h>
21#include <winbase.h>
22#include <winreg.h>
23
24#define NTOS_MODE_USER
25#include <ndk/cmfuncs.h>
26#include <ndk/exfuncs.h>
27#include <ndk/iofuncs.h>
28#include <ndk/kefuncs.h>
29#include <ndk/lpcfuncs.h>
30#include <ndk/mmfuncs.h>
31#include <ndk/obfuncs.h>
32#include <ndk/psfuncs.h>
33#include <ndk/rtlfuncs.h>
34#include <ndk/setypes.h>
35#include <ndk/umfuncs.h>
36
37#include <ntstrsafe.h>
38
39/* PSEH for SEH Support */
40#include <pseh/pseh2.h>
41
42/* SM Protocol Header */
43#include <sm/smmsg.h>
44
45/* DEFINES ********************************************************************/
46
47#define SMP_DEBUG_FLAG 0x01
48#define SMP_ASYNC_FLAG 0x02
49#define SMP_AUTOCHK_FLAG 0x04
50#define SMP_SUBSYSTEM_FLAG 0x08
51#define SMP_INVALID_PATH 0x10
52#define SMP_DEFERRED_FLAG 0x20
53#define SMP_POSIX_FLAG 0x100
54#define SMP_OS2_FLAG 0x200
55
56/* STRUCTURES *****************************************************************/
57
58typedef struct _SMP_REGISTRY_VALUE
59{
65
66typedef struct _SMP_SUBSYSTEM
67{
79
80/* EXTERNALS ******************************************************************/
81
94extern PVOID SmpHeap;
95extern ULONG SmBaseTag;
105extern BOOLEAN SmpDebug;
106
107/* FUNCTIONS ******************************************************************/
108
109/* crashdmp.c */
110
112NTAPI
115);
116
117/* pagefile.c */
118
119VOID
120NTAPI
122 VOID
123);
124
126NTAPI
128 IN PUNICODE_STRING PageFileToken
129);
130
132NTAPI
134 VOID
135);
136
137/* sminit.c */
138
139VOID
140NTAPI
142 VOID
143);
144
146NTAPI
148 IN BOOLEAN InitialCall
149);
150
152NTAPI
153SmpInit(
154 IN PUNICODE_STRING InitialCommand,
156);
157
158/* smloop.c */
159
160ULONG
161NTAPI
164
165/* smsbapi.c */
166
168NTAPI
171 IN PSMP_SUBSYSTEM OtherSubsystem,
172 IN PRTL_USER_PROCESS_INFORMATION ProcessInformation,
173 IN ULONG DbgSessionId,
174 IN PCLIENT_ID DbgUiClientId
175);
176
177/* smsessn.c */
178
180NTAPI
182 IN ULONG MuSessionId
183);
184
185VOID
186NTAPI
189);
190
191ULONG
192NTAPI
194 IN PSMP_SUBSYSTEM Subsystem,
195 IN PSMP_SUBSYSTEM OtherSubsystem
196);
197
199NTAPI
203);
204
206NTAPI
210);
211
212/* smss.c */
213
215NTAPI
219 IN PUNICODE_STRING CommandLine,
220 IN ULONG MuSessionId,
221 IN ULONG Flags,
222 IN PRTL_USER_PROCESS_INFORMATION ProcessInformation
223);
224
226NTAPI
228 IN PUNICODE_STRING CommandLine,
229 IN ULONG MuSessionId,
232);
233
235NTAPI
237 IN PUNICODE_STRING InitialCommand,
238 IN HANDLE InitialCommandProcess,
239 OUT PHANDLE ReturnPid);
240
242NTAPI
244 _In_reads_(ParameterCount) PULONG_PTR Parameters,
245 _In_ ULONG ParameterMask,
246 _In_ ULONG ParameterCount);
247
248LONG
249NTAPI
251 _In_ PEXCEPTION_POINTERS ExceptionInfo);
252
253/* smsubsys.c */
254
255VOID
256NTAPI
258 IN PSMP_SUBSYSTEM SubSystem
259);
260
262NTAPI
265);
266
268NTAPI
270 IN ULONG MuSessionId,
272);
273
275NTAPI
279 IN PUNICODE_STRING CommandLine,
280 IN ULONG MuSessionId,
283);
284
286NTAPI
288 IN PULONG MuSessionId,
290 IN PUNICODE_STRING InitialCommand
291);
292
293/* smutil.c */
294
296NTAPI
299 OUT PVOID *PrivilegeStat
300);
301
302VOID
303NTAPI
306);
307
309NTAPI
311 IN PUNICODE_STRING CommandLine,
315 OUT PUNICODE_STRING Arguments
316);
317
319NTAPI
321 OUT PBOOLEAN BootOkay,
322 OUT PBOOLEAN ShutdownOkay
323);
324
325VOID
326NTAPI
328 IN BOOLEAN BootOkay,
329 IN BOOLEAN ShutdownOkay
330);
331
332#endif /* _SM_ */
unsigned char BOOLEAN
Definition: actypes.h:127
LONG NTSTATUS
Definition: precomp.h:26
_In_ HANDLE _In_ CONST PDXGKMDT_OPM_GET_INFO_PARAMETERS Parameters
Definition: dispmprt.h:321
_In_ D3DDDI_VIDEO_PRESENT_TARGET_ID _In_ ULONG _In_ ULONG Flags
Definition: dispmprt.h:245
ULONG SessionId
Definition: dllmain.c:28
IN PLARGE_INTEGER IN PLARGE_INTEGER PEPROCESS ProcessId
Definition: fatprocs.h:2712
ImageType
Definition: gdiplusenums.h:192
_In_ HANDLE ProcessHandle
Definition: mmfuncs.h:407
_In_ BOOLEAN _In_ USHORT Directory
Definition: rtlfuncs.h:3962
#define _In_reads_(s)
Definition: no_sal2.h:168
#define _In_
Definition: no_sal2.h:158
PVOID *typedef PHANDLE
Definition: ntsecpkg.h:455
long LONG
Definition: pedump.c:60
NTSTATUS NTAPI SmpSbCreateSession(IN PVOID Reserved, IN PSMP_SUBSYSTEM OtherSubsystem, IN PRTL_USER_PROCESS_INFORMATION ProcessInformation, IN ULONG DbgSessionId, IN PCLIENT_ID DbgUiClientId)
Definition: smsbapi.c:36
ULONG NTAPI SmpApiLoop(_In_ PVOID Parameter)
Definition: smloop.c:437
LONG NTAPI SmpUnhandledExceptionFilter(_In_ PEXCEPTION_POINTERS ExceptionInfo)
Definition: smss.c:407
PVOID SmpHeap
Definition: sminit.c:25
HANDLE SmpWindowsSubSysProcess
Definition: smsubsys.c:20
NTSTATUS NTAPI SmpGetProcessMuSessionId(IN HANDLE ProcessHandle, OUT PULONG SessionId)
Definition: smsessn.c:168
struct _SMP_REGISTRY_VALUE SMP_REGISTRY_VALUE
VOID NTAPI SmpPagingFileInitialize(VOID)
Definition: pagefile.c:130
NTSTATUS NTAPI SmpTerminate(_In_reads_(ParameterCount) PULONG_PTR Parameters, _In_ ULONG ParameterMask, _In_ ULONG ParameterCount)
Definition: smss.c:372
BOOLEAN SmpDebug
Definition: smss.c:20
LIST_ENTRY SmpSubSystemList
Definition: sminit.c:22
UNICODE_STRING SmpAutoChkKeyword
Definition: smss.h:93
struct _SMP_SUBSYSTEM SMP_SUBSYSTEM
LIST_ENTRY SmpSessionListHead
Definition: smsessn.c:27
LIST_ENTRY SmpSubSystemsToLoad
Definition: sminit.c:22
VOID NTAPI SmpReleasePrivilege(IN PVOID State)
Definition: smutil.c:124
NTSTATUS NTAPI SmpCreatePagingFiles(VOID)
Definition: pagefile.c:1049
BOOLEAN NTAPI SmpCheckDuplicateMuSessionId(IN ULONG MuSessionId)
Definition: smsessn.c:37
NTSTATUS NTAPI SmpExecuteInitialCommand(IN ULONG MuSessionId, IN PUNICODE_STRING InitialCommand, IN HANDLE InitialCommandProcess, OUT PHANDLE ReturnPid)
Definition: smss.c:281
RTL_CRITICAL_SECTION SmpSessionListLock
Definition: smsessn.c:26
ULONG AttachedSessionId
Definition: smss.c:19
NTSTATUS NTAPI SmpLoadSubSystemsForMuSession(IN PULONG MuSessionId, OUT PHANDLE ProcessId, IN PUNICODE_STRING InitialCommand)
Definition: smsubsys.c:513
LIST_ENTRY SmpSubSystemsToDefer
Definition: sminit.c:22
RTL_CRITICAL_SECTION SmpKnownSubSysLock
Definition: smsubsys.c:18
struct _SMP_SUBSYSTEM * PSMP_SUBSYSTEM
NTSTATUS NTAPI SmpParseCommandLine(IN PUNICODE_STRING CommandLine, OUT PULONG Flags, OUT PUNICODE_STRING FileName, OUT PUNICODE_STRING Directory, OUT PUNICODE_STRING Arguments)
Definition: smutil.c:228
LIST_ENTRY SmpExecuteList
Definition: sminit.c:23
BOOLEAN SmpNextSessionIdScanMode
Definition: smsessn.c:29
UNICODE_STRING SmpDebugKeyword
Definition: smutil.c:29
NTSTATUS NTAPI SmpSetProcessMuSessionId(IN HANDLE ProcessHandle, IN ULONG SessionId)
Definition: smsessn.c:199
ULONG SmBaseTag
Definition: sminit.c:26
ULONG NTAPI SmpAllocateSessionId(IN PSMP_SUBSYSTEM Subsystem, IN PSMP_SUBSYSTEM OtherSubsystem)
Definition: smsessn.c:123
NTSTATUS NTAPI SmpCreatePagingFileDescriptor(IN PUNICODE_STRING PageFileToken)
Definition: pagefile.c:139
struct _SMP_REGISTRY_VALUE * PSMP_REGISTRY_VALUE
UNICODE_STRING SmpDefaultLibPath
Definition: sminit.c:29
VOID NTAPI SmpTranslateSystemPartitionInformation(VOID)
Definition: sminit.c:832
VOID NTAPI SmpDeleteSession(IN ULONG SessionId)
Definition: smsessn.c:98
PWCHAR SmpDefaultEnvironment
Definition: sminit.c:28
VOID NTAPI SmpDereferenceSubsystem(IN PSMP_SUBSYSTEM SubSystem)
Definition: smsubsys.c:50
HANDLE SmpSessionsObjectDirectory
Definition: smsessn.c:31
BOOLEAN SmpDbgSsLoaded
Definition: smsessn.c:30
NTSTATUS NTAPI SmpExecuteCommand(IN PUNICODE_STRING CommandLine, IN ULONG MuSessionId, OUT PHANDLE ProcessId, IN ULONG Flags)
Definition: smss.c:208
NTSTATUS NTAPI SmpLoadSubSystem(IN PUNICODE_STRING FileName, IN PUNICODE_STRING Directory, IN PUNICODE_STRING CommandLine, IN ULONG MuSessionId, OUT PHANDLE ProcessId, IN ULONG Flags)
Definition: smsubsys.c:141
PSMP_SUBSYSTEM NTAPI SmpLocateKnownSubSysByCid(IN PCLIENT_ID ClientId)
Definition: smsubsys.c:71
NTSTATUS NTAPI SmpAcquirePrivilege(IN ULONG Privilege, OUT PVOID *PrivilegeStat)
Definition: smutil.c:35
NTSTATUS NTAPI SmpExecuteImage(IN PUNICODE_STRING FileName, IN PUNICODE_STRING Directory, IN PUNICODE_STRING CommandLine, IN ULONG MuSessionId, IN ULONG Flags, IN PRTL_USER_PROCESS_INFORMATION ProcessInformation)
Definition: smss.c:31
PSMP_SUBSYSTEM NTAPI SmpLocateKnownSubSysByType(IN ULONG MuSessionId, IN ULONG ImageType)
Definition: smsubsys.c:105
HANDLE SmpWindowsSubSysProcessId
Definition: smsubsys.c:21
LIST_ENTRY SmpSetupExecuteList
Definition: sminit.c:19
NTSTATUS NTAPI SmpInit(IN PUNICODE_STRING InitialCommand, OUT PHANDLE ProcessHandle)
Definition: sminit.c:2473
BOOLEAN NTAPI SmpSaveAndClearBootStatusData(OUT PBOOLEAN BootOkay, OUT PBOOLEAN ShutdownOkay)
Definition: smutil.c:419
UNICODE_STRING SmpASyncKeyword
Definition: smss.h:93
BOOLEAN RegPosixSingleInstance
Definition: smsubsys.c:22
BOOLEAN NTAPI SmpCheckForCrashDump(IN PUNICODE_STRING FileName)
Definition: crashdmp.c:20
ULONG SmpNextSessionId
Definition: smsessn.c:28
LIST_ENTRY SmpKnownSubSysHead
Definition: smsubsys.c:19
UNICODE_STRING SmpSystemRoot
Definition: smss.c:18
VOID NTAPI SmpRestoreBootStatusData(IN BOOLEAN BootOkay, IN BOOLEAN ShutdownOkay)
Definition: smutil.c:469
NTSTATUS NTAPI SmpCreateSecurityDescriptors(IN BOOLEAN InitialCall)
Definition: sminit.c:998
Definition: typedefs.h:120
UNICODE_STRING Name
Definition: smss.h:61
LIST_ENTRY Entry
Definition: smss.h:60
PCHAR AnsiValue
Definition: smss.h:63
UNICODE_STRING Value
Definition: smss.h:62
ULONG MuSessionId
Definition: smss.h:75
HANDLE ProcessHandle
Definition: smss.h:70
HANDLE SbApiPort
Definition: smss.h:73
CLIENT_ID ClientId
Definition: smss.h:74
HANDLE Event
Definition: smss.h:69
ULONG ImageType
Definition: smss.h:71
BOOLEAN Terminating
Definition: smss.h:76
LIST_ENTRY Entry
Definition: smss.h:68
HANDLE PortHandle
Definition: smss.h:72
ULONG ReferenceCount
Definition: smss.h:77
uint32_t * PULONG_PTR
Definition: typedefs.h:65
uint32_t * PULONG
Definition: typedefs.h:59
unsigned char * PBOOLEAN
Definition: typedefs.h:53
#define NTAPI
Definition: typedefs.h:36
#define IN
Definition: typedefs.h:39
uint16_t * PWCHAR
Definition: typedefs.h:56
uint32_t ULONG
Definition: typedefs.h:59
#define OUT
Definition: typedefs.h:40
char * PCHAR
Definition: typedefs.h:51
BOOL Privilege(LPTSTR pszPrivilege, BOOL bEnable)
Definition: user_lib.cpp:531
_Reserved_ PVOID Reserved
Definition: winddi.h:3974
_Out_ PCLIENT_ID ClientId
Definition: kefuncs.h:1151
_Inout_opt_ PVOID Parameter
Definition: rtltypes.h:336