Also.. wir reden hier ja von unmanaged code, da kann man ja schweinereien machen
Ich würde erstmal versuchen, ein Struct (Packed Record) zu definieren, dass genau das gleiche Memory-Layout hat wie eine Nachricht.
Damit braucht man eigentlich nur noch einen Pointer auf den jeweiligen Nachrichtentyp auf den Beginn der Nachricht setzen, und kann dann schon sauber drauf zugreifen.
Das gibt natürlich einen Record pro Nachrichtentyp, aber der Zugriff ist dann ungeheuer bequem, und man muss nix umwandeln, umkopieren etc. Das heisst auch der Zugriff ist ziemlich flott.
Ich habe auf die Art mal einen Speicherbereich den ich aus einer SPS ausgelesen habe ausgewertet. War sehr schnell und sehr zuverlässig, solange sich das Layout der Nachrichten nicht verändert