например, написать структуру с нашей строкой
struct StructWithStr
{
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = SIZE_CONST)]
public string OurStr;
}
заполнить ее нужной строкой
написать хелпер сохранения структуры в указатель
public static class UnMemory<T> where T : struct
{
public static void SaveInMem(T memoryObject, ref IntPtr ptr)
{
if (default(T).Equals(memoryObject))
{
// объявляем указатель на кусок памяти
ptr = Marshal.AllocCoTaskMem(Marshal.SizeOf(typeof(T)));
return;
}
if (ptr == IntPtr.Zero)
{
// объявляем указатель на кусок памяти
ptr = Marshal.AllocCoTaskMem(Marshal.SizeOf(typeof(T)));
// записываем в память данные структуры
Marshal.StructureToPtr(memoryObject, ptr, false);
}
else
{
// записываем в память данные структуры
Marshal.StructureToPtr(memoryObject, ptr, true);
}
}
}
передать IntPtr в библиотеку