reactos/dll/win32/smdll
2017-12-09 20:47:27 +01:00
..
CMakeLists.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
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.