[CLT2012]
[reactos.git] / base / system / smss / smss.h
1 #ifndef _SMSS_H_INCLUDED_
2 #define _SMSS_H_INCLUDED_
3
4 #include <stdio.h>
5 #include <stdlib.h>
6 #define WIN32_NO_STATUS
7 #include <windows.h>
8 #define NTOS_MODE_USER
9 #include <ndk/cmfuncs.h>
10 #include <ndk/exfuncs.h>
11 #include <ndk/iofuncs.h>
12 #include <ndk/lpcfuncs.h>
13 #include <ndk/mmtypes.h>
14 #include <ndk/mmfuncs.h>
15 #include <ndk/obfuncs.h>
16 #include <ndk/psfuncs.h>
17 #include <ndk/rtlfuncs.h>
18 #include <ndk/umfuncs.h>
19
20 #include <sm/api.h>
21 #include <sm/helper.h>
22
23 /* smss.c */
24 extern ULONG SmSsProcessId;
25
26 /* init.c */
27 NTSTATUS InitSessionManager(VOID);
28
29 /* initheap.c */
30 extern HANDLE SmpHeap;
31 NTSTATUS SmCreateHeap(VOID);
32
33 /* initenv.c */
34 extern PWSTR SmSystemEnvironment;
35 NTSTATUS SmCreateEnvironment(VOID);
36 NTSTATUS SmSetEnvironmentVariables(VOID);
37 NTSTATUS SmUpdateEnvironment(VOID);
38
39 /* initobdir.c */
40 NTSTATUS SmCreateObjectDirectories(VOID);
41
42 /* initdosdev.c */
43 NTSTATUS SmInitDosDevices(VOID);
44
45 /* initrun.c */
46 extern HANDLE Children[2];
47 NTSTATUS SmRunBootApplications(VOID);
48
49 /* initmv.c */
50 NTSTATUS SmProcessFileRenameList(VOID);
51
52 /* initwkdll.c */
53 NTSTATUS SmLoadKnownDlls(VOID);
54
55 /* initpage.c */
56 NTSTATUS SmCreatePagingFiles(VOID);
57
58 /* initreg.c */
59 NTSTATUS SmInitializeRegistry(VOID);
60
61 /* initss.c */
62 NTSTATUS NTAPI SmRegisterInternalSubsystem(LPWSTR,USHORT,PHANDLE);
63 NTSTATUS SmLoadSubsystems(VOID);
64
65 /* smapi.c */
66 #define SMAPI(n) \
67 NTSTATUS FASTCALL n (PSM_PORT_MESSAGE Request)
68 PSM_CONNECT_DATA FASTCALL SmpGetConnectData (PSM_PORT_MESSAGE);
69 NTSTATUS SmCreateApiPort(VOID);
70 VOID NTAPI SmpApiThread(PVOID);
71
72
73 /* smapiexec.c */
74 #define SM_CREATE_FLAG_WAIT 0x01
75 #define SM_CREATE_FLAG_RESERVE_1MB 0x02
76 NTSTATUS NTAPI SmCreateUserProcess(LPWSTR ImagePath,
77 LPWSTR CommandLine,
78 ULONG Flags,
79 PLARGE_INTEGER Timeout OPTIONAL,
80 PRTL_USER_PROCESS_INFORMATION UserProcessInfo OPTIONAL);
81 NTSTATUS FASTCALL SmExecPgm(PSM_PORT_MESSAGE);
82
83 /* smapicomp.c */
84 NTSTATUS FASTCALL SmCompSes(PSM_PORT_MESSAGE);
85
86 /* smapiquery.c */
87 NTSTATUS FASTCALL SmQryInfo(PSM_PORT_MESSAGE);
88
89 /* client.c */
90 #define SM_CLIENT_FLAG_CANDIDATE 0x8000
91 #define SM_CLIENT_FLAG_INITIALIZED 0x0001
92 #define SM_CLIENT_FLAG_REQUIRED 0x0002
93 typedef struct _SM_CLIENT_DATA
94 {
95 RTL_CRITICAL_SECTION Lock;
96 WCHAR ProgramName [SM_SB_NAME_MAX_LENGTH];
97 USHORT SubsystemId;
98 WORD Flags;
99 WORD Unused;
100 ULONG ServerProcessId;
101 HANDLE ServerProcess;
102 HANDLE ApiPort;
103 HANDLE ApiPortThread;
104 HANDLE SbApiPort;
105 WCHAR SbApiPortName [SM_SB_NAME_MAX_LENGTH];
106
107 } SM_CLIENT_DATA, *PSM_CLIENT_DATA;
108 NTSTATUS SmInitializeClientManagement (VOID);
109 NTSTATUS NTAPI SmCreateClient (PRTL_USER_PROCESS_INFORMATION,PWSTR);
110 NTSTATUS NTAPI SmDestroyClient (ULONG);
111 NTSTATUS NTAPI SmBeginClientInitialization (PSM_PORT_MESSAGE,PSM_CLIENT_DATA*);
112 NTSTATUS NTAPI SmCompleteClientInitialization (ULONG);
113 NTSTATUS FASTCALL SmGetClientBasicInformation (PSM_BASIC_INFORMATION);
114 NTSTATUS FASTCALL SmGetSubSystemInformation (PSM_SUBSYSTEM_INFORMATION);
115
116 /* debug.c */
117 extern HANDLE DbgSsApiPort;
118 extern HANDLE DbgUiApiPort;
119 NTSTATUS SmInitializeDbgSs(VOID);
120
121 /* print.c */
122 VOID NTAPI DisplayString(LPCWSTR lpwString);
123 VOID NTAPI PrintString (char* fmt, ...);
124
125 #endif /* _SMSS_H_INCLUDED_ */
126
127 /* EOF */
128