Microsoft KB Archive/149231

From BetaArchive Wiki
Knowledge Base


Article ID: 149231

Article Last Modified on 8/5/2004



APPLIES TO

  • Microsoft OLE 4.0, when used with:
    • Microsoft Windows NT 3.51 Service Pack 5
    • Microsoft Windows 95



This article was previously published under Q149231

SUMMARY

CXPRX provides 32-bit marshaling code for the IConnectionPoint, IConnectionPointContainer, IEnumConnections, and IEnumConnectionPoints interfaces. The next version of Windows and Windows NT will provide marshaling code for these interfaces, so be sure to follow the installation instructions specified below to prevent accidental overwriting of the system provided marshaling code.

The following file is available for download from the Microsoft Download Center:

For additional information about how to download Microsoft Support files, click the following article number to view the article in the Microsoft Knowledge Base:

119591 How to Obtain Microsoft Support Files from Online Services


Microsoft scanned this file for viruses. Microsoft used the most current virus-detection software that was available on the date that the file was posted. The file is stored on security-enhanced servers that help to prevent any unauthorized changes to the file.

After downloading the file, run it in an empty directory with the -d switch to set up the directory structure:

CXPRX.EXE -d


NOTE: The x86 directory contains a build of CXPRX.DLL that will work on Windows 95 and the Intel x86 version of Windows NT 3.51. The MIPS and Alpha directories contain builds of CXPRX.DLL for use on the MIPS and Alpha versions of Windows NT 3.51. This code will not work with 16-bit applications. Please do not modify the code or the version number. Change the CPU variable in the makefile to build for different platforms.

MORE INFORMATION

The connection point interfaces (IConnectionPoint, IConnectionPointContainer, IEnumConnections, and IEnumConnectionPoints) are used by components to implement event handling. These interfaces are documented in the OLE Controls documentation. Windows 95 and Windows NT 3.51 did not provide marshaling code for these interfaces. Consequently these interfaces could only be used with inproc objects on these platforms. The marshaling code provided here allows these interfaces to be used by out- of-process objects on the Windows NT 3.51 and Windows 95 platforms.

The next version of Windows and Windows NT will provide marshaling code for the connection point interfaces. To prevent the overwriting of this system provided marshaling code, it is important that you follow the following installation instructions when you install the marshaling code provided here:

Installation Instructions

An installation program that installs the marshaling code should follow these steps:

  1. The installation program should check the system directory (determined at installation time by using the GetSystemDirectory() Win32 API) for the existence of CXPRX.DLL. If it exists and if the standard version- checking APIs indicate that it is a later version than the CXPRX.DLL provided by the installation program, it should not be overwritten and installation is complete. The version of CXPRX.DLL provided here is 1,0,0,3 (See CXPRX.RC). If CXPRX.DLL exists in the system directory but if it is an earlier version, overwrite it and installation is complete. If CXPRX.DLL does not exist in the system directory, go to step 2.
  2. The installation program should check for the existence of the following registry key to determine whether to continue installation or not:

          if (ERROR_SUCCESS != RegQueryValueEx(
          HKEY_CLASSES_ROOT,
          "Interface\\{B196B285-BAB4-101A-B69C-
           00AA00341D07}\\ProxyStubClsid32",
          NULL, REG_SZ, NULL, NULL))
          {
           ... go to step 3 ...
          }
          // else installation is complete;
                            

    This check prevents accidental overwriting of the system's installed marshaling code when the system does provide marshaling of these interfaces in the future. So if this key is present, marshaling code for these interfaces exists and the installation is complete.

  3. If installation gets past step 2, CXPRX.DLL should be copied to the system directory. Then the marshaling code must be registered in the registry by running REGSVR32.EXE CXPRX.DLL. REGSVR32.EXE will call the exported DllRegisterServer function in CXPRX.DLL to register the marshaling code. Installation is now complete.



Additional query words: CXPRX

Keywords: kbhowto kbdownload kbolearc kbfile kbautomation kbsample KB149231