dcom - Registering in COM+ expose less interfaces than Regsvr32 -
I am using the 32 bit COM library by registering with regsvr32 and all works well. Since I need to access it through 64 bit process, I am registering it as a COM + via component service administrative tool. The problem is, it seems that all COM interfaces are no longer coming up. What can be the reason for this?
There are two sides to this problem.
First of all, you can control manually that by adding these classes to the COM + application, which square is highlighted by COM +, the sections you do not include Immediately provide in-cost and it will fail only due to 32-bit / 64-bit incompatibilities.
Then comes Marshal. To give the consumer the interface of the newly created object, COM + should know how to make the interface martial. Unless you apply marshaling on your own default marshaling, it is used. Default Marshalling will work only when the following requirements are met: COM Server has a type of library, the interface is included in that type of library and the interface is fully automated-compatible. After this, the interface of custom types like structs such as structs are not correct in any manner of interface. If these requirements do not meet with COM +, then E_NOINTERFACE will return when the consumer invites CoCreateInstance () or IUnknown :: QueryInterface (). See this same question: You have basically three options: do not check the infringing interface, apply custom martialing (which I have not been able to know at present) or apply a new intermediate interface that will be automated-compatible.
Comments
Post a Comment