I have a server that exposes a COM interface which I am trying to convert to 64-bit. I am having trouble getting an interface from the 64-bit version, however, and I don't understand why.

When I call QueryInterface with my IID, I can see that the request is handled on the server side, a valid pointer is passed back, and the return is S_OK. On the client side, though, I receive E_NOINTERFACE and a null pointer. However, if I query for IUnknown or IConnectionPointContainer I get a good pointer. So it seems to be OK with the interfaces defined by Windows, but not the ones defined by me.

I've tried using CoCreateInstanceEx with the MULTI_QI structure requesting my interface directly, and I've tried getting IUnknown first, then calling QueryInterface to get my interface. Both result in the same E_NOINTERFACE.

I don't understand how my server can be returning the right data, but the client gets E_NOINTERFACE.