私はネイティブ関数を使用していますが、C# での構造体のマーシャリングに小さな問題があります。別の構造体に構造体へのポインターがあります-たとえば、C#宣言:
[StructLayout(LayoutKind.Sequential, Pack=1, CharSet = CharSet.Auto)]
public struct PARENT
{
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
public string Name;
[MarshalAs(UnmanagedType.Struct, SizeConst=8)]
public CHILD pChild;
}
[StructLayout(LayoutKind.Sequential, Pack=1, CharSet = CharSet.Auto)]
public struct CHILD
{
public UInt32 val1;
public UInt32 val2;
}
PARENT 構造体には、CHILD 構造体へのポインターが必要です。API 関数の引数として (PARENT 構造体の) 「参照へのポインター」を渡す必要があります。
単一の参照 (インポートされた dll 関数の引数として「ref PARENT」) には問題はありませんが、「ref ref」を渡す方法は? アンセーフ コード (C ポインターを使用) を使用せずに可能ですか?
挨拶アーサー