IConnectionPoint point value different depending on host

Hi, in my processor::connect function I’ve noticed that the underlying type of the IConnectionPoint depends on the host. This sort of makes sense though it was surprising. However, I’m unable to use the point->queryInterface function to get to the underlying interface consistently between hosts.

Specifically, if I run my plugin under Juce’s AudioPluginHost, the “type” of point is the class of my controller.

If I run it under VST3PluginTestHost, the “type” of point is IConnectionPoint.

This is fine as I don’t want to rely on casting the point pointer to my class. So, I tried using:

IPtr<IEditController> controller;
point->queryInterface(IEditController::iid, (void**)&controller)

And this is successful under Juce AudioPluginHost but not under VST3PluginTestHost. Under VST3PluginHost this returns a NOT kResultOk

I don’t really need for it to be cast to the controller, but I do want to be able to know that it is the controller and not something else (i guess maybe that doesn’t matter?) and then send it a couple of messages to communicate.

I guess the assumption is that the processor’s peer is always the controller?

The broader context of this was that I was working on drawing the waveform based on the samples passing through the processor. I’ve read up on Pirkle’s site and his book (and the vst docs) about using wait free queues to push this info from the process into the controller.

Thanks in advance for any help!

System:
OS X 12.6
VST SDK 3.7.5

Just another note: I’ve read the docs here: VST 3 API Documentation - VST 3 Developer Portal

And, I guess, it is implicit that the host will connect the processor and controller via connect and so I should not worry about point being anything BUT the controller or a proxy to it.