In a native Windows 3.0 environment, a Windows application (client) will broadcast a DDE Initiate message. Windows serially posts a message to every Windows application currently running and then awaits a reply. As described above, the Initiate Conversation message contains the DDE topic to which any Windows application can respond. The client application continues execution when all other applications have serviced the message. At this time, the client application communicates directly with the server applications, as opposed to the initial broadcast message.
OS/2 Version 2.0 provides two applications to support communications between VDMs, without altering the Windows code:
The Windows VDM's resident ServerAgent consists of two parts:
If either the DDEServer or the VDM's ServerAgent is not executing, DDE is not available outside of the VDM. The ServerAgent is automatically started when the Windows VDM is started. When started, DDE is in public mode. To keep it local, simply kill (close) the DDE Interchange Agent. To make it public again, simply start the Interchange Agent once more.
Should the user choose to kill the DDE Interchange Agent, an information message will be displayed indicating that DDE activity will be visible only to the Windows applications executing in the current VDM, discontinuing DDE communication with Presentation Manager applications and other Windows applications.
The ServerAgent is responsible for all routing of DDE messages, including broadcast messages beyond the confines of the VDM to the DDEServer. The ServerAgent communicates with the DDEServer (VDMSRVR.EXE) via named pipes.
Agent applications communicate with Windows applications in their VDM and the ServerAgent executing in their VDM. Only the ServerAgent uses named pipes. Agents send requests to the ServerAgent to be forwarded outside of the VDM.
DDEServer (VDMSRVR.EXE)
The DDEServer is responsible for routing requests from ServerAgents to the appropriate VDMs. The DDE process is schematically represented in Figure "DDE Process between Windows Environments".
The sequence of events for DDE communication between applications running in different WIN-OS/2 VDMs is as follows:
10.
From here on, the two Windows applications communicate through this established path.
Appl. A <-> DDEChildAgent D <-> DDEAgent A <-> DDEServer <-> DDEAgent D <-> DDEChildAgent A <-> Appl. D.
This mechanism isolates all named pipe transactions (Steps 2, 3, 7 and 8) to the DDEAgents and the DDEServer. It also gives the Windows application A the illusion of a point-to-point connection to Windows application D (because it will actually communicate with Windows application D's child agent in the same VDM).
The interprocess communication protocol used between the Windows applications and the DDEAgents is the original and unmodified DDE protocol.
If two Windows applications require significant amounts of DDE, these applications should be executed from within the same MAVDM. In such instances, the ServerAgent and DDEServer applications would not be required, thereby improving performance and usability. Once this is done, the user need only kill (close) the participating DDE Interchange Agent to ensure that all DDE messaging is kept local.