README.TXT

Sample Server Messaging Host 


The Remote.Srv sample serves as the server based message repository
for MAPI 1.0 transports that handle the Windows Developer Supprt (WINDS)
address type. This program simulates a foreign messaging system.
WINDS also acts as the server host for address book with a global address list.
The global address list is the list of recipients in the WINDS host. Since
WINDS supports gateways, foreign message recipients appear in the user
directories of the gateways currently installed.

Requirements
------------

To build this program you must have:

Windows NT 3.5 (or later),
Microsoft Visual C++ version 2.0 (or later) or the Win32 SDK tools.

This sample uses RPC over named pipes to establish connections with remote
clients.

Building the Sample Code
------------------------

This sample runs under Windows NT 3.5x on Intel x86, MIPS R4xxx and Digital
AXP platforms.

If you are using Microsoft Visual C++, update the project file dependencies
as soon as the files are copied to your machine. Use the PROJECTS.UPDATE
DEPENDENCIES options in the Developer Studio.

This sample was developed using Microsoft Visual C++ 2.x. The associated
makefile is WINDSSRV.MAK for the service component and WINDSADM for the
remote administrator component. Traces can be enabled for Release builds by
defining ENABLE_DEBUG_OUTPUT in the preprocessor symbols define in the
project settings menu.

A command-line compiler-independent makefile has been provided for users
of command-line tools. The command line tool will, by default build a
DEBUG version of both components. If NODEBUG is defined, a RELEASE version
of the both components will be built.

Usage
-----

There are two pieces for the WINDS server sample. The WINDS service component
and the WINDS administrator component.

WINDS Service Installation
--------------------------

The WINDS service performs the actual processing. It can be run on a
Windows NT machine on any platform. To install the service, simply run the
built executable from the command line with the INSTALL option:

C:\SAMPLES\MAPI\WINDS> WINDSSRV INSTALL

This will add the service to the registry and start the service immediately.
Note that you must be in the directory where the service executable is.

To stop and remove the server from the system use the REMOVE option:

C:\SAMPLES\MAPI\WINDS> WINDSSRV REMOVE

If the service is run without parameters, a window will come up for
interactive configuration (install and removal).

The WINDS service supports interaction with the Services Applet in the
control panel so it can be started, stopped, paused, resumed, and queried
using the standard UI.

Once the WINDS Service is installed, it can run unattended, even when no one
is logged into the Windows NT machine.

The service does not expose any UI for normal interaction and administration.
All of this is done through the WINDS Administrator program (explained below),
either by running it on the same machine where the WINDS service is running
or across the network.

WINDS Administrator
-------------------

Some of the menu items and property pages maybe grayed out because they have
not been implemented yet.

The WINDS administrator is a program that can be run on the same machine
where the WINDS service is running or across the network.

The administrator can be run on Windows NT (workstation or server) or from
Windows 95. The executable is single binary for all Intel Win32 platfoms,
so there is no need to rebuild it for Windows 95 once built for Windows NT
or vice versa.

The administrator is a graphical interface to the data stored in the WINDS
Server. Through this program, you can create and control the list of user
mailboxes, distribution lists, and public folders. You can also manage the
gateways and do other administrative tasks on the WINDS server, remotely,
through a graphical interface.

Debug Traces and Asserts
------------------------

This sample uses several output debug string functions in the Win32
environment to avoid attaching the DLL to any debugger. By default, the trace
messages are output to a debug terminal attached to COM1 with settings at
9600, N, 8, 1. The debug messages can also be written to a log file whose
default location is C:\MAPILOG.TXT. The file TRACES.CPP defines some macros
that can be easily modified for different communications settings, output
port, and log file name. It also implements a macro (ASSERT) and function that
test the validity of a given statement. If the assertion fails, the
user/developer has the opportunity to break into the debugger at the exact
point where the assertion occurred.

The debug routines are found in the TRACES.CPP and TRACES.H files.

To enable the TRACExx functions in the TRACES.CPP files, define the
ENABLE_DEBUG_OUTPUT macro during compilation. These functions work in DEBUG
or RELEASE builds. You can only enable/disable traces at compile time
through ENABLE_DEBUG_OUTPUT. There is no run time switch to enable or
disable the traces.

TRACES.CPP implements an ASSERT macro which evaluates an expression
expecting a TRUE result, i.e. ASSERT (expression) will interrupt execution
if the expression is NOT TRUE (non-zero).

The ASSERT macro displays the line and source code file name where the
assertion failed and writes the result to a debug trace. The assert
information is also written to the log file.

By default, if an assertion fails, a dialog will come up and interrupt
execution until a selection is made to break into the debugger or ignore the
assertion.