DateTimeおよびDateTimeOffsetはアンマネージ呼び出しに使用することはできません。 Marshal.SizeOfメソッドによるサイズの取得や、Marshal.PtrToStructureメソッドによるポインタからの変換なども、例外エラーがスローされ、失敗します。

DateTime・DateTimeOffsetはアンマネージ呼び出しで使用することができない
using System;
using System.Runtime.InteropServices;

class Sample {
  static void Main()
  {
    // DateTimeのサイズを取得しようとする
    Console.WriteLine(Marshal.SizeOf(typeof(DateTime)));
    // ハンドルされていない例外: System.ArgumentException: 型 'System.DateTime' はアンマネージ構造体としてマーシャリングできません。有効なサイズ、またはオフセットの計算ができません。
    //    場所 System.Runtime.InteropServices.Marshal.SizeOfHelper(Type t, Boolean throwIfNotMarshalable)
    //    場所 Sample.Main()

    // ポインタからDateTimeに変換しようとする
    IntPtr ptr = Marshal.AllocHGlobal(32); // 適当なサイズの領域を確保 (何らかのデータが格納されていると仮定)

    DateTime dt = (DateTime)Marshal.PtrToStructure(ptr, typeof(DateTime));
    // ハンドルされていない例外: System.ArgumentException: 指定された構造体は高速転送型か、またはレイアウト情報を含んでいなければなりません。
    // パラメーター名: structure
    //    場所 System.Runtime.InteropServices.Marshal.PtrToStructureHelper(IntPtr ptr, Object structure, Boolean allowValueClasses)
    //    場所 System.Runtime.InteropServices.Marshal.PtrToStructure(IntPtr ptr, Type structureType)
    //    場所 Sample.Main()
  }
}

アンマネージ呼び出しで日時の値を扱いたい場合は、DateTime・DateTimeOffsetをToFileTimeToBinaryなどのメソッドで変換したり、Ticksプロパティなどの値を用いたりするなど、値を別のフォーマットに変換する必要があります。