EXHIBIT 10.10
License and Consulting Agreement between the Registrant and Microsoft
Corporation, dated October 3, 1991, as amended
MICROSOFT CORPORATION
LICENSE AND CONSULTING AGREEMENT
This License and Consulting Agreement ("Agreement") is made and entered
into as of the later of the two dates on the signature page by and between
WONDERWARE, INC. ("COMPANY"), a California corporation, and MICROSOFT
CORPORATION ("MS"), a Delaware corporation.
In consideration of the covenants and conditions hereinafter set forth,
MS and COMPANY agree as follows:
1. License.
1.1 Licensed Software. COMPANY hereby grants to MS a nonexclusive,
worldwide, fully paid, perpetual, irrevocable license (a) to use,
modify, create derivative works based upon, reproduce, distribute
or license, or sell, rent or lease copies of, the software
described on Exhibit A ("the Licensed Software") as part of or in
conjunction with MS products, in source and object code forms, and
derivative works thereof, and (b) to license third parties to
exercise the foregoing rights, including the right to license such
rights to further third parties. The foregoing license grant
includes a license under any patents owned or licensable by
COMPANY at any time during the term of this Agreement (I) to the
extent necessary to exercise any license right granted herein, or
(ii) to combine the Licensed Software or derivative works thereof
with equipment. The foregoing license grant shall include all
COMPANY test software for Licensed Software, provided that such
test software shall be used by MS and its licensees internally
only. The Licensed Software shall conform to the specifications
attached as Exhibit A. The above restriction that the Licensed
Software be distributed or licensed "as part of or in conjunction
with MS products" shall not apply to International Business
Machines, Inc. and its subsidiaries ("IBM").
1.2 MS Derivative Works. MS hereby grants to COMPANY a
nonexclusive, worldwide, fully paid, perpetual, irrevocable
license to:
(A)use and modify dervative works of Licensed Software
developed by MS eighteen (18) months after MS' first
commercial shipment of Licensed Software (" MS First Cycle
Derivative Works") in source and object code forms for the
purpose of maintaining compatability between Licensed
Software and MS First Cycle Derivative Works: and
(B)reproduce, distribute or license, or sell, rent or lease
copies of MS First Cycle Derivative Works in object code
form.
COMPANY may not use MS' name in connection with MS Derivative Works or
otherwise, and shall not make any statements to the effect that the MS
Derivative Works are "certified", "guaranteed" or the like by MS.
1.3 Compatibility.
(A)With respect to MS' initial release of Licensed Product,
MS and COMPANY shall agree upon joint specifications for
(1) wire protocol and (2) Network Interface DLL API
(currently defined in Appendix A). In the event that the
parties are unable to agree to such joint specifications,
either party may terminate this Agreement without
obligation for further payment.
(B)MS shall use reasonable best efforts to provide COMPANY
with specifications of derivative works of Licensed
Software developed by MS for a period of five (5) years
after MS' first commercial shipment of Licensed Software,
and at MS' sole discretion, pre-release copies thereof,
for COMPANY's use to maintain compatibility between
Licensed Software and such derivative works thereof.
1.4 Competing Products.
In partial considerations for MS'
license rights above, MS agrees that for a period of one
(1) year after MS' first commercial shipment of Licensed
Software or a derivative thereof, it will not distribute
any derivative works of Licensed Software for exclusive
use in HP-UX and DEC VMS environments. MS further agrees
that in the event it will not distribute any derivative
works of Licensed Software for TCP, Serial and SPX/IPX
mechanisms until September 30, 1992, and thereafter it
will give COMPANY sixty (60) days notice of its intent to
do so. MS further agrees that it will not release
specifications for Network Interface DLL API (see Exhibit
A) until the earlier of January 1, 1992 or the date of MS'
first commercial shipment of Licensed Software or a
derivative thereof. MS agrees to give COMPANY ninety (90)
days notice of its first commercial shipment of Licensed
Software.
1.5 "Buyout" for Distribution of TCP, Serial and SPX/IPX
Mechanisms. Notwithstanding Section 1.4 above, MS, at
its option, may either:
(1)extend its license rights in Section 1.1 to
Licensed Software for TCP, Serial and SPX/IPX
mechanisms developed by COMPANY (at which time
"Licensed Software" shall be deemed to include
such mechanisms) or
(2)distribute TCP, Serial and SPX/IPX mechanisms
developed by MS or a third party. In such case,
MS shall pay COMPANY the applicable amount listed
below:
Date of MS' first commercial TCP, Serial, SPX/IPX licensed TCP, Serial, SPX/IPX developed by
shipment of Licensed Software for from COMPANY MS or third party
TCP, Serial and SPX/IPX
---------------------- ---------------------- ----------------------
before June 30, 1992 100,000 100,000
before July 31, 1992 80,000 80,000
before August 31, 1992 60,000 60,000
before September 30, 1992 50,000 50,000
after September 30, 1992 50,000 0
2. Delivery Schedule. COMPANY shall complete and deliver the Licensed
Software to MS on or before September 23, 1991.
MS shall evaluate the Licensed Software and shall submit a written
acceptance or notice of nonconformities to COMPANY within ninety (90) days after
MS' receipt of the Licensed Software, in a default of which the Licensed
Software shall be deemed accepted. Successful execution of Licensed Software
with MS development tools, as determined by MS, shall solely determine MS' right
to accept or reject the Licensed Software. The Licensed Software shall be deemed
accepted if MS ships the same to a customer for revenue. If rejected, COMPANY
shall promptly correct the Licensed Software. If COMPANY fails to correct the
Licensed Software within fifteen (15) days after notice of rejection, MS may
terminate this Agreement with no further obligation to COMPANY or may extend the
correction period, at its option.
3. Payment. MS shall pay COMPANY up to One Hundred Twenty-Five Thousand
Dollars ($125,000.00) and MS shall provide COMPANY with Twenty-Five
Thousand Dollars (US$25,000.00) worth of MS products and/or services as
selected by COMPANY, as a one-time, fully paid royalty for the Licensed
Software as follows:
Payment Event Amount
Signing this Agreement $10,000
Delivery of Licensed Software $40,000
Agreement for Joint Specifications for $40,000 +
MS initial release of Licensed $25,000 of MS
Software products/services
First shipment of Licensed Software for
revenue by MS $35,000
4. Maintenance. COMPANY shall provide MS with corrections and enhancements to
the Licensed Software, at no additional charge, for a period of one (1)
year ("Maintenance Period") after MS' final acceptance of the Licensed
Software. Such corrections or enhancements shall be provided to MS in beta
and final forms, and no later than they are provided to any other
customers. During the Maintenance Period COMPANY shall use reasonable best
efforts to correct all errors or defects in the Licensed Software reported
by MS promptly (but no later than twenty (20) days ) after notice of errors
or defects from MS. COMPANY shall provide MS with reasonable assistance
when errors or defects are attributed to derivative works of Licensed
Software rather than to Licensed Software itself.
5. Non-Disclosure; Press Release .
(a) COMPANY expressly undertakes to retain in confidence all
information and know-how transmitted to COMPANY by MS that MS has
designated as proprietary and/or confidential or that, by the
nature of the circumstances surrounding the disclosure, ought in
good faith to be treated as proprietary and/or confidential, and
will make no use of such information and know-how except under the
terms and during the existence of this Agreement COMPANY's
obligation under this section 5 with respect to any particular
information shall extend to the earlier of such time as the
information is in the public domain through no fault of COMPANY or
ten (10) years following its receipt by COMPANY.
(b) At the earlier of such time that MS first discloses to any
customer that MS has licensed the Licensed Software or January 31,
1992, COMPANY may thereafter inform its customers that COMPANY has
licensed the Licensed Software to MS. MS shall notify COMPANY
prior to MS' initial disclosure to any customer. Prior to MS'
first commercial shipment of Licensed Software, all disclosures by
MS and COMPANY to its customers shall be pursuant to
non-disclosure agreements.
(c) Upon MS' first shipment of Licensed Software in any form by MS to
a customer, MS and COMPANY shall issue a joint press release
announcing the licensing of Licensed Software to MS, the content
of which shall be agreed upon by the parties.
6. COMPANY Warranties. COMPANY warrants that:
(a) The Licensed Software as delivered to MS does not infringe any
copyright, patent, trade secret, or other proprietary right held
by any third party; and
(b) The Licensed Software will meet the specifications listed in
Exhibit A of this Agreement.
7. Indemnity.
(a) COMPANY agrees to indemnify, defend, and hold MS and its
successors, officers, directors and employees harmless from any
and all actions, causes of action, claims, demands, costs,
liabilities, expenses and damages arising out of or in connection
with any claim which, if true, would constitute a breach of
COMPANY's warranty under Section 6(a).
(b) If any action shall be brought against MS in respect to which
indemnity may be sought from COMPANY pursuant to the provisions of
this Section, MS shall promptly notify COMPANY in writing,
specifying the nature of the action and the total monetary amount
sought or other such relief as is sought therein. MS shall
cooperate with COMPANY at COMPANY's expense in all reasonable
respects in connection with the defense of any such action.
COMPANY may upon written notice thereof to MS undertake to conduct
all proceedings or negotiations in connection therewith, assume
the defense thereof, and if it so undertakes, it shall also
undertake all other required steps or proceedings to settle or
defend any such action, including the employment of counsel which
shall be satisfactory to MS, and payment of all expenses. Ms shall
have the right to employ separate counsel and participate in the
defense thereof. COMPANY shall reimburse MS upon demand for any
payments made or loss suffered by it at any time after the date
hereof, based upon the judgment of any court of competent
jurisdiction or pursuant to a bona fide compromise or settlement
of claims, demands, or actions, in respect to any damages to which
the foregoing relates.
(c) If the Licensed Software furnished hereunder is in any action held
to constitute an infringement and its use is enjoined, COMPANY
shall immediately and at its expense:
(i) procure for MS the right to continue to license the
Licensed Software as provided in Section 1; or (ii) replace
or modify the Licensed Software with a version of the
Licensed Software that is non-infringing.
If (i) or (ii) are not available to COMPANY, and without limiting
MS' other remedies, COMPANY shall refund MS all amounts paid to
COMPANY by MS hereunder.
(d) This Section 7 shall survive any termination or expiration of this
Agreement.
8. Termination. If the Licensed Software is not delivered on the due date(s)
specified above, or if the Licensed Software does not meet the
specifications in Exhibit A, MS may, at its option and upon written notice
to COMPANY, terminate this Agreement and obtain a full refund of any
amounts paid hereunder.
9. Notices and Requests.
All notices and requests in connection with this Agreement shall be
deemed given as of the day they are received either by messenger, delivery
service, or in the United States of America mails, postage prepaid,
certified or registered, return receipt requested, addressed as follows:
COMPANY: WONDERWARE, INC.
===================
Attention: ___________________
MS: MICROSOFT CORPORATION
Xxx Xxxxxxxxx Xxx
Xxxxxxx, XX 00000-0000
Attention: _________________________
with a copy to: MICROSOFT CORPORATION
Xxx Xxxxxxxxx Xxx
Xxxxxxx, XX 00000-0000
Attention: Law & Corporate Affairs
or to such other address as the party to receive the notice or request
so designates by written notice to the other.
10. Miscellaneous.
(a) COMPANY is an independent licensor and contractor for MS, and
nothing in this Agreement shall be construed as creating an
employer-employee relationship, a partnership, or a joint venture
between the parties.
(b) This Agreement shall be governed by the laws of the State of
Washington and COMPANY consents to jurisdiction and venue in the
state and federal courts sitting in the State of Washington. In
any action or suit to enforce any right or remedy under this
Agreement or to interpret any provision of this Agreement, the
prevailing party shall be entitled to recover its costs, including
reasonable attorneys' fees.
(c) This Agreement does not constitute an offer by MS and it shall not
be effective until signed by both parties. This Agreement
constitutes the entire agreement between the parties with respect
to the Licensed Software and all other subject matter hereof and
merge all prior and contemporaneous communications. It shall not
be modified except by a written agreement dated subsequent to the
date of this Agreement and signed on behalf of COMPANY and MS by
their respective duly authorized representatives.
(d) This Agreement may be assigned by MS but shall not be assigned by
COMPANY without MS' prior written approval. Except as otherwise
provided, this Agreement shall be binding upon and inure to the
benefit of the parties' successors and lawful assigns.
WONDERWARE SOFTWARE
MICROSOFT CORPORATION DEVELOPMENT, INC.
One Microsoft Way 16 Technology Dr.
Redmond, WA 98052-6399 Xxxxxx, XX 00000
Xxxxxx X. Xxxxxxx Xxxxxx X. Xxxxx
Senior Vice President President, CEO
October 3, 1991 October 2, 1991
00-0000000
COMPANY's Federal
Employer ID number or
Social Security number
Exhibit A
LICENSED SOFTWARE SPECIFICATIONS
The Licensed Software shall contain the following features and perform in
accordance with the following specifications:
Appendix A
NetDDE for Windows
Overview
This document describes the functional end user behavior that NetDDE for Windows
supplies.
Microsoft's Dynamic Data Exchange (DDE) protocol is normally limited to
exchanging data between applications running in a single environment on a single
machine. By using NetDDE for Windows the functionality of DDE is extended to
include communication with multiple applications over different networks between
similar or different operating environments. This allows applications to
exchange information dynamically even if they are running on different machines
and different network interfaces.
DDE is the acronym for Dynamic Data Exchange. DDE is a complete communication
protocol designed by Microsoft to allow applications in the Windows environment
to send/receive data and instructions to/from each other. It implements a
client-server relationship between two concurrently running applications. The
server application provides the data and accepts requests from any other
application interested in its data. Requesting applications are called clients.
Some applications (e.g. InTouch, Excel, etc.) can simultaneously be both a
client and server.
To obtain data from another application, the client program opens a conversation
to the server application by specifying three things: the server application
name, the topic name and the specific item name. For example, in the case of
Excel, the application name is "Excel", the topic name is the name of the
specific spreadsheet that contains the data and the item name is the specific
cell on the spreadsheet.
When a client application sets up a conversation to another DDE program, it
requests the server application to advise the client whenever a specific item's
value changes. These data links remain active until either the client or server
program terminates the conversation. This is a very efficient means of
exchanging data because once the conversation has been established, no
communication occurs until the specified data value changes. Additionally,
clients can perform one-time requests, change data values in the server and
cause commands to be executed in the server, all via DDE.
Hardware and Networks Supported
NetDDE for Windows supports the following hardware:
IBM PC's and compatibles running Windows
Reserving Onboard Memory
If the NetDDE for Windows program will be used in Windows 386 Enhanced Mode.
Windows must be prevented from trying to manage the memory on the network card.
A range of memory addresses that are not used by any other devices must be
identified in the computer. The range size depends on the network card. The
following address ranges are typical; but PC-compatibles vary. The best
candidate is indicated by an asterisk (*).
Memory Range Typical Use
0000-A000 System memory; do not use.
A000-B000 Graphic video display memory; do not use
B000-B800 Monochrome display memory; okay to use if using a
color-only system.
B800-C000 Color display memory; okay to use if using a
monochrome- only system.
C000-C400 EGA BIOS; do not use if display controller is EGA.
C000-C800 VGA BIOS; do not use if display controller is VGA.
C800-D000 Sometimes used by video cards. Use with caution.
D000-E000 Usually available. Be sure to avoid conflicts with other
cards such as network adapters.
E000-F000 Sometimes used by system BIOS; use with caution.
F000-FFFF System BIOS; do not use.
The chosen memory address should be set in the switches on the network card. The
memory is reserved by modifying the SYSTEM.INI file as described below. (The
SYSTEM.INI file is located in the same directory as Microsoft Windows.)
Using a text editor program, open the file SYSTEM.INI and locate the 386
Enhanced section which is indicated by a line containing only [386Enh]. If there
is no such section, add it to the end of the file and enter the following
EMMExclude statement:
[386Enh]
EMMExclude=A000-EFFF
Installing NetDDE for Windows
The NetDDE for Windows program is installed by running the INSTALL.EXE program
contained on the distribution disk as follows:
1. Start Windows
2. Insert the NetDDE for Windows program disk into the appropriate drive.
3. From the Windows Program Manager invoke the /File/Run command.
The following dialog box will appear:
[GRAPHIC OMITTED, Sample of Screen View]
4. Enter A:\INSTALL or B:INSTALL (according to the drive being used) and click
on OK or press the (Enter) key. The following dialog box will appear:
[GRAPHIC OMITTED, Sample of Screen View]
5. To install the program in the default directory, C:\INTOUCH, click on OK.
To install the program in a different directory, enter the pathname for the
directory and then click on OK.
To automatically start up the NetDDE for Windows program when Windows is
started, enter the actual program name in the "load line" in the WIN.INI file;
load=NETDDE.
Running NetDDE for Windows
Start NetDDE for Windows by double-clicking on its icon or by invoking the
/File/Run.. command from the Windows Program Manager and entering NetDDE.
Each node on the network must have a unique network name defined for it.
Therefore, the first time NetDDE for Windows is run, the following dialog box
will automatically appear:
[GRAPHIC OMITTED, Sample of Screen View]
Enter a name for the local node and click on OK. Note: All nodes on the network
must have unique names.
The "Network Interface Selection" dialog box will appear:
[GRAPHIC OMITTED, Sample of Screen View]
Select the network interface(s) which are to be available for the local computer
and click on OK. A confirmation message box will appear noting the addition,
click on OK. Note: Only NetBIOS is supported.
The NetDDE for Windows Program Window
Once the node has been named and the network interface(s) has been selected, the
NetDDE for Windows program window will appear. The connection information
displayed in the window will depend upon the options enabled in the /Display
menu:
[ GRAPHIC OMITTED, Sample of Screen View ]
If all connection information options are enabled, the window will be displayed
as follows:
[ GRAPHIC OMITTED, Sample of Screen View ]
The following describes each connection information box:
Direct Connections
Layer - Network interface through which the connection is being made. Node -
Name of the remote node to which the local node is connected.
Status - Current state of the NetDDE connection.
Network Routes
Source - A node name will appear in this area if the local computer is being
used as a hop in a route being used by another node. Otherwise.[Local] will be
displayed.
Dest - A node name will appear in this area. Status - Current state of the
network connection.
DDE Routes
Type - The DDE route type; Local -> Net, Net ->Local or Local->Local. Status -
Current state of the network connection.
Conversations
Conversation - The remote \\nodename\application (client) initiating the DDE
conversation to the local \\nodename\application\topic (server) via NetDDE.
Status - Current state of the DDE conversation.
Once a connection has been established, data regarding the connection will be
displayed in the window as shown in the example below. Enabling the
/Display/Stastics option will cause Sent and Rcvd fields to appear in the
window. These fields will display the number of packets sent and received. For
example:
[GRAPHIC OMITTED, Sample of Screen View]
If none of the /Display options are enabled, the window will appear as follows:
[GRAPHIC OMITTED, Sample of Screen View]
Configuring NetDDE for Windows
When NetDDE is installed, the `NETDDE.INI' file is automatically created in the
Windows default directory and is read by the NetDDE for Windows program when it
is started to determine its operating parameters. Note: The operating parameters
saved in this file should not be edited manually by the user.
The /Configure menu contains the commands which are used to modify and/or setup
the NetDDE for Windows program's operating parameters:
[GRAPHIC OMITTED, Sample of Screen View]
The following pages describe each /Configure menu command.
Node Name ...Command
This command is used to change the name currently assigned to the local node. If
the node name is changed, the following self-explanatory message box appears:
[GRAPHIC OMITTED, Sample of Screen View]
Note: The first time the NetDDE for Windows program is started up, the user must
enter a name for the node in order to run the program (as previously described
in the Running NetDDE for Windows section).
Routing Information ... Command
This command is used to setup and/or edit the routing.csv file which stores all
routes to remote nodes to be used by the local node. (Refer to The Routing
Information File section for complete details on setting up this file.)
Preferences... Command
Invoking this command will cause the ".CSV Editor" dialog box to appear:
[GRAPHIC OMITTED, Sample of Screen View]
This dialog box is used to designate the program (default is "Notepad") to be
used as the editor for the node's Routing Information and Security Information
files. To specify another program to be used for the editor, enter that
program's name (e.g., Excel) and click on OK.
Security Information ... Command
This command is used to setup and/or edit the security.csv file which stores all
security access data for the local node. (Refer to The Security Information File
section for complete details on setting up this file.)
Network Interfaces ... Command
This command is used to set the network interface(s) default and to add/modify
the interface(s) available for the local node. When the command is invoked, the
"Network Interface Selection" dialog box will appear:
[GRAPHIC OMITTED, Sample of Screen View]
Note: The first time the NetDDE for Windows program is started up, the user must
select the default network interface in order to run the program. Only NetBIOS
is supported.
Configuring the NetBIOS Network Interface
The NetBIOS Parameters command is used to configure the operating parameters for
the NetBIOS network interface. It is recommended that these parameters be the
same on all nodes to which connections may be made. (These parameters are saved
in the NETDDE.INI file in the Windows directory and are read by the NetDDE for
Windows program each time it is run.) Invoking this command will cause the
"NetBIOS Configuration Parameters" dialog box to appear:
[GRAPHIC OMITTED, Sample of Screen View]
The following describes each field in this dialog box:
Packet Size
The Default packet size (in bytes) used to communicate with other NetDDE nodes
via NetBIOS.
Max Unack Pkts
The maximum number of outstanding packets that will be permitted.
Timeouts
Receive connect Cmd
The number of seconds NetDDE for Windows will wait from the initial connection
to this node to receive the initial connect packet from the remote node.
Receive Connect Rsp
The number of seconds NetDDE for Windows will wait from when it sent the initial
connect packet to when it receives the initial connect response packet.
Memory Pause
The number of seconds to wait before retrying to transmit a DDE message which
the remote node did not have enough memory to initially receive.
No Response
The number of seconds to wait for the remote node to acknowledge a packet sent.
When this timeout expires, the packet is retransmitted.
Keep Alive
If there is no DDE activity being conducted, this is the frequency (in seconds)
an inquiry will be sent to the remote node to see if the connection is still
alive.
Stuck Xmit
The number of seconds NetDDE for Windows will wait for the NetBios session to
allow more information to be sent. When this timeout is exceeded, the connection
is closed.
Retry Limits
Transmission Errors
The consecutive number of times NetDDE for Windows will tolerate the remote node
indicating that it received a packet with a checksum or CRC error. If this limit
is exceeded, the connection is closed.
Out-of-Memory Errors
The number of times NetDDE for Windows will retry to send a DDE message when the
remote node does not have enough memory for it. If this limit is exceeded, the
connection is closed.
No Response Errors
The number of times NetDDE for Windows will attempt to send a DDE message when
there is no response from the remote node. If this limit is exceeded, the
connection is closed.
Validation Method
Select the option for controlling the method of valid packet verification
between NetDDE nodes. A value of 1 uses CRC, a value of 2 uses 32-bit checksum.
(The validation method can be different on each node.)
The Routing Information File
NetDDE has the capability of directly connecting nodes which reside on the same
network interface or establishing routes over different operating networks.
Establishing these routes serves two purposes; bridging multiple networks and
providing the capability for dial-in support from laptops. To accomplish this, a
Routing Information File is setup on each node to store the routes it will use.
Note: If using just LAN, routes are not necessary. NetDDE uses a CSV (comma
separated variable) file format, generally named routing.csv. The format of a
route in the routing.csv file is as follows:
ToNode,/NetworkInterface(Node)+[/NetworkInterface(Node)],CloseRoute,Seconds
The ToNode is the name of the node to which the route relates. The
/NetworkInterface(Node) + /NetworkInterface(Node) sections are each called a
hop. A hop tells NetDDE the network interface and node on that network to which
the connection must be made to get to the desired node. /NetworkInterface(Node)
is the generic term for a fully qualified hop. There is no limit to the number
of hops for a route. However, the total string length must be 512 characters or
less. The following lists examples of fully qualified hops and their
descriptions:
/netbios(Xxxxx) Use NetBIOS to connect to Xxxxx
Fully qualified hops are not always required.
To setup and/or edit the Routing Information File invoke the /Configure/Routing
Information command. Invoking this command will cause the ".CSV file for Routing
Information" dialog box to appear:
[GRAPHIC OMITTED, Sample of Screen View]
When this dialog box appears, the default directory and filename (routing.csv)
will be displayed in the .CSV File: field. To save the file under a different
name or in a different directory, enter the new directory and filename here.
Note: The file must be saved with the .csv extension.
By default, NetDDE for Windows is setup to automatically close all network
connection routes which are not used for 30 seconds. (The default number of
seconds can be increased or decreased, as required.) To disable this function
(which changes the default) for all network routes, deselect the Close Route
when not in use checkbox.
The number of seconds and the closing of a specific network route to a specific
node, can be controlled by entries made in the local node's Routing Information
File. To control the closing, a 1 (to close) or a 0 (not to close) is entered
following the NetworkInterface portion of the node's route. To control the
number of seconds, enter the desired amount following the closing data. In the
following example. the network route from "Rich" to "Phil" will automatically be
closed (indicated by the "1" following the Network Interface) after 45 seconds.
Phil./netbios(Xxxx)+/netbios(Rich),1,45
Note: If the closing and/or seconds information is not included in the route,
the default settings are used.
To edit the Routing Information file, click on the Edit button. If this is the
first time the Routing Information file is being edited, the following message
box will appear:
[GRAPHIC OMITTED, Sample of Screen View]
Note: By default the file will automatically be created using the "Notepad"
program unless another program is designated to be used as the editor via the
/Configure/Preferences command (previously described).
Click on Yes to open "Notepad" and create the routing.csv file
The Security Information File
When a DDE client attemps to establish a conversation with the local node
(server), NetDDE for Windows knows what remote node/application is trying to
establish the conversation and the application/topic to which the client is
trying to connect. The Security Information File is setup to control access to
the DDE-available data on the local node. It proves the user with the ability to
prevent specific nodes from gaining access to a specific application and/or
topic. NetDDE uses a CSV (comma separated variable) file format, generally named
security.csv to implement this security. The format of each line in the.
Security.csv file is as follows:
ToApp,ToTopic,FromNode,FromApp,Allow?,StartApp?,CommandToRun
where: To App is the name of the application on the server to be accessed.
ToTopic is the topic within the ToApplication to be accessed.
FromNode the client initiating the DDE Conversation.
FromApp the name of the application on the remote node attempting to
connect to the application on the local node.
Allow? a flag to indicate whether or not the client is allowed to
access to the application/topic
StartApp? A flag to indicate whether or not the client is allowed to
start the application (if currently not running) on the server.
CommandToRun (optional) a command can be entered, that is run when
NetDDE initiates the DDE conversation.
NetDDE for Windows will read the security file in order (from top to bottom) for
a line that matches the intended DDE conversation. The first four fields in each
line are used to find the match.
For example, let's assume we have an Excel spreadsheet (receipe1.xls) that we
only want one remote node (Phil) to have access to regardless of what
application he is running. We also only want to allow Xxxxx to have access from
the Wonderware InTouch View application. All other Excel spreadsheets we will
allow everyone to access. If we use the Excel as the editor, our Security
Information File would be set up as follows:
[GRAPHIC OMITTED, Sample of Screen View]
When "Phil" attempts to connect to excellreceipe1.xls. the first line in the
matches and the conversation would be permitted. When "Xxxxx" tries to connect
to excellreceipe1.xls. if he is using the View application, the second line
matches and the conversation would be permitted. If the application on "Xxxxx"
were the other than View, the third line matches and the conversation would be
rejected because the Allow? field is set to "0" (do not allow). Note: Since
asterisks (*) can be used to match all, there is complete flexibility for
setting up security.
To setup the Security Information File invoke the /Configure/Security
Information command. Invoking this command will cause the ".CSV file for
Security Information" dialog box to appear:
[GRAPHIC OMITTED, Sample of Screen View]
Whe this dialog box appears the default directory and filename for the Security
file will be displayed in the .CSV File field. To save the file in a different
directory or under a different name, enter the new directory and filename here.
Note: The file must be saved with the .csv extension.
By default, NetDDE for Windows is setup to automatically Allow Conversations
with the local node from all remote nodes. Tp prevent all remote nodes from
establishing DDE conversations with the local node, deselect this checkbox.
Through entries made in the Security Information File, a specific remote node
can be prevented from establishing any DDE conversation with the local node or a
DDE conversation to a specific application.
For example, if "Xxx" is not permitted to establish a DDE conversation with
Excel on the local node, "excel,*,xxx,*,0" would be entered in the Security
Information File.
Selecting the checkbox for the Start Applications when initiate fails option
will allow applications on the local node to automatically be started (if not
currently running) whenever a remote node initiates a DDE conversation to that
applciation. (The default is "application/topic".
If a conversation is permitted via the Security Information File, NetDDE will
try to initiate the conversation. If the Initiate fails, NetDDE consults the
StartApp? and CommandToRun options. If StartApp? is set to "1", NetDDE will
start the appliciation and try the initiate. A specific remote node can be
prevented from starting all or specific applications on the local node by
entering a "0" in the StartApp? Field in the Security Information File.
For example, if "Xxxx" is permitted to establish a DDE conversation with Excel
and is allowed to startup Excel if it is not running on the local node,
"excel,*,Xxxx,1,1" would be entered in the Security Information File. Also, if
an entry exists in the CommandToRun field, that command will be run and then
NetDDE will try to initiate the conversation. In the following example, Excel
will be started and will load resume.xlw then the initiate will be retried.
Excel,receipe1.xls,Xxxx,*,1,1,excel resume.xlw
To edit the Security file, click on the Edit button. If this is the first time
the Security file is being edited, the following message box will appear:
[GRAPHIC OMITTED, Sample of Screen View]
Note: By default, the file will automatically be created using the "Notepad"
program unless another program is designated to be used as the editor via the
/Configure/Preferences command (previously described) Click on Yes to cause
NetDDE to create the security.csv file.
If "Notepad" is used for the editor, the Security Information File should be
setup as shown in the following example:
[GRAPHIC OMITTED, Sample of Screen View]
Security Guidelines
In general, it is recommended that the last line in the security.csv file
contain asterisks (*) for the first four fields and then the default processing
for Allow? and StartApp?. For example, if you generally want to restrict access
to your system, and only allow certain conversations to take place, make the
last line of the file:
*,*,*,*,0
This makes the default processing to not allow the conversation if not
specifically mentioned previously in the file.
If you wish to generally allow conversations to take place, but not to default
to starting applications on your machine, make the last line:
*,*,*,*,1,0
If you wish to be very generous to your network peers, and by default allow all
conversations and the ability to start all applications whenever necessary, make
the last line:
*,*,*,*,1,1
Testing the NetDDE for Windows Installation
To test the installation of NetDDE for Windows, install the program on two nodes
on the network. On one node, invoke the /Connections/Open command:
[GRAPHIC OMITTED, Sample of Screen View]
The "Name to connect to" dialog box will appear:
[GRAPHIC OMITTED, Sample of Screen View]
Enter the name of a remote node to connect to and click on OK. If the connection
is successful, connection information will appear in the NetDDE program window's
"Direct Connections" and "Network Routes" boxes and "Connected" will be
displayed in the "Status" section of those boxes. For example:
[GRAPHIC OMITTED, Sample of Screen View]
Note: If data momentarily appears and then disappears, the connection is not
established. If this is the case, verify that the network is properly installed.
The NetDDE Connection State Variable
The NetBIOS DDE networking program has a built-in discrete variable which
indicates the state of each network connection. The built-in discrete item,
"Connected", is set to 0 when the network connection fails or is disabled and is
set to 1 when connection is successful. To monitor the connection state a DDE
address is setup as follows:
netdde/info!node.connected
In Excel, the state of the network connection may be read and displayed in a
cell which contains the appropriate formula as shown in the following example:
[GRAPHIC OMITTED, Sample of Screen View]
If the connection is successful a 1 will be displayed in the cell. If the
connection is unsuccessful or broken a 0 will be displayed.
Setting Up a DDE Conversation
The DDE protocol identifies an element of data by using a three-part address.
The three parts of a DDE address are Application, Topic and Item.
Application refers to the name of the Windows program (server) which has the
ability to access the data element (e.g., Excel). In the case of NetDDE, when a
client application opens a conversation with an application residing on a remote
node (server), the name of the remote node must precede the application name in
the DDE Address. To distinguish the node name from the application name, it must
be preceded by two backslashes and followed by one backslash. For example:
\\NodeName\applicationname
Note: If the remote node to be accessed resides on a network interface other
that the default interface, the node name must have a route setup for it in the
local node's routing.csv file.
Topic Name is an application-specific sub-group of data elements. For example,
when conducting a DDE conversation with Excel, the topic name is name the
spreadsheet is saved under on the remote node.
Item Name indicates a specific data element within the specified topic. For
example, when conducting a DDE conversation with Excel, the item name is the
identification of a cell in the row/column format (RICI).
For example, if writing data from Excel on the local node to Excel on a remote
node, the following DDE formatted formula would be entered in an Excel cell on
the local node's spreadsheet:
[GRAPHIC OMITTED, Sample of Screen View]
where: \\NodeName\excel represents the application name
sheet.xls is the name of the spreadsheet to be accessed on the remote
node and represents the topic name rlc10 is the identification of the
cell in the spreadsheet from which the data is being sent and
represents the item name
Closing NetDDE Network Connections
All connections are terminated by invoking opening the /Connections menu and
invoking either the /Close Direct or /CloseRoute command. The "Choose
connection(s) to close" dialog box will appear:
[GRAPHIC OMITTED, Sample of Screen View]
The names of all remote nodes to which the local computer is directly connected
will be displayed in this dialog box. To close a connection, select the name(s)
of the node(s) and click on OK.
Note: If a node closes its direct connection to a node which is being used in a
route by another node, the route connection will also be terminated.
Network Interface DLL API
NetDDE for Windows uses the following API calls to communicate with a network
DLL. This feature provides a method for network independence.
Generic
BOOL Init (lpszNodeName)
VOID Shutdown 0
VOID Slice 0
Connection Management
CONNID ConnectToNode (lpszConnectionInfo)
VOID SetConnName (lpszName)
BOOL AnyNewConnection 0
CONNID GetNewConnection 0
VOID Disconnect (connid)
Status
DWORD ConnectionStatus (connid)
Connection CONN_OK. CONN_CONNECTING.
CONN_CLOSED
Rev Packet RCV_READY,RCV_EMPTY
Xmt Packet XMT_READY,XMT_BUSY
Packet I/O
BOOL RevPacket (connid.lpXmtBuf,lpwPktLen.lpwStatus)
BOOL XmtPacket (connid.lpXmtBuf,wPktLen)
Connection Config
VOID SetupConnection (connid,wMaxUnAckPkts,wPktSize)
VOID GetConnectionSetup (connid,lpwMaxUnAckPkts,lpwPktSize,
timeout info and retries)
Debug
VOID SetDebugLevel (connid,dwFlags)
VOID LogDebugInfo (connid,dwFlags)
Amendment No.1 to the License and Consulting Agreement
Between
WONDERWARE, INC and MICROSOFT CORPORATION
Dated October 3, 1991
This Amendment to the License and Consulting Agreement between
MICROSOFT CORPORATION ("MS") and WONDERWARE, INC. ("COMPANY") dated October 3,
1991 ("Agreement"), is made and entered into this ______ day of _______________,
1992
The parties agree to amend the Agreement as follows:
1. The Licensed Software as defined in the Agreement shall be deemed to
include (a) a security enhancement for NetDDE for inclusion in MS' product
currently know as "Winball" and (b) a port of Licensed Software (described
in Exhibit A) to the Windows NT operating system. The security enhancement
shall conform to the specifications in Exhibit A1.
2. COMPANY shall complete the Licensed Software according to the following
schedule:
WORK Due Date
Design security scheme (Exhibit A1) April 7, 1992
Implement security (Exhibit A1) April 30, 1992
Port to Windows NT May 11, 1992
(as demonstrated at Windows World.
March 1992)
3. The second sentence of Section 1.4 shall be replaced with the following:
"MS further agrees that it will not distribute any derivative works of
Licensed Software for TCP, Serial and SPX/IPX mechanisms developed by MS or
a third party until twelve (12) months after MS' first commercial shipment
of Licensed Software or a derivative thereof, and it will give COMPANY
sixty (60) days notice of its intent to do so".
4. Section 1.5 shall be replaced with the following:
"License for TCP, Serial and SPX/IPX Mechanisms. Notwithstanding Section
1.4 above, at any time MS may extend its license rights in Section 1.1 for
Licensed Software to TCP, Serial and SPX/IPX mechanisms developed by
COMPANY (at which time "Licensed Software" shall be deemed to include such
mechanisms) by payment of Fifty Thousand Dollars (US$50,000.00) to COMPANY
for each (TCP, Serial or SPX/IPX) mechanisms."
5. Section 3 shall be replaced with the following:
"Signing this Agreement $10,000
Delivery of Licensed Software $40,000
Signing of Amendment #1 $65,000 plus
$25,000 of MS
products/services
First shipment of Licensed Software for $10,000
revenue by MS"
6. MS shall pay COMPANY's reasonable pre-approved travel expenses in
connection with development of the security enhancement (Exhibit A1).
COMPANY shall submit written invoices to MS for payment of these amounts
when they become due.
7. Section (C) shall be delected from the Agreement. Upon signing of Amendment
No.1 to the Agreement, MS and COMPANY shall issue a joint press release
announcing the licensing of Licensed Software to MS, the content of which
shall be agreed upon by the parties. In addition, MS agrees to permit
COMPANY to advertise the foregoing in a brochure to be included in the
retail product box for MS Windows 3.1. COMPANY shall submit all such
advertising to MS for approval prior to distribution, such approval shall
not be unreasonably withheld.
Except for the foregoing modifications, the terms of the Agreement shall remain
unchanged and in full force and effect.
IN WITNESS WHEREOF, the parties have executed this Amendment to the
Agreement as of the date set forth above. All signed copies of this Amendment to
the Agreement shall be deemed originals. This Amendment does not constitute an
offer by MS. This Amendment shall be effective upon execution on behalf of
COMPANY and MS by their duly authorized representatives.
MICROSOFT CORPORATION WONDERWARE, INC.
Xxxx X Xxxxxxxxxx Xxxxxx X. Xxxxx
Vice President President, CEO
4/28/92 April 28, 1992