IUnknown kennt Delphi auch,
aber fast Egal, da es ein Nachfahre von IInterface ist.
Erstmal mußt du auf die Speicherausrichtung achten:
Alte Delphis richten Standardmäßig nach "maximal" 4 Byte aus und etwas Neuere nach 8 Byte.
Wie im C dort der Standard ist, weiß ich nicht.
Also entweder das gleiche Align des C-Compilers explizit für diesen Record oder die ganze
Unit einstellen.
{$ALIGN ...}
Oder Packed-Records verwenden.
Auf Seite des C auch Packed oder im Delphi mit FüllBytes arbeiten.
Speichergrößen:
In C++ sind ENUMs/SETs gern so groß wie ein INT
und in Delphi so klein wie möglich (meistens Byte und dann Word, LongWord oder UInt64).
{$MINENUMSIZE ...}