HP OpenVMS Systems Documentation

Content starts here

OpenVMS Connectivity Developer Guide

Contains COM for OpenVMS, OpenVMS Registry, and OpenVMS Events information


July 2000

This document contains information about COM for OpenVMS, the OpenVMS Registry, and OpenVMS Events logging. It also includes information about OpenVMS and Windows NT authentication and interoperation.

Revision/Update Information: This is an updated manual.

Software Version: COM Version 1.1-B for OpenVMS
OpenVMS Alpha Version 7.2-1
Microsoft Windows NT 4.0 SP3 or higher




Compaq Computer Corporation
Houston, Texas


July 2000

© 2000 Compaq Computer Corporation

COMPAQ, VAX, VMS, the Compaq logo, and the DIGITAL logo Registered in U.S. Patent and Trademark Office. OpenVMS is a trademark of Compaq Information Technologies Group, L.P.

ActiveX, Microsoft, MS, MS-DOS, Visual Studio, Win32, Windows, and Windows NT are registered trademarks, and NT, Windows 95, and Windows 98 are trademarks of Microsoft Corporation.

Motif, OSF/1, and UNIX are trademarks of The Open Group.

Wind/U is a registered trademark of Bristol Technology, Inc.

Sample COM code that appears in this document is from Dale Rogerson's book, Inside COM (Microsoft Press, 1997), and is used with the publisher's permission.

All other product names mentioned herein may be the trademarks or registered trademarks of their respective companies.

This product includes software licensed from Microsoft Corporation.
Copyright © Microsoft Corporation, 1991-1998. All rights reserved.

This product includes software licensed from Bristol Technology, Inc.
Copyright © Bristol Technology, Inc, 1990-1998. All rights reserved.

Confidential computer software. Valid license from Compaq required for possession, use, or copying. Consistent with FAR 12.211 and 12.212, Commercial Computer Software, Computer Software Documentation, and Technical Data for Commercial Items are licensed to the U.S. Government under vendor's standard commercial license.

Compaq shall not be liable for technical or editorial errors or omissions contained herein. The information in this document is subject to change without notice.

The Compaq OpenVMS documentation set is available on CD-ROM.

ZK6539

26-OCT-2000 12:55:37.51

Contents Index


Preface

Intended Audience

This document is designed primarily for developers who want to use OpenVMS infrastructure to develop applications that move easily between the OpenVMS and Windows NT environments. These developers include the following:

  • COM for OpenVMS developers: those who are encapsulating existing OpenVMS applications or data, as well as those who are creating new COM applications for OpenVMS systems.
  • OpenVMS Registry developers: those who want to use the OpenVMS Registry to store information about their OpenVMS systems alone, or who want to use the OpenVMS Registry as a shared repository for both OpenVMS and Windows NT registry information.

This document is not intended as an introduction to COM or the registry. It assumes that readers are already familiar with object-oriented (OO) concepts and COM development techniques, as well as how the registry works on a Windows NT system. The document does provide pointers to online information about COM and the registry and recommends other books about COM, OO development, and the registry.

Document Structure

This document contains all the information you need to develop COM for OpenVMS applications and use the OpenVMS Registry. The document is divided into the following sections:

  • Release notes
    COM for OpenVMS, OpenVMS Registry, and OpenVMS Events release notes.
  • Part I
    COM for OpenVMS information, including installing, configuring, and running COM for OpenVMS; how to develop a COM for OpenVMS application. This part also includes information about authenticating users and applications between OpenVMS and Windows NT systems, and information about the Active Template Library (ATL) and how to develop ATL applications on COM for OpenVMS.
  • Part II
    OpenVMS Registry information, including OpenVMS Registry overview and concepts, OpenVMS Registry server startup and system management, OpenVMS Registry system services, and OpenVMS Registry server management.
  • Part III
    OpenVMS Events information.
  • Part IV
    Reference information, including MIDL compiler information, COM for OpenVMS cookbook examples, COM APIs supported by COM for OpenVMS, how to upgrade from previous versions of COM for OpenVMS, how to run in unauthenticated mode, lists of installed files, coupons for related COM books, a glossary, and a list of acronyms.
  • Index

Win32 API Calls Shown in Example Code

Win32® API calls shown in example code throughout this document and included on the COM for OpenVMS kit are provided for documentation purposes only.

COM for OpenVMS includes only those Win32 APIs that the COM for OpenVMS software requires. These COM APIs are listed in Appendix F, Lists of Differences, APIs, and Interfaces.

Win32 API calls that are not listed in Appendix F but that appear in examples in this document and in code samples on the COM for OpenVMS kit are provided by software vendors other than Compaq. If you want to use any Win32 APIs on OpenVMS other than those listed in Appendix F, you must purchase those interfaces from an independent software vendor such as Bristol Technologies ( www.bristol.com ).

Related Documents

For additional information on the Open Systems Software Group (OSSG) products and services, access the Compaq OpenVMS World-Wide Web site with the following address:


     h18000.www1.hp.com/openvms

Reader's Comments

Compaq welcomes your comments on this manual.

Print or edit the online form SYS$HELP:OPENVMSDOC_COMMENTS.TXT and send us your comments by:

Internet openvmsdoc@compaq.com
Fax 603 884-0120, Attention: OSSG Documentation, ZKO3-4/U08
Mail OSSG Documentation Group, ZKO3-4/U08
110 Spit Brook Rd.
Nashua, NH 03062-2698

How To Order Additional Documentation

Use the following World-Wide Web address find out how to order additional documentation:


     h18000.www1.hp.com/openvms

To reach the OpenVMS documentation website, click the Documentation link.

If you need help deciding which documentation best meets your needs, call 800-ATCOMPAQ.

Conventions

In this manual, any reference to OpenVMS is synonymous with Compaq OpenVMS.

VMScluster systems are now referred to as OpenVMS Cluster systems. Unless otherwise specified, references to OpenVMS Clusters or clusters in this document are synonymous with VMSclusters.

In this manual, every use of DECwindows and DECwindows Motif refers to DECwindows Motif for OpenVMS software.

The following conventions are also used in this manual:

Ctrl/ x A sequence such as Ctrl/ x indicates that you must hold down the key labeled Ctrl while you press another key or a pointing device button.
PF1 x A sequence such as PF1 x indicates that you must first press and release the key labeled PF1 and then press and release another key or a pointing device button.
[Return] In examples, a key name enclosed in a box indicates that you press a key on the keyboard. (In text, a key name is not enclosed in a box.)

In the HTML version of this document, this convention appears as brackets, rather than a box.

... A horizontal ellipsis in examples indicates one of the following possibilities:
  • Additional optional arguments in a statement have been omitted.
  • The preceding item or items can be repeated one or more times.
  • Additional parameters, values, or other information can be entered.
.
.
.
A vertical ellipsis indicates the omission of items from a code example or command format; the items are omitted because they are not important to the topic being discussed.
( ) In command format descriptions, parentheses indicate that you must enclose the options in parentheses if you choose more than one.
[ ] In command format descriptions, brackets indicate optional elements. You can choose one, none, or all of the options. (Brackets are not optional, however, in the syntax of a directory name in an OpenVMS file specification or in the syntax of a substring specification in an assignment statement.)
[|] In command format descriptions, vertical bars separating items inside brackets indicate that you choose one, none, or more than one of the options.
{ } In command format descriptions, braces indicate required elements; you must choose one of the options listed.
text style This text style represents the introduction of a new term or the name of an argument, an attribute, or a reason.

In the HTML version of this document, this convention appears as italic text.

italic text Italic text indicates important information, complete titles of manuals, or variables. Variables include information that varies in system output (Internal error number), in command lines (/PRODUCER= name), and in command parameters in text (where dd represents the predefined code for the device type).
UPPERCASE TEXT Uppercase text indicates a command, the name of a routine, the name of a file, or the abbreviation for a system privilege.
Monospace type

Monospace type indicates code examples and interactive screen displays.

In the C programming language, monospace type in text identifies the following elements: keywords, the names of independently compiled external functions and files, syntax summaries, and references to variables or identifiers introduced in an example.

- A hyphen at the end of a command format description, command line, or code line indicates that the command or statement continues on the following line.
numbers All numbers in text are assumed to be decimal unless otherwise noted. Nondecimal radixes---binary, octal, or hexadecimal---are explicitly indicated.


Chapter 1
COM for OpenVMS Release Notes

The release notes in this chapter apply to COM Version 1.1-B for OpenVMS.

1.1 COM for OpenVMS Versions

This section describes the versions of COM for OpenVMS.

  • COM Version 1.0 for OpenVMS
    This was the first release of COM for OpenVMS that shipped with OpenVMS Version 7.2. COM Version 1.0 for OpenVMS is an unauthenticated implementation that does not utilize NTLM security. This release requires OpenVMS Version 7.2 or later. For a list of security differences between an unauthenticated implementation and an authenticated implementation, see Table 1-1.
  • COM Version 1.1 for OpenVMS
    This was the second release of COM for OpenVMS that shipped with OpenVMS Version 7.2-1. COM Version 1.1 for OpenVMS is an authenticated implementation that utilizes the NTLM security features that are part of OpenVMS Version 7.2-1. This release requires OpenVMS Version 7.2-1 or later. For a list of security differences between an unauthenticated implementation and an authenticated implementation, see Table 1-1.
  • COM Version 1.1-A for OpenVMS
    This was the third release of COM for OpenVMS. It is a maintenance release that fixed a number of problems in COM Version 1.1 for OpenVMS.
  • COM Version 1.1-B for OpenVMS (this release)
    This is the fourth release of COM for OpenVMS. COM Version 1.1-B for OpenVMS provides an option that allows you to choose between running COM applications in the default authenticated mode (using NTLM security features), and running COM applications in an unauthenticated mode. See Appendix E for more information.
    COM Version 1.1-B for OpenVMS also provides the Active Template Library (ATL) Version 3.0 for simpler development of COM applications on OpenVMS. See Chapter 9 for more information.
    As of COM Version 1.1-B for OpenVMS, the DCOM-MIDL license is no longer required.
    For a list of problems fixed since the last release, see Section 1.3.

Table 1-1 Summary of Security Differences
Area Unauthenticated COM (V1.0, V1.1-B) Authenticated COM (V1.1, V1.1-A, V1.1-B)
Client requests Authenticated on Windows NT; not authenticated on requests to OpenVMS. Authenticated on Windows NT and OpenVMS.
Security Servers can run with the client's identity on Windows NT and with a prespecified OpenVMS identity on OpenVMS. Servers can run with the client's identity on Windows NT and on OpenVMS.
Security Per-method security is allowed on Windows NT, but only processwide security is allowed on OpenVMS. Per-method security is allowed on Windows NT and on OpenVMS.
Outbound COM requests Authenticated on Windows NT only. Authenticated on Windows NT and OpenVMS.
Registry access On Windows NT: controlled by NT credentials.

On OpenVMS: relies on OpenVMS security controls such as privileges or rights identifiers.

On Windows NT: controlled by NT credentials.

On OpenVMS: controlled either by Windows NT credentials or by OpenVMS security controls.

Event logging Windows NT only. Windows NT and OpenVMS.

1.2 Upgrading from a Previous Version of COM to COM Version 1.1-B for OpenVMS

If you are upgrading from an earlier version of COM for OpenVMS to Version 1.1-B, follow the upgrade instructions in Section 4.3. In addition:

  • If you are upgrading from COM Version 1.0, follow the upgrade instructions in Appendix D.
  • If you are upgrading from COM Version 1.0 or COM Version 1.1, perform the tasks described in Section 1.2.1 and Section 1.2.2.
  • If you are upgrading from COM Version 1.1-A, you do not need to perform any additional tasks.

1.2.1 You Must Repopulate the OpenVMS Registry for COM Version 1.1-B for OpenVMS

Note

If you are upgrading from COM Version 1.1-A for OpenVMS, you do not need to repopulate the OpenVMS Registry.

For COM Version 1.1-B for OpenVMS, you must repopulate the OpenVMS Registry to include security settings. Use the DCOM$SETUP command to display the OpenVMS COM Tools menu, and choose option 3.

When you populate the OpenVMS Registry for COM Version 1.1-B for OpenVMS, the system prompts you to confirm the repopulation. You must answer YES each time. For example:


        [ Starting to Populate the COM for OpenVMS Registry ]

         Populating the Registry for OpenVMS may take up to 15 minutes
         depending on your system.

Enter Y[ES] to continue: YES

         The COM for OpenVMS Registry has already been loaded. This
         action will overwrite the current COM for OpenVMS values
         and data.

Enter Y[ES] to continue: YES

Note

Repopulating the OpenVMS registry does not affect the registration of existing COM applications.

1.2.2 Previously Registered Applications That Use Logical Names for the Local Server Path

If you previously registered any COM application using a logical name for the local server path, you must modify (reregister) the application using the actual name for the local server path.

For example, if you used the REGISTER_SIMPLE.COM command procedure to register the "Simple" application under COM Version 1.0 for OpenVMS, you must reregister the "Simple" application using the new REGISTER_SIMPLE.COM command procedure.

Compaq updated the registration command files as of COM Version 1.1-A for OpenVMS.

The system stores the COM application local server path in the OpenVMS Registry as a value data as follows:


  "HKEY_CLASSES_ROOT\CLSID\{GUID}\LOCALSERVER32"

Use the following REG$CP command to modify the local server path:


  $ MCR REG$CP CREATE VALUE HKEY_CLASSES_ROOT\CLSID\{GUID}\Localserver32 -
  _$
/TYPE=SZ/DATA=device:[directory]image-name.EXE

A GUID is the COM application CLSID. For more information on Localserver32 and CLSID, see Section 7.5.

1.2.3 Changes to the Examples

In COM Version 1.1-A for OpenVMS, the names of the server images in the Dispatch_Sample1 example changed. If you previously built and registered this application and you want to build the new version, you must reregister the server after it has been built.

1.3 Problems Fixed in the Current Release

The following notes describe previously documented problems that have been fixed in COM Version 1.1-B for OpenVMS.

1.3.1 Memory Leak in COM for OpenVMS Servers

In previous versions of COM for OpenVMS, the MIDL compiler generated server proxy code that caused memory to be allocated and not released for certain types of method calls. This resulted in memory leaks in server applications. Testing by Compaq has shown that this problem occurs if the parameter list for any method call includes user defined structures as input parameters, and either FLOAT or DOUBLE datatypes. If you think your COM for OpenVMS server may have this problem, recompile your .IDL file using the new MIDL compiler, recompile the generated files, and relink your application.

If you discovered this problem, you may have compensated for it by deallocating the structures directly, even though COM programming rules state that you do not have to deallocate input parameters. If so, you should remove your workaround and rebuild the application as directed in the preceding paragraph.

1.3.2 DCOM$RPCSS Process Resource Exhaustion

The COM for OpenVMS run-time environment requires that the DCOM$RPCSS process is always running.

In previous versions of COM for OpenVMS, Compaq discovered that after DCOM$RPCSS creates and deletes a large number of COM for OpenVMS application servers, DCOM$RPCSS can run out of resources. If this happens, DCOM$RPCSS automatically attempts to restart itself.

This limitation has been corrected.

1.3.3 Passing an Interface Pointer through IDispatch

In previous versions of COM for OpenVMS, passing an interface pointer as a parameter through the IDispatch interface produced an access violation error. This problem has been corrected.

1.4 Known Problems (with Fixes) in the Current Release

The following notes describe the known problems associated with COM Version 1.1-B for OpenVMS. These problems can be corrected by obtaining ECOs or updates from the Compaq Support Centers.

1.4.1 Trusted-Domain Authentication Feature Requires ECO

Compaq has discovered a number of problems associated with COM applications running between systems in different domains with trusts established between the domains. Some of these problems can be corrected by installing the Advanced Server for OpenVMS V7.2-A-ECO1 kit. Please contact your Compaq Support Center and ask for this kit. Other problems that may still occur are listed in the following sections. If you experience these problems, please contact your Compaq Support Center for additional information.

1.4.1.1 NET3004 Messages Broadcast to Administrator on Windows NT Server System

When COM applications are run between systems in trusted domains, one or both of the systems may report NET3004 errors and broadcast these errors to Windows NT systems logged into the Administrator account. The Administrator will see a popup message box containing the NET3004 error. You can eliminate these broadcasts by stopping the Alerter Service on the Domain Controller that is generating the messages.

1.4.1.2 Password Synchronization Errors (NET5716, NET5722, NET5723)

Under certain conditions, a Windows NT workstation can lose the ability to authenticate with an Advanced Server domain controller. If this happens you will need to remove the workstation from the domain, then re-add it back to the domain.

1.4.1.3 Hostmap Problem

Under certain conditions, the hostmap entries in a trusted domain can become invalid. See Section 5.4.6 for a way to resolve this problem.

1.4.2 DCERPC-E-UNKNOWNREJECT Failure (EE128302)

OpenVMS COM clients sometimes report this error when communicating with NT COM components. This is due to a problem in the RPC Runtime. A fix for this problem is available from the Compaq Support Centers. Contact your Support Center and ask for the update to DCE$LIB_SHR.EXE.

1.4.3 DCERPC-E-WHOAREYOUFAILED Failure (EE1282FA)

OpenVMS COM clients sometimes report this error when communicating with NT COM components. This is due to a problem in the RPC Runtime. A fix for this problem is available from the Compaq Support Centers. Contact your Support Center and ask for the update to DCE$LIB_SHR.EXE.

1.4.4 NTARPC-E-PROTOCOL_ERROR Failure (800706C0)

OpenVMS COM clients sometimes report this error when communicating with NT COM components. This is due to a problem in the RPC Runtime. A fix for this problem is available from the Compaq Support Centers. Contact your Support Center and ask for the update to DCE$LIB_SHR.EXE.

1.4.5 Cached IID Value Not Equal to Registry Value Failure

Compaq's testing has shown that OpenVMS processes that run more than 2000 iterations of a COM for OpenVMS application may receive this error. The error is caused by a bug in the Registry client that returns a failure status after a process has made over 16,000 OpenKey requests. A fix for this problem is available from the Compaq Support Centers. Contact your Support Center and ask for the update to SYS$NTA.EXE .

1.4.6 IGNORE_EXTAUTH Support

Support for the IGNORE_EXTAUTH flag in the SECURITY_POLICY SYSGEN parameter is now available in a patch kit from the Compaq Support Centers. Contact your Support Center and ask for the update to VMS$VMS_ACMESHR.EXE.

1.5 Known Problems (without Fixes) in the Current Release

The following notes describe the known problems associated with COM Version 1.1-B for OpenVMS. These problems currently do not have fixes.

1.5.1 Kernel Threads and Upcalls Not Supported

COM for OpenVMS applications cannot be built with kernel threads or upcalls enabled. This support will be available in a future release.

1.6 Limitations and Restrictions

The following sections contain general release note information.

1.6.1 DCOM$RPCSS Stalls on Restart

If a system running DCOM$RPCSS in a cluster crashes and restarts, the DCOM$RPCSS process may hang during startup. In this condition, the process name remains DCOM$STARTUP-** and the SYS$STARTUP:DCOM$RPCSS.OUT file contains the following error message:


  %PPL-W-SYSERROR, system service error
  -SYSTEM-W-VALNOTVALID, value block is not valid

To recover from this condition, stop COM for OpenVMS on each node in the cluster using the following command:


   $ @SYS$STARTUP:DCOM$SHUTDOWN

Then restart COM for OpenVMS on each node in the cluster using the following command:


   $ @SYS$STARTUP:DCOM$STARTUP

1.6.2 MIDL Limitations and Restrictions

The following release notes pertain to MIDL.

1.6.2.1 MIDL -w Switch

The MIDL compiler allows you to specify either -w or -warn to throttle the level of warnings generated by the compiler. The MIDL compiler for OpenVMS supports only the -w switch.

1.6.2.2 MIDL Compiler Treats wchar_t Literals as char

When using DEC C Version 5.7 or earlier, COM for OpenVMS incorrectly handles wide character literal strings in IDL files. These strings are mishandled as "char" types. (If you are using DEC C Version 6.0 or above, you can disregard this release note.)

For example, suppose an IDL file contains the following string literal:


    const wchar_t * PROGRAM_ID     = L"Sample.Component";

The MIDL compiler on Windows NT would produce the following macro definition:


    #define PROGRAM_ID      ( L"Sample.Component" )

However, the MIDL compiler for COM for OpenVMS produces the following by default:


    #define PROGRAM_ID      ( "Sample.Component" )

The following workarounds are available:

  1. Avoid using the DEC C preprocessor if possible.
    To run the MIDL compiler without the preprocessor, include the -nocpp or -no_cpp switch on the command line. For example:


        $ midl -Oicf -nocpp -idcom$library: server.idl
    

    Caution

    Do not use this workaround if the IDL source file or any IDL source file imported by the main IDL source file contains any conditional assembly switches (for example, #ifdef" . . . "#endif" ).
  2. Define all character string constants as "char" type instead of "wchar_t" type.
    Using this workaround causes the MIDL compiler on Windows NT and on OpenVMS to create character string constants that are not wide characters. If the software requires a wide character string literal, the software can convert the ANSI string to a wide character string before the value is used.
  3. Replace the wide character string constants with macro definitions inside the IDL source file.
    For example, instead of defining the string literal as:


        const wchar_t * PROGRAM_ID     = L"Sample.Component";
    

    Use a #define inside an IDL cpp_quote() directive as follows:


        cpp_quote("#define PROGRAM_ID L\"Sample.Component\"")
    

    Even when you use the DEC C preprocessor, the output header file produced by the MIDL compiler for Windows NT and OpenVMS will be as follows:


        #define PROGRAM_ID L"Sample.Component"
    

1.6.2.3 SAFEARRAY Limitation

Because the COM for OpenVMS MIDL compiler is based on Microsoft's MIDL compiler V3.00.44, COM for OpenVMS supports the use of SAFEARRAYs only inside a LIBRARY block in an .IDL file. Microsoft's MIDL compiler V3.00.44 has the same limitation.

1.6.3 DCOM$CNFG Limitations and Restrictions

The following release note pertains to DCOM$CNFG when run in a cluster.

1.6.3.1 DCOM$CNFG Utility and Disabling Applications: Possible Unintended Side Effects

The COM for OpenVMS DCOM$CNFG utility includes several options that allow a developer to modify application properties (for example, changing the location of the computer on which an application can run). If you select one of these options, you are modifying an OpenVMS Registry entry.

Because the OpenVMS Registry supports a single database in a cluster, modifying one of these options affects all nodes in the cluster that are running COM for OpenVMS.

For example, if you use the System-wide Default Properties submenu option 1 to disable COM for OpenVMS, you effectively disable COM for OpenVMS on the entire cluster. In the same way, if you use the Application Location submenu option 1 to prevent an application from running on this computer, you effectively prevent the application from running on any computer in the cluster.

1.6.4 Other Limitations and Restrictions

The following release notes pertain to COM for OpenVMS.

1.6.4.1 Windows 2000 Limitations

Windows 2000 is not supported in COM Version 1.1-B for OpenVMS.

Preliminary results from Compaq's ongoing testing of interoperability between COM for OpenVMS and Windows 2000 indicate that a Windows 2000 client can successfully communicate with a COM for OpenVMS server application. However, authentication problems occur between a COM for OpenVMS client and a Windows 2000 server. Full support for Windows 2000 will be available in a future release.

1.6.4.2 COM Version 1.0 for OpenVMS and COM Version 1.1-B for OpenVMS Not Supported in the Same Cluster

When you install and configure COM Version 1.1-B for OpenVMS on any node in a cluster, you make clusterwide modifications to the OpenVMS Registry that prevent COM Version 1.0 for OpenVMS from running on any other node in the same cluster.

1.6.4.3 Remote Activation of an In-Process Server

If a server component is registered only as an in-process server, the component cannot be activated remotely on OpenVMS. If the system tries to activate an in-process server remotely, the remote client receives a "REGDB_E_CLASSNOTREG (80040154)" error. To activate a server component remotely, the component must be registered as an out-of-process server so the DCOM$RPCSS process can start the component on the client's behalf.

1.6.4.4 Threading Model Supported by COM for OpenVMS

COM Version 1.1-B for OpenVMS supports only the multithreaded apartment (MTA, also known as free threads) model for application servers. The MTA model allows a component to have more than one thread. However, you must ensure that your code is thread safe.

The threading model initialization call is as follows:


CoInitializeEx(
   NULL,
   COINIT_MULTITHREADED
   )

Because CoInitialize() implies the single-threaded apartment (STA) model, you cannot use it in place of CoInitializeEx() in a server application.

1.6.4.5 SP4 with Enhanced NTLM Enabled is Not Supported

COM Version 1.1-B for OpenVMS supports Windows NT SP4 with the following limitation: COM Version 1.1-B for OpenVMS does not support SP4 with enhanced NTLM enabled.

If you want to use COM Version 1.1-B for OpenVMS with SP4, you must be sure that enhanced NTLM is disabled.

Although SP4 and COM for OpenVMS appear to interoperate with SP4 enhanced NTLM disabled, SP4 has not been fully tested with COM for OpenVMS and is not officially supported.

Compaq's ongoing SP4 testing has identified the following limitation with SP4 and enhanced NTLM disabled: authentication requests fail if you use passwords that are longer than 12 characters.

1.6.4.6 Specifying Activation Security in CoCreateInstanceEx

The pServerInfo parameter of the CoCreateInstanceEx API allows you to specify a username and password that will be used for authentication on the remote server system. The username and password are part of the COAUTHIDENTITY structure inside the COAUTHINFO structure, which is inside the COSERVERINFO structure that is passed as the pServerInfo parameter to CoCreateInstanceEx .

The current NTLM security implementation on OpenVMS does not support this feature for COM client applications on OpenVMS. This feature is supported for COM clients on Windows NT communicating with COM servers on OpenVMS.

1.6.4.7 RPC Communication Failures Caused by Advanced Server

In a cross domain environment, under some load situations, COM applications may report errors that are a side effect of the Advanced Server for OpenVMS having lost a connection between domain controllers. The Advanced Server for OpenVMS reports this error as follows:


NET5719:    No domain controller for the domain 'xxxxx' is available.

A series of these events over a limited time interval may lead to COM applications reporting RPC communications failures (%x8007071c). In this situation, a stop and start of DCOM$RPCSS may be required to clear the error.

See Section 5.4.6 for more information. If the NET5719 events persist, contact your Compaq Support Center.

1.6.4.8 Specific Error Messages

The following sections list and describe specific COM for OpenVMS error messages.

1.6.4.8.1 RPC Cannot Support Failure (800706E4)

If you attempt to use the single-threaded apartment (STA) model, some COM APIs may display the following return status code:


  (800706E4)

This model is not supported in COM Version 1.1-B for OpenVMS. For more information, see Section 1.6.4.4.


Chapter 2
OpenVMS Registry Release Notes

2.1 Release Notes

The information in the following sections applies to this release.

2.1.1 No Key Change Notifications When a Key's Attributes are Modified

When you specify the REG$M_CHANGEATTRIBUTES value for the REG$_NOTIFYFILTER item code, the system should notify you of any changes to that OpenVMS Registry key. However, when you modify the attributes of a OpenVMS Registry key, the system fails to notify the processes that have requested notifications.

To correct this problem, specify a different value for the REG$_NOTIFYFILTER item code: use either REG$M_CHANGENAME or REG$M_CHANGELASTSET .

2.1.2 Database Searches Limited

The REG$CP server management utility SEARCH command and calls to the $REGISTRY system service using the REG$FC_SEARCH_TREE_DATA , REG$FC_SEARCH_TREE_KEY , or REG$FC_SEARCH_TREE_VALUE function codes may result in more data being returned to the client than the communications buffers on the client node can handle. These functions are limited to paths that are no more that 16 levels deep and return data of no more than 4 KB.

To avoid this problem, limit the search depth by specifying an exact path---that is, avoid searching the entire database when the database is large.

This restriction will be lifted in a future release.

2.1.3 Key Access Policy

When a user requests access to an OpenVMS Registry key or value, the OpenVMS Registry validates the specified key path by checking the first key and the last key of the key path.

2.1.4 OpenVMS Registry Maximum Data Size Restrictions

The maximum size of any single block of data that can be sent to the OpenVMS Registry server for storage in the OpenVMS Registry database is limited to no more than 7880 bytes. If you exceed this limit, the system displays the following error:


  REG-F_NORESPONSE, registry server failed to respond within allotted time period

This limit is imposed by the communication protocol between the OpenVMS Registry server and the OpenVMS Registry client which limits the transfer to 8 K bytes.

This restriction will be lifted in a future release.

2.1.5 REG$_EXQUOTA Errors

If you set the OpenVMS Registry File Quota to be less than the current size of the OpenVMS Registry database, the system displays the following error for all OpenVMS Registry operations:


  REG-E-EXQUOTA, registry file quota or page file quota exceeded

Note

You will not see this error message on a single delete operation that brings the size of the OpenVMS Registry database file within quota limits.

As a workaround, you can raise the File Quota temporarily above the current size of the OpenVMS Registry database file, then perform delete operations to bring the OpenVMS Registry database file size within the desired File Quota limit. (For information about changing these quotas, see Section 10.6.3.)

To determine the approximate number of bytes applied towards the two OpenVMS Registry File Quotas, multiply the size of the SYS$REGISTRY:REGISTRY$LOCAL_MACHINE.REG and SYS$REGISTRY:REGISTRY$USERS.REG files by 512. The result of this calculation gives you the approximate number of bytes applied towards quota for each file. For information about how to set OpenVMS Registry file quotas, see Section 2.1.6.

This restriction will be lifted in a future release.

2.1.6 OpenVMS Registry Maximum Database Size Restrictions

The maximum amount of data that can be stored in the OpenVMS Registry database is limited to approximately 1.7 MB. If you exceed this limit, the system displays the following error:


  REG-F-DBACCESS, cannot access registry database object

This is a fatal error and prevents further access to the OpenVMS Registry database.

To prevent the REG-F-DBACCESS error, Compaq recommends that you establish quotas to limit the database size so that the OpenVMS Registry can never reach 1.7 MB.

You can establish quotas using either of the following procedures:

  • Modify the Default File Quota value.
    Use the following command to set the Default File Quota value:


    $ mcr reg$cp modify value/name="Default File Quota"/type=dword -
    _$ /data=%D1700000 "hkey_local_machine\system\registry\File Quotas"
    
  • Create or modify the File Quota value on individual OpenVMS Registry database files.
    Use the following command to set individual File Quota values:

    Note

    If you have previously set File Quota values, use the MODIFY command in place of the CREATE command in the following examples.


    $ mcr reg$cp create value/name=REGISTRY$LOCAL_MACHINE/type=dword -
    _$ /data=%D1700000 "hkey_local_machine\system\registry\File Quotas"
    
    $ mcr reg$cp create value/name=REGISTRY$USERS/type=dword -
    _$ /data=%D1700000 "hkey_local_machine\system\registry\File Quotas"
    

You must specify a value for the /DATA qualifier that is between 32,000 and 2,000,000 (0x7D00 and 0x1E8480 hexadecimal).

If you set a value below 32,000, the system will ignore the value and instead use the Default File Quota value of 10,000,000. This Default File Quota value is too high.

If you set a value above 2,000,000, the system generates a REG-F-DBACCESS error when the OpenVMS Registry database size exceeds that value.

A fix for this problem is available from the Compaq Support Centers. Contact your Support Center and ask for the update to REGISTRY$SERVER.EXE.


Part 1
COM for OpenVMS

The following chapters provide an overview of COM for OpenVMS, provide instructions for installing and configuring COM for OpenVMS and related software, and describe and explain how to create COM applications using COM for OpenVMS.


Chapter 3
Overview of COM for OpenVMS

3.1 What is COM?

Component Object Model (COM) is a technology from Microsoft that lets developers create distributed network objects. First introduced by Microsoft in its Windows 3.x product, COM was initially called Object Linking and Embedding (OLE). COM provides a widely available, powerful mechanism for customers to adopt and adapt to a new style multivendor distributed computing, while minimizing new software investment.

Digital Equipment Corporation (now Compaq Computer Corporation) and Microsoft jointly developed the COM specification. First released as NetOLE (Network OLE) and then renamed DCOM (Distributed COM), the COM specification now includes network functionality. That is, COM now supports distributed network objects.

COM is an object-based programming model designed to promote software interoperability. COM allows two or more applications (or components) to cooperate with one another easily, even if the objects are written by different vendors at different times and in different programming languages, or if they are running on different machines with different operating systems. To support its interoperability features, COM defines and implements mechanisms that allow applications to connect to each other as software objects.

COM implementations are available on Windows NT, Windows 95tm, Windows 98, OpenVMS, and Compaq Tru64tm UNIX®, as well as other UNIX platforms.

3.1.1 Suggested Reading

The following resources can provide you with more information on COM and related topics:

  • Third-party books on COM:
    • Inside COM/Microsoft's Component Object Model, Dale Rogerson, Microsoft Press, Redmond, WA, 1997. ISBN: 1-57231-349-8.
      The examples in this document are taken from Dale Rogerson's book and are used with the publisher's permission.
    • Essential COM, Don Box, Addison Wesley Longman, Reading, MA, 1998. ISBN: 0-201-63446-5.
      (See Appendix H for a special offer on this book.)
    • Effective COM, Don Box, Keith Brown, Tim Ewald, and Chris Sells, Addison Wesley Longman, Reading, MA, 1998. ISBN: 0-201-37968-6.
      (See Appendix H for a special offer on this book.)
    • DCOM Explained, Rosemary Rock-Evans, Digital Press, Woburn, MA, 1998. ISBN: 1-55558-216-8.
      Provides a good introduction to DCOM and COM, and discusses COM implementations on various platforms.
      (See Appendix H for a special offer on this book.)
    • Understanding ActiveX and OLE, David Chappell, Microsoft Press, Redmond, WA, 1996. ISBN: 1-57231-216-5.
  • Websites:
    • The Component Object Model Specification, available from the Microsoft COM website:


         www.microsoft.com/com
      

3.2 Overview of COM for OpenVMS

COM for OpenVMS is Compaq's implementation of Microsoft's Windows NT 4.0 Service Pack 3 (SP3) Component Object Model (COM) software on the OpenVMS Alpha operating system.

In support of COM for OpenVMS, Compaq ported Windows NT infrastructure to OpenVMS, including a registry, event logger, NTLM security, and Win32 APIs. COM for OpenVMS is layered on The Open Group's Distributed Computing Environment (DCE) RPC. COM for OpenVMS supports communication among objects on different computers on a local area network (LAN), a wide area network (WAN), or the Internet. COM for OpenVMS is important to the Affinity for OpenVMS program because it delivers a key piece of connectivity with Windows NT.

Figure 3-1 shows the OpenVMS infrastructure.

Figure 3-1 OpenVMS Infrastructure and COM for OpenVMS


In Figure 3-1 the key pieces of the OpenVMS infrastructure are as follows:

Windows NT system
The smaller box on the left side of Figure 3-1 represents the Windows NT system.
OpenVMS Cluster/OpenVMS identity
The large box on the right side of Figure 3-1 represents the OpenVMS system. Within and around this box you can see several other boxes labeled with numbers. The following list describes these numbered items:
  1. OpenVMS security
    This is the standard OpenVMS security (login, authentication, ACLs, and so on) available with all OpenVMS systems.
  2. Advanced Server for OpenVMS
    The Advanced Server for OpenVMS provides authentication of Windows NT users to OpenVMS and provides a connection to the OpenVMS Registry and events viewer for Windows NT users.
  3. Windows NT identity/Win32 APIs
    The OpenVMS Security, MSV1_0 ACME agent, Advanced Server for OpenVMS, OpenVMS Registry, event logger, and Win32 APIs (COM APIs) all contribute to the creation of a Windows NT identity within the OpenVMS system.
  4. OpenVMS Registry
    The OpenVMS Registry, like the registry on Windows NT systems, allows you to store system, software, and hardware configuration information on OpenVMS. COM for OpenVMS uses the OpenVMS Registry to store information about COM applications. For detailed information about the OpenVMS Registry, see Part 2 of this document.
  5. Event logger
    Like the event logger on Windows NT systems, the event logger on OpenVMS records informational, warning, and error messages about COM events. For detailed information about the OpenVMS Events, see Chapter 14.
  6. Windows NT COM stack
    On the Windows NT system, COM requests and responses pass through the COM, RPC, SSPI (security), and Domain layers.
  7. OpenVMS COM stack
    The OpenVMS system mirrors the Windows NT COM stack, with some additions. On the OpenVMS system, COM requests and responses pass through the COM, RPC, SSPI (security), MSV1_0 ACME agent, and Advanced Server for OpenVMS layers. The MSV1_0 ACME agent (shown as ACME in Figure 3-1) is an extension to the Authentication and Credential and Management (ACM) authority. Authentication is explained in detail in Chapter 8.
  8. Connection through RPC layer
    The COM connection between the Windows NT system and OpenVMS is always through the RPC layer.

For developers, the COM for OpenVMS developer's kit provides a Microsoft Interface Definition Language (MIDL) compiler and C-style header files for application development. For more information about the OpenVMS MIDL compiler, see Section F.1.4.1.

OpenVMS now includes a function to get Windows NT credentials. For more information about getting Windows NT credentials through NTA$LOGON, see Section 5.1 and Chapter 8.

COM for OpenVMS also provides a free run-time environment on OpenVMS Alpha for the deployment of COM for OpenVMS client and server applications.

You can find a complete description of Microsoft's COM, including protocol specifications and programming documentation, at the Microsoft COM website at the following location:


   www.microsoft.com/com

The COM for OpenVMS implementation is a subset of the full Microsoft COM implementation. For a complete list of the COM for OpenVMS APIs, supported interfaces, and implementation differences, see Appendix F.

While general interest in COM continues to grow, COM remains a sophisticated technology. It is not aimed at the naive user, but rather at skilled programmers, such as independent software vendors (ISVs) and large management information system (MIS) shops.

3.2.1 How COM for OpenVMS Uses the OpenVMS Registry

COM for OpenVMS requires the OpenVMS Registry. Like its registry database counterpart on Windows NT systems, the OpenVMS Registry stores information about COM applications---specifically those COM applications running on OpenVMS. These COM for OpenVMS applications use the OpenVMS Registry to store CLSIDs (class IDs), startup information, security settings, and so on in the OpenVMS Registry database. COM for OpenVMS uses the Win32 APIs implemented on OpenVMS to read and write this information to the OpenVMS Registry.

COM for OpenVMS requires access to the OpenVMS Registry database. If COM for OpenVMS cannot access the OpenVMS Registry, COM for OpenVMS will not start. For more information about the OpenVMS Registry, see Chapter 10.

3.3 Using COM for OpenVMS

You can use COM for OpenVMS to do the following:

  • Develop new COM for OpenVMS COM applications
  • Encapsulate existing applications for use with COM for OpenVMS

The following sections discuss new application development and encapsulation in more detail.

An example of a COM application to encapsulate an existing OpenVMS application is included with this release. The example can be found in DCOM$EXAMPLES:[WRAPPER]. A README file describes the example and how to build it.

3.3.1 Developing New Applications

Your organization might use COM for OpenVMS to develop new applications under the following circumstances:

  • You want to share data between an OpenVMS server and Windows NT clients in a two-tier client/server computing model.
  • You want to share data and to place business logic in the middle tier of a three-tier computing environment.
    For example, you might have a Windows NT system as the client so you can take advantage of its graphical user interface. You could write business logic as a collection of COM objects on a middle-tier server; while the third-tier large-capacity, high-availability OpenVMS server provides database access.
  • You want to share data between one or more OpenVMS systems or between OpenVMS and other non-Windows systems using COM.

The advantages of using COM for OpenVMS include:

  • COM for OpenVMS provides a good programming model for programmers with C++ and object-oriented programming skills.
  • COM for OpenVMS provides multivendor interoperability. COM is a standard with implementations available on a number of platforms today, and ports for additional platforms are in development.
  • The COM for OpenVMS run-time provides automated data marshaling and unmarshaling.
  • COM provides OLE Automation services to support communications with Microsoft Visual Basic® applications. Visual Basic is a very popular programming environment for client/server computing.
  • COM provides version support for components so you can upgrade applications over time without breaking existing environments.

See Chapter 7 and Appendix C for examples of developing COM for OpenVMS applications.

3.3.2 Encapsulating Existing Applications

If you have monolithic applications written in procedural languages (such as Fortran and COBOL) with character-cell interfaces, you can put a COM "wrapper" or jacket around these applications to allow them either to run on new platforms or to remain on OpenVMS and run in a client/server environment.

The risk associated with completely reengineering some older applications is high. Many applications are large, complex, poorly documented, and not well understood by their current maintainers. Encapsulating a legacy application can be less risky than reengineering and can be the first step in a rewrite. Over time, pieces of the legacy application can be rewritten, while the older version of the application remains stable and available. Encapsulation also allows developers to reuse code, saving time and resources.

Disadvantages to encapsulation include more complex maintenance efforts and the inability to make changes to the underlying code. If the legacy application was unstable or hard to maintain, the encapsulated application will not be any better, and might be made worse because of the wrapper.

There are several layers of a traditional procedural application that you can encapsulate: the user interface (UI), the database, and the data manipulation routines.

  • User interface
    If you choose to encapsulate the user interface, the UI could be supported on some other platform (for example, from a graphical user interface [GUI] on a Windows NT system).
    Encapsulating and moving the UI to the user's desktop can mean that the rest of the application remains on OpenVMS. Batch processing programs are well suited to user interface encapsulation. Applications that do screen management (for example, SMG or FMS) could have their older character-cell interface encapsulated using COM for OpenVMS, providing users access through newer Windows NT style dialog boxes.
  • Database
    If you choose to encapsulate a database using COM for OpenVMS, the database could be accessed from parts of a distributed application running on other platforms. The advantage of this approach is that the programmer can keep the database on OpenVMS (a stable, 24x365 system), while the user interface and data access routines are on remote (and perhaps less reliable) systems.
  • Database manipulation routines
    If you choose to encapsulate the database manipulation routines, the routines could be accessed from any other COM component in a heterogeneous computing environment.

Encapsulating an OpenVMS application using COM for OpenVMS means that you write a COM for OpenVMS server that talks to the application being encapsulated. The COM for OpenVMS server passes arguments to the application in the order and format that the application expects. The COM for OpenVMS server then intercepts the output from the application and directs it to the display device, user interface, or other routines.


Chapter 4
Installing the COM for OpenVMS Kit

This chapter provides a list of the contents of the COM for OpenVMS kit, a list of prerequisite software, and preinstallation requirements. It also describes how to install COM for OpenVMS and includes postinstallation instructions.

4.1 Contents of the COM Version 1.1-B for OpenVMS Kit

COM Version 1.1-B for OpenVMS contains the following:

  • Software
    • COM for OpenVMS Run-Time libraries
    • COM for OpenVMS MIDL compiler and header files
    • COM for OpenVMS configuration utilities
    • Active Template Library Version 3.0
    • Sample applications
  • Documentation
    • OpenVMS Connectivity Developer Guide (in PostScript, HTML, and PDF formats)

4.2 Prerequisites

The following software is required:

  • For OpenVMS systems
    • OpenVMS Version 7.2-1 or higher
    • For COM for OpenVMS application development:
      DEC C Version 5.6 or higher and DEC C++ Version 5.6 or higher
      To build ATL applications on OpenVMS:
      Compaq C++ Version 6.2-016 or higher
    • DIGITAL TCP/IP Services for OpenVMS Version 5.0 or equivalent
    • DECwindows Motif® (see Section 4.2.1)
    • Advanced Server for OpenVMS Version 7.2A or higher
      (Advanced Server for OpenVMS is not required if you are running COM for OpenVMS in unauthenticated mode.)
    • Before installing COM for OpenVMS check that you have the required free global pages, global sections, and disk blocks. The following table lists the requirements.
      Software Global pages Global sections Disk blocks
      COM for OpenVMS 11,000 27 57000
      RPC Runtime 3,300 14 N/A
      For Advanced Server requirements: See the Advanced Server for OpenVMS Server Installation and Configuration Guide.
      For TCP/IP requirements: See the DIGITAL TCP/IP Services for OpenVMS: Installation and Configuration document.
  • For Windows® NTtm systems
    • Windows NT 4.0 with Service Pack 3 or higher installed
    • Microsoft® Visual C++ or Visual Basic (for Windows NT client development and information about MIDL compiler). See the Microsoft website for compiler version requirements.
    • TCP/IP enabled (needed for OpenVMS connectivity)

4.2.1 DECwindows Motif Required to Run COM for OpenVMS

You must install DECwindows Motif for OpenVMS on any system running COM for OpenVMS. If you already have DECwindows Motif installed on your system, you do not need to do anything else. If you do not have DECwindows Motif installed on your system, you can find the installation kit for DECwindows Motif on the OpenVMS Version 7.2-1 CD-ROM in the [KITS.DWMOTIF125_KIT] directory.

Note

If you are installing DECwindows Motif to meet the COM for OpenVMS requirements only, you do not need the DW-MOTIF license.

4.3 Supported COM for OpenVMS Installations

The following sections describe COM Version 1.1-B for OpenVMS installation and upgrade options.

Note

If you want to run COM Version 1.1-B for OpenVMS in unauthenticated mode, see Section E.1.
If you want to do this Read this section
Install COM for OpenVMS on an OpenVMS standalone system for the first time. See Section 4.4.
Install COM for OpenVMS on an OpenVMS Cluster system for the first time. See Section 4.6.
Upgrade from earlier versions of COM for OpenVMS on an OpenVMS standalone system. See Section 4.5.
Upgrade from earlier versions of COM for OpenVMS on an OpenVMS Cluster system. See Section 4.7.

4.4 Installing COM for OpenVMS on an OpenVMS Standalone System

Use the following procedure:

  1. Install OpenVMS Version 7.2-1. For this procedure, see the OpenVMS Alpha Version 7.x Upgrade and Installation Manual.
  2. Install TCP/IP. For this procedure, see the DIGITAL TCP/IP Services for OpenVMS: Installation and Configuration manual or your TCP/IP supplier's documentation.
  3. Boot the installed system from the system disk.
  4. Install COM Version 1.1-B for OpenVMS. For this procedure, see Section 4.9.
  5. Install Advanced Server for OpenVMS. For this procedure, see the Advanced Server for OpenVMS/Server Installation and Configuration Guide.
  6. Configure TCP/IP (set up for startup and reboot); start TCP/IP. You must configure the PWIP driver for Advanced Server for OpenVMS to use TCP/IP. For information about configuring TCP/IP, see the DIGITAL TCP/IP Services for OpenVMS: Installation and Configuration manual or your TCP/IP supplier's documentation.
  7. Configure the OpenVMS Registry as follows:
    • Run REG$CONFIG.COM to configure the OpenVMS Registry. See Section 11.2.
    • Edit the SYLOGICALS.COM file to define the SYS$REGISTRY logical as follows:


      $ DEFINE/SYSTEM SYS$REGISTRY directory-specification
      
  8. Start OpenVMS Registry by running the REG$STARTUP.COM file.
  9. If you want to run DCE, start DCE now.

    Note

    You do not need DCE to run COM for OpenVMS, but if your environment uses DCE, Compaq recommends that you start DCE now.

    For this procedure, see the DIGITAL DCE Installation and Configuration Guide.
    For more information about OpenVMS external authentication, see Section 5.1.
  10. Configure Advanced Server for OpenVMS. You need to reboot to finish Advanced Server for OpenVMS configuration. You must reboot 0 to n times, depending on your system configuration. For this procedure, see the Advanced Server for OpenVMS/Server Installation and Configuration Guide.
  11. Start Advanced Server for OpenVMS (set up for startup on reboot). For this procedure, see the Advanced Server for OpenVMS/Server Installation and Configuration Guide.
  12. Start the ACME server. Use the following command:


      $ @SYS$STARTUP:NTA$STARTUP_NT_ACME
    
  13. Start RPC. Use the following command:


      $ @SYS$STARTUP:DCE$RPC_STARTUP.COM
    
  14. Configure COM for OpenVMS. For this procedure, see Section 4.10 and Section 6.2.
    • Populate the OpenVMS Registry. For this procedure, see Section 6.2. Use option 3 to populate the OpenVMS Registry database.
    • Create any OpenVMS and Advanced Server for OpenVMS accounts needed by the COM for OpenVMS Service Control Manager. For more information, see Section 6.2. Use option 8 to create the accounts.
  15. Edit the SYLOGICALS.COM file and add the following line:


      $ DEFINE DCOM$TO_BE_STARTED TRUE
    
  16. Start COM for OpenVMS. For this procedure, see Section 4.11.

4.5 Upgrading COM for OpenVMS on an OpenVMS Standalone System

Note

Before you start, Compaq recommends that you disable any Advanced Server for OpenVMS, OpenVMS Registry, and layered products automatic startups so these products do not start until you have upgraded COM for OpenVMS and its associated components.

Use the following procedure:

  • Edit the SYLOGICALS.COM file to stop the following products from starting:
    • OpenVMS Registry (remove the line DEFINE REG$TO_BE_STARTED TRUE or DEFINE/SYSTEM REG$TO_BE_STARTED TRUE )
    • COM for OpenVMS (comment the line DEFINE DCOM$TO_BE_STARTED TRUE )
  • Edit the SYS$STARTUP:SYSTARTUP_VMS.COM file to stop the following products from starting:
    • Advanced Server for OpenVMS (comment the line @SYS$STARTUP:PWRK$STARTUP.COM ).

If COM for OpenVMS is currently running, shut down COM for OpenVMS first, Advanced Server for OpenVMS (if running), and then the OpenVMS Registry.

Use the following procedure:

  1. Upgrade to OpenVMS Version 7.2-1. For this procedure, see the OpenVMS Alpha Version 7.x Upgrade and Installation Manual.
  2. If you need to upgrade TCP/IP, upgrade TCP/IP now. For this procedure, see the DIGITAL TCP/IP Services for OpenVMS: Installation and Configuration manual or your TCP/IP supplier's documentation.
  3. Boot the upgraded system from the system disk.
  4. Upgrade COM for OpenVMS. For this procedure, see Section 4.9.
  5. Install or upgrade Advanced Server for OpenVMS. You must reboot 0 to n times, depending on your system configuration. For this procedure, see the Advanced Server for OpenVMS/Server Installation and Configuration Guide.
  6. Start TCP/IP unless you have enabled TCP/IP to start on a reboot. For this procedure, see the DIGITAL TCP/IP Services for OpenVMS: Installation and Configuration manual or your TCP/IP supplier's documentation.
  7. Start the OpenVMS Registry unless you have enabled the OpenVMS Registry to start on a reboot. For this procedure, see Section 11.2.
  8. If you want to run DCE, start DCE now.

    Note

    You do not need DCE to run COM for OpenVMS, but if your environment uses DCE, Compaq recommends that you start DCE now.

    For this procedure, see the DIGITAL DCE Installation and Configuration Guide.
    For more information about OpenVMS external authentication, see Section 5.1.
  9. Configure Advanced Server for OpenVMS. You must reboot to finish Advanced Server for OpenVMS configuration. You need to reboot 0 to n times, depending on your system configuration. For this procedure, see the Advanced Server for OpenVMS/Server Installation and Configuration Guide.
  10. Start Advanced Server for OpenVMS (set up for startup on reboot). For this procedure, see the Advanced Server for OpenVMS/Server Installation and Configuration Guide.
  11. Start the ACME server. Use the following command:


      $ @SYS$STARTUP:NTA$STARTUP_NT_ACME
    
  12. Start RPC. Use the following command:


      $ @SYS$STARTUP:DCE$RPC_STARTUP.COM
    
  13. See Appendix D for detailed information about upgrading from COM Version 1.0 for OpenVMS to COM Version 1.1-B for OpenVMS.
  14. Configure COM for OpenVMS. For this procedure, see Section 4.10 and Section 6.2.
    • Populate the OpenVMS Registry. For this procedure, see Section 6.2. Use option 3 to populate the OpenVMS Registry database.
    • Create any OpenVMS and Advanced Server for OpenVMS accounts needed by the COM for OpenVMS Service Control Manager. For more information, see Section 6.2. Use option 8 to create the accounts.
  15. Edit the SYLOGICALS.COM file and add the following line:


      $ DEFINE DCOM$TO_BE_STARTED TRUE
    
  16. Start COM for OpenVMS. For this procedure, see Section 4.11.

4.6 Installing COM for OpenVMS on an OpenVMS Cluster

Note

This cluster installation procedure assumes you are installing COM for OpenVMS on a single system disk.

Use the following procedure:

  1. Install OpenVMS Version 7.2-1 on all system disks as required. For this procedure, see the OpenVMS Alpha Version 7.x Upgrade and Installation Manual.
  2. Install TCP/IP. For this procedure, see the DIGITAL TCP/IP Services for OpenVMS: Installation and Configuration manual or your TCP/IP supplier's documentation.
  3. Boot the installed system from the system disk.
  4. Install COM Version 1.1-B for OpenVMS. For this procedure, see Section 4.9.
  5. Install Advanced Server for OpenVMS on this node in the cluster. For this procedure, see the Advanced Server for OpenVMS/Server Installation and Configuration Guide.

    Note

    You must install Advanced Server for OpenVMS on at least one Alpha node in the cluster. On the other nodes, you can either install Advanced Server for OpenVMS or select External Authentication images (only) .
  6. Configure TCP/IP (set up for startup on reboot on each node) and start TCP/IP. You must configure the PWIP driver for Advanced Server for OpenVMS to use TCP/IP. For information about configuring TCP/IP, see the DIGITAL TCP/IP Services for OpenVMS: Installation and Configuration manual or your TCP/IP supplier's documentation.
  7. Configure the OpenVMS Registry:
    • Run REG$CONFIG.COM to configure the OpenVMS Registry. You need to configure the OpenVMS Registry only once for the cluster. See Section 11.2.
    • Set the SYS$REGISTRY logical to DEFINE/SYSTEM on every Alpha node in the cluster that will run the OpenVMS Registry server.
    • Edit the SYLOGICALS.COM file on every node in the cluster as follows:
      • If the cluster uses a single, cluster-common SYLOGICALS.COM file that is called by each node's SYLOGICALS.COM file, you do not need to make any changes.
      • On those nodes where you do not want the OpenVMS Registry server to run, add the following line to the SYLOGICALS.COM file:


          $ DEFINE/SYSTEM REG$TO_BE_STARTED FALSE
        

      Advanced Server for OpenVMS requires that the OpenVMS Registry be running on a node in the cluster.
  8. Configure DCE.

    Note

    You do not need DCE to run COM for OpenVMS, but if your environment uses DCE, Compaq recommends that you start DCE now.

    For this procedure, see the DIGITAL DCE Installation and Configuration Guide.
  9. If you want to run DCE, start DCE now. You must configure DCE on each node on which you want to run DCE.
    For more information about OpenVMS external authentication, see Section 5.1.
  10. Configure and start Advanced Server for OpenVMS. For this procedure, see the Advanced Server for OpenVMS/Server Installation and Configuration Guide.
    If this node is running Advanced Server for OpenVMS, set up Advanced Server for OpenVMS for startup on reboot (edit the SYS$STARTUP file as necessary). You must reboot 0 to n times as needed, depending on your system configuration.
    If this node is not running Advanced Server for OpenVMS, edit the SYLOGICALS.COM file and define the PWRK$ACME_SERVER logical. For this procedure, see the Advanced Server for OpenVMS/Server Installation and Configuration Guide. For more information about the PWRK$ACME_SERVER logical, see Table 8-2.
  11. Start the ACME server. Use the following command:


      $ @SYS$STARTUP:NTA$STARTUP_NT_ACME
    
  12. Start RPC. Use the following command:


      $ @SYS$STARTUP:DCE$RPC_STARTUP.COM
    
  13. Configure COM for OpenVMS. For this procedure, see Section 4.10 and Section 6.2.
    • Populate the OpenVMS Registry. For this procedure, see Section 6.2. Use option 3 to populate the OpenVMS Registry database. You need to populate the OpenVMS Registry only once in a cluster.
    • Create any OpenVMS and Advanced Server for OpenVMS accounts needed by the COM for OpenVMS Service Control Manager. For more information, see Section 6.2. Use option 8 to create the accounts. You need to create these accounts only once in a cluster.
  14. Edit the SYLOGICALS.COM file and add the following line:


      $ DEFINE DCOM$TO_BE_STARTED TRUE
    
  15. Start COM for OpenVMS. For this procedure, see Section 4.11.

4.7 Upgrading COM for OpenVMS in an OpenVMS Cluster

Note

This cluster upgrade procedure assumes you are installing COM for OpenVMS on a single system disk.

Note

Before you start, Compaq recommends that you disable any Advanced Server for OpenVMS and layered products automatic startups so these products do not start until you have upgraded COM for OpenVMS and its associated components.

Use the following procedure:

  • Edit the SYLOGICALS.COM file to stop the following products from starting:
    • OpenVMS Registry (comment the line DEFINE/SYSTEM REG$TO_BE_STARTED TRUE )
    • COM for OpenVMS (comment the line DEFINE DCOM$TO_BE_STARTED TRUE )
  • Edit the SYS$STARTUP:SYSTARTUP_VMS.COM file to stop the following products from starting:
    • Advanced Server for OpenVMS (comment the line @SYS$STARTUP:PWRK$STARTUP.COM )

If COM for OpenVMS is currently running, shut down COM for OpenVMS first, Advanced Server for OpenVMS (if running), and then the OpenVMS Registry on all nodes in the cluster.

Use the following procedure:

  1. Upgrade to OpenVMS Version 7.2-1 on all required system disks. For this procedure, see the OpenVMS Alpha Version 7.x Upgrade and Installation Manual.
  2. Upgrade TCP/IP. For this procedure, see the DIGITAL TCP/IP Services for OpenVMS: Installation and Configuration manual or your TCP/IP supplier's documentation.
  3. Boot the upgraded system from the system disk.
  4. Upgrade to COM Version 1.1-B for OpenVMS. For this procedure, see Section 4.9.
  5. Upgrade Advanced Server for OpenVMS on this node in the cluster. For this procedure, see the Advanced Server for OpenVMS/Server Installation and Configuration Guide.

    Note

    You must install Advanced Server for OpenVMS on at least one Alpha node in the cluster. On the other nodes, you can either install Advanced Server for OpenVMS or select External Authentication images (only) .
  6. Configure TCP/IP (set up for startup on reboot on each node). You must configure the PWIP driver for Advanced Server for OpenVMS to use TCP/IP. For information about configuring TCP/IP, see the DIGITAL TCP/IP Services for OpenVMS: Installation and Configuration manual or your TCP/IP supplier's documentation.
  7. Configure the OpenVMS Registry as follows:
    • Run REG$CONFIG.COM to configure the OpenVMS Registry. See Section 11.2. You need to configure the OpenVMS Registry only once for the cluster.
    • Edit the SYLOGICALS.COM file on every node that will run the OpenVMS Registry server to define the SYS$REGISTRY logical. For example:


      $ DEFINE/SYSTEM SYS$REGISTRY cluster-visible-directory-specification
      

      Edit the SYLOGICALS.COM file on every node in the cluster as follows:
      • If the cluster uses a single, cluster-common SYLOGICALS.COM file that is called by each node's SYLOGICALS.COM file, you do not need to make any changes.
      • On those nodes where you do not want the OpenVMS Registry server to run, add the following line to the SYLOGICALS.COM file:


          $ DEFINE/SYSTEM REG$TO_BE_STARTED FALSE
        
  8. Configure and start Advanced Server for OpenVMS. For this procedure, see the Advanced Server for OpenVMS/Server Installation and Configuration Guide.
    If this node is running Advanced Server for OpenVMS, set up Advanced Server for OpenVMS for startup on reboot (edit the SYS$STARTUP file as necessary). You must reboot 0 to n times as needed, depending on your system configuration.
    If this node is not running Advanced Server for OpenVMS, edit the SYLOGICALS.COM file and define the PWRK$ACME_SERVER logical. For this procedure, see the Advanced Server for OpenVMS/Server Installation and Configuration Guide. For more information about the PWRK$ACME_SERVER logical, see Table 8-2.
  9. Start the ACME server. Use the following command:


      $ @SYS$STARTUP:NTA$STARTUP_NT_ACME
    
  10. Start RPC. Use the following command:


      $ @SYS$STARTUP:DCE$RPC_STARTUP.COM
    
  11. See Appendix D for detailed information about upgrading from COM Version 1.0 for OpenVMS to COM Version 1.1-B for OpenVMS.
  12. Configure COM for OpenVMS. For this procedure, see Section 4.10 and Section 6.2.
    • Populate the OpenVMS Registry. For this procedure, see Section 6.2. Use option 3 to populate the OpenVMS Registry database. You need to populate the OpenVMS Registry only once in a cluster.
    • Create any OpenVMS and Advanced Server for OpenVMS accounts needed by the COM for OpenVMS Service Control Manager. For more information, see Section 6.2. Use option 8 to create the accounts. You need to create these accounts only once in a cluster.
  13. Edit the SYLOGICALS.COM file and add the following line:


      $ DEFINE DCOM$TO_BE_STARTED TRUE
    
  14. Start COM for OpenVMS on a particular node. For this procedure, see Section 4.11.

4.8 Understanding the COM for OpenVMS Environment

COM for OpenVMS relies on a number of interrelated servers (processes) and operating system images. In most cases, the servers start automatically when you restart the system. (Automatic startup requires that you have installed and configured each component and have made appropriate changes to the SYLOGICALS.COM file.) For more information about starting and configuring the servers, see Section 4.3.

Figure 4-1 shows the relationships and dependencies of the processes and operating system layers.

Figure 4-1 Processes/Layers Relationships


Table 4-1 lists the process names and maps each name to its corresponding server.

Table 4-1 Process Name to Server Name Mapping
Process name Server name For more information
DCOM$RPCSS COM for OpenVMS Service Control Manager (SCM) Section 4.8.1
REGISTRY_SERVER OpenVMS Registry server Section 4.8.2
PWRK xxx Advanced Server for OpenVMS server (multiple processes) Section 4.8.3
ACME_SERVER ACME server Section 4.8.4
DCE$RPCD RPC endpoint mapper Section 4.8.5

The following sections list and describe the servers and the layers.


Next Contents Index