Troubleshooting
Problem
If EHLLAPI bridge is installed on the same machine where PCOMM is installed, it may render the PCOMM EHLLAPI automation fail to run on PCOMM.
Cause
The EHLLAPI bridge and PCOMM use common libraries with file name like EHLAPI32.dll, pcshll32.dll, pcsapi32.dll, etc. These are responsible for driving automation but have different functionalities. This is a typical library contention condition in Operating Systems; No two applications should have the same name for a library having different functionality. If there such a condition occurs, when the application is invoked, the OS selects the library which is found first in the search path.
- When we install PCOMM (like any other application), the ‘Path’ Environment variable gets updated with PCOMM’s installation path, eg: “C:\Program Files (x86)\IBM\Personal Communications\”.
- Further, when we install EHLLAPI Bridge, it too updates the ‘Path’ variable and prepends its name in the list of Application Paths. Eg: “C:\Program Files (x86)\IBM\EHLLAPI\”
With EHLLAPI Bridge applications path ahead of PCOMM’s, when an PCOMM automation application is executed, OS gets the EHLLAPI bridge’s path first and loads the library (.dll). Since the functionality of both are different, PCOMM automation fails.
Diagnosing The Problem
1. Without EHLLAPI Bridge
Path = “C:\Program Files (x86)\RSA SecurID Token Common; C:\windows\system32; C:\windows; C:\windows\System32\Wbem; C:\windows\System32\WindowsPowerShell\v1.0\; C:\Program Files (x86)\IBM\Java80\jre\bin; C:\Program Files (x86)\Skype\Phone\;C:\Program Files (x86)\IBM\Personal Communications\;”
A PCOMM EHLLAPI API call makes the OS look for EHLLAPI dll’s through the listed paths and as PCOMM directory contains all the required libraries, the EHLLAPI connection will go through.
2. With EHLLAPI Bridge
When EHLLAPI bridge is installed the ‘Path’ environment variable is prefixed with EHLLAPI bridge install location
Path = “C:\Program Files (x86)\IBM\EHLLAPI\; C:\Program Files (x86)\RSA SecurID Token Common; C:\windows\system32; C:\windows; C:\windows\System32\Wbem; C:\windows\System32\WindowsPowerShell\v1.0\; C:\Program Files (x86)\IBM\Java80\jre\bin; C:\Program Files (x86)\Skype\Phone\;C:\Program Files (x86)\IBM\Personal Communications\;”
Now with this, for a PCOMM EHLLAPI API call OS looks for EHLLAPI dll’s through the listed paths and as EHLLAPI bridge directory contains the entry point libraries (ehlapi32.dll and pcshll32.dll), which have the same name but the operations and the code flow are different, the EHLLAPI connection will fail.
Resolving The Problem
There is no resolution to this issue and only a workaround to deal with the situation, as it is not common for programs to have same/duplicate/conflicting names (as entry points) in windows applications.
In order for PCOMM automation libraries to work, PCOMM path must be preceded before the EHLLAPI bridge path.
Path = “C:\Program Files (x86)\IBM\Personal Communications\;C:\Program Files (x86)\IBM\EHLLAPI\; C:\Program Files (x86)\RSA SecurID Token Common; C:\windows\system32; C:\windows; C:\windows\System32\Wbem; C:\windows\System32\WindowsPowerShell\v1.0\; C:\Program Files (x86)\IBM\Java80\jre\bin; C:\Program Files (x86)\Skype\Phone\”
At any given point of time, either PCOMM automation will work or the automation on HOD through EHLLAPI bridge will.
Was this topic helpful?
Document Information
Modified date:
11 August 2018
UID
ibm10725431