reactos/dll/win32/smdll
Jérôme Gardou 23373acbb9 [CMAKE] Use modules instead of shared libraries
There is no need to compile our DLLs as shared libraries since we are
managing symbols exports and imports through spec files.

On my system, this reduces the configure-time by a factor of two.
2019-04-06 17:43:38 +02:00
..
CMakeLists.txt [CMAKE] Use modules instead of shared libraries 2019-04-06 17:43:38 +02:00
dllmain.c [SMDLL] Use precomp.h in dllmain.c. 2017-12-09 20:47:27 +01:00
precomp.h Git conversion: Make reactos the root directory, move rosapps, rostests, wallpapers into modules, and delete rossubsys. 2017-10-03 07:45:34 +00:00
query.c Git conversion: Make reactos the root directory, move rosapps, rostests, wallpapers into modules, and delete rossubsys. 2017-10-03 07:45:34 +00:00
readme.txt Git conversion: Make reactos the root directory, move rosapps, rostests, wallpapers into modules, and delete rossubsys. 2017-10-03 07:45:34 +00:00
smdll.rc Git conversion: Make reactos the root directory, move rosapps, rostests, wallpapers into modules, and delete rossubsys. 2017-10-03 07:45:34 +00:00
smdll.spec Git conversion: Make reactos the root directory, move rosapps, rostests, wallpapers into modules, and delete rossubsys. 2017-10-03 07:45:34 +00:00

This is SMDLL: a helper library to talk to the ReactOS session manager (SM).

It should be linked in the following components:

a) the SM itself, because it registers for managing native processes
   IMAGE_SUBSYSTEM_NATIVE;

b) environment subsystem servers, because each one should register in
   the SM its own subsystem (willing to manage those processes);

c) terminal emulators for optional subsystems, like posixw32 and os2w32,
   to ask the SM to start the optional subsystem server they need connect to;

d) system and development utilities to debug/query the SM.

2004-02-15 ea


How a subsystem uses these APIs
===============================

Thread #0							Thread #1
- create your own directory (\EXAMPLE)
- create an event E0
- create your call back API port (\EXAMPLE\SbApiPort)
  and serving thread T1
								- wait connection requests on call
								  back port (\EXAMPLE\SbApiPort)
- SmConnectApiPort(
	\EXAMPLE\SbApiPort,
	hSbApiPort,
	SUBSYSTEM_ID,
	& hSmApiPort)
- wait for E0
								- as SM calls back, signal event E0
- create your API port (\EXAMPLE\ApiPort) and
  initialize the subsystem
- call SmCompleteSession (hSmApiPort,
			  hSbApiPort,
			  hApiPort)
- manage processes etc.