This is getting more complicated.
After some failing workarounds and more discussions, we arrived at the more general question.
Currently (and in the past), when during process() reading the simulation mode through the SIML link fails, the record goes into LINK/INVALID, without calling the device support and without using the IVOV/IVOA configuration (for output records).
We do not think this is really appropriate. If just its simulation switch becomes unavailable, why should the record become INVALID? Turning everything white/magenta, not writing to the hardware, etc.? If you keep your simulation logic on a separate (soft)
IOC, shutting it down will effectively brick your running production IOC. There's not enough reason for such drastic measures.
I propose changing the behavior towards ignoring the return value from the SIML check in process().
If there was a way to generate out-of-band events for records, this would be a a perfect use case. I think that in the current context we should just ignore it.
This is a change in behavior, but we are at a major version jump, and I wouldn't expect an application to rely on records being LINK/INVALID for a disappearing SIML.
What do you think?