昨日固定長の配列変数をAPIに渡すコードを書いたけど、もともとchar配列だったので、string変数を渡したほうが良いことに気が付いた。
1 2 3 4 5 6 7 8 9 10 11 12 |
[StructLayout(LayoutKind.Sequential)] public struct sdrplay_api_DeviceT { [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)] public string SerNo; public byte hwVer; public sdrplay_api_TunerSelectT tuner; public sdrplay_api_RspDuoModeT rspDuoMode; public byte valid; public double rspDuoSampleFreq; public IntPtr dev; } |
これだと直接文字列が取得できる。
今日は、ポインタをメンバに含む構造体の定義で悩んでいる。 unsafe宣言すればいいことは判っているけど、他の方法はないかな?