8 {
9 if (strManaged == null)
10 {
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 {
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)