для начала надо понять разницу между строками в C и в C#, а потом почитать что-нибудь про взаимодействие с неуправляемым кодом. и тогда все само расшифруется.

Код:
        [DllImportAttribute("owen_io.dll", EntryPoint = "OwenIO", CallingConvention = CallingConvention.StdCall)]
        public static extern int OwenIO(int adr, int adr_type, int is_read, string command, IntPtr dev, ref int params_sz);

        public static int read_owen_io(int adr, int adr_type, string command)
        {
            int sz = 0;
            IntPtr param = Marshal.AllocCoTaskMem(15);

            int res = OwenIO(adr, adr_type, 1, command, param, ref sz);

            if (res == 0)
            {
                string value = Marshal.PtrToStringAnsi(param, sz);
            }
            Marshal.FreeCoTaskMem(param);

            return res;
        }