16-bit client app failing after installing Windows XP Service Pack 2 (XPSP2)
So I've been working on a recent escalation case for my team that deals with a 16-bit client application trying to use a 32-bit out of process com server. When the client application would do CoCreateInstance on the server, this would work fine (hr = S_OK) and the out of process com exe would start. However, if the client then did a QueryInterface for a specific interface, it would fail with this HR:
Error Result : 0x80010104 ( -2147417852 )
ID Defined as : RPC_E_FAULT
Error Type : OLE HRESULT Error
Facility : FACILITY_RPC 0x00000001 ( 1 )
Severity : SEVERITY_ERROR 0x00000001 ( 1 )
Code : 0x00000104 ( 260 )
Source Error file : Winerror.h
Message Text : RPC could not call the server or could not return the results of calling the server.
After digging around for a very long time and consulting with our development team, I finally found the solution. There was a change made in xpsp2 that essentially turned off the Universal Proxy Stub (UPS) by default but allowed for it to be turned back on through a registry key. That registry key is:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\OleAut]
"EnableUPS"=dword:00000001