我正在尝试使用一些 pinvoke 代码来调用 C 函数。该函数用数据填充缓冲区。
该结构设置为长度的 DWORD,后跟一个字符串。如何从 IntPtr 中提取字符串?
IntPtr buffer = Marshal.AllocHGlobal(nRequiredSize);
PInvokedFunction(buffer, nRequiredSize);
string s = Marshal.PtrToStringAuto(buffer + 4); //this is an error.
Marshal.FreeHGlobal(buffer);