Multiple Instances of CPI-C Application Fail on Terminal Services (307481)



The information in this article applies to:

  • Microsoft Host Integration Server 2000

This article was previously published under Q307481

SYMPTOMS

A Common Programming Interface for Communications (CPI-C) application may fail to allocate an LU 6.2 session when multiple users attempt to run the application on a Windows 2000-based server that is running Terminal Services.

This problem only occurs under the following conditions:
  • The CPI-C application is installed on the server that is running Terminal Services.
  • The Host Integration Server 2000 End User Client is installed on the server that is running Terminal Services.
  • Each of the Terminal Services clients connects to the Terminal Services-based server using different domain user credentials.
When the problem occurs, the CPI-C application's Initialize_Conversation (CMINIT) call may fail with error 20 (CM_PRODUCT_SPECIFIC_ERROR).

CAUSE

The CPI-C library (Wcpic32.dll) is incorrectly adding a "Global" prefix to named objects (such as mutexes, semaphores, and events) when the library is used with the Host Integration Server 2000 End User Client on a Windows 2000 Server.

RESOLUTION

To resolve this problem, obtain the latest service pack for Host Integration Server 2000. For additional information, click the following article number to view the article in the Microsoft Knowledge Base:

328152 How to Obtain the Latest Host Integration Server 2000 Service Pack

The English version of this fix should have the following file attributes or later:

File nameDateTime
Wcpic32.dll09/11/20013:33 PM

NOTE: Because of file dependencies, the most recent fix that contains the preceding files may also contain additional files.

STATUS

Microsoft has confirmed that this is a problem in the Microsoft products that are listed at the beginning of this article. This problem was first corrected in Host Integration Server 2000 Service Pack 1.

MORE INFORMATION

The CPIC library should only use the "Global" prefix for named objects on a Windows 2000 Server running Terminal Services if both of the following are true:
  • The Host Integration Server 2000 Admin Client is installed on the Windows 2000 Terminal Server.
  • SnaBase is configured to run as a service in the Host Integration Server 2000 Admin Client's configuration.
The following is an excerpt from Microsoft Platform SDK and describes how the "Global" prefix is used with Windows 2000:

Terminal Services: A Terminal Services environment has a global namespace for events, semaphores, mutexes, waitable timers, file-mapping objects, and job objects. In addition, each Terminal Services client session has its own separate namespace for these objects. Terminal Services client processes can use object names with a "Global\" or "Local\" prefix to explicitly create an object in the global or session name space. For more information, see Kernel Object Name Spaces.

Windows 2000: On Windows 2000 systems without Terminal Services running, the "Global\" and "Local\" prefixes are ignored. The names of events, semaphores, mutexes, waitable timers, file-mapping objects, and job objects share the same namespace.

See the following Microsoft Knowledge Base article for a limitation on running invokable APPC or CPI-C TPs (Transaction Programs) on Terminal Server:

265001 PRB: SNA Server Invokable Transaction Programs Are Not Supported on Terminal Server


Modification Type:MinorLast Reviewed:3/23/2005
Keywords:kbBug kbfix kbHostIntegServ2000preSP1fix kbHostIntegServ2000SP1fix KB307481