Offline Processing

How are IComponent::setIoMode() and IAudioProcessor::setupProcessing() different regarding offline processing. Especially setIoMode() does not seems to make any sense since the audio processor is gonna be configured anyway?

Maybe reading the documentation about IComponent::setIoMode() helps:
Complex Plug-in Structures / Multi-timbral Instruments - VST 3 Developer Portal

Actually, the documentation does not make it better. Why does it confuse MIDI stuff (simple/advanced) with offline processing. The answer here: [Solved] Direct offline processing problem (Cubase 9.5) - Developer / VST 3 SDK - Steinberg Forums makes it even weirder. And offline processing is actually declared in setupProcessing(). So does a complex plugin then get two setIoMode() calls, one for advanced and one for offline processing (which is probably that Cubase Function “Direct Offline Processing”)?

Sorry, I misread your first post a little bit. The difference between IComponent::setIoMode and IAudioProcessor::setupProcessing is that the first one is called before IComponent::initialize is called.
Thus the plug-in does know that it is used in offline mode much earlier and may decide to do other things in initialize in that case.

so setIoMode() is called twice then? Like “advanced” and “offline processing”?

Where did I wrote that setIoMode it is called twice?
It’s called once before initialize is called.

You didn’t - it was my question. In case I have a complex plugin and expect an “isAdvanced” call, am I not getting this if the plugin is being used in “Direct Offline Processing” and setIoMode is being called with “offline processing”?

Maybe you describe what your issue is in more detail.
An “advanced” plug-in is always an instrument plug-in. In Cubase the “Direct Offline Processing” feature only supports FX plug-ins. So only one call of setIoMode is used in that context.