私は次の管理されていない構造を持っています。
struct MyNativeStruct_Foo
{
char product_name[4];
char product_model[2];
}
そして管理された同等物
[StructLayout(LayoutKind.Sequential, Pack = 1)]
public struct MyManagedStruct_Foo
{
[MarshalAs(UnmanagedType.LPStr, SizeConst = 4)]
public string product_name;
[MarshalAs(UnmanagedType.LPStr, SizeConst = 2)]
public string product_model;
}
残念ながら、文字列は null で終了していません。商品名は4文字すべて使用。「LPStr」で管理構造を定義する場合、文字列は 0 で終了する必要があります。
管理構造を定義する別の方法はありますか? カスタム Marshaller 属性を定義することは可能ですか? それとも他のアイデアがありますか?
ノート; ネイティブ構造は変更できません。
ありがとう
アンバーグ
[編集] LPStr に変更 (ジェイソン・ラークのコメント)