Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ ConvertToNative()

static unsafe IntPtr System.StubHelpers.BSTRMarshaler.ConvertToNative ( string strManaged,
IntPtr pNativeBuffer )
inlinestaticpackage

Definition at line 7 of file BSTRMarshaler.cs.

8 {
9 if (strManaged == null)
10 {
11 return IntPtr.Zero;
12 }
13 byte data;
14 bool flag = strManaged.TryGetTrailByte(out data);
15 uint num = (uint)(strManaged.Length * 2);
16 if (flag)
17 {
18 num++;
19 }
20 byte* ptr;
21 if (pNativeBuffer != IntPtr.Zero)
22 {
23 *(uint*)(void*)pNativeBuffer = num;
24 ptr = (byte*)(void*)pNativeBuffer + 4;
25 }
26 else
27 {
28 ptr = (byte*)(void*)Marshal.AllocBSTRByteLen(num);
29 }
30 Buffer.Memmove(ref *(char*)ptr, ref strManaged.GetRawStringData(), (nuint)strManaged.Length + (nuint)1u);
31 if (flag)
32 {
33 ptr[num - 1] = data;
34 }
35 return (IntPtr)ptr;
36 }
static IntPtr AllocBSTRByteLen(uint length)
Definition Marshal.cs:1740

References System.Runtime.InteropServices.Marshal.AllocBSTRByteLen(), System.Buffer.Memmove(), and System.IntPtr.Zero.