9 if (strManaged ==
null)
14 bool flag = strManaged.TryGetTrailByte(out data);
15 uint num = (uint)(strManaged.Length * 2);
23 *(uint*)(
void*)pNativeBuffer = num;
24 ptr = (
byte*)(
void*)pNativeBuffer + 4;
30 Buffer.
Memmove(ref *(
char*)ptr, ref strManaged.GetRawStringData(), (nuint)strManaged.Length + (nuint)1u);
46 string text = ((num != 1) ?
new string((
char*)(
void*)bstr, 0, (
int)(num / 2)) :
string.FastAllocateString(0));
49 text.SetTrailByte(((
byte*)(
void*)bstr)[num - 1]);
static void Memmove(ref byte dest, ref byte src, nuint len)
static unsafe uint SysStringByteLen(IntPtr s)
static IntPtr AllocBSTRByteLen(uint length)
static void FreeBSTR(IntPtr ptr)
static unsafe IntPtr ConvertToNative(string strManaged, IntPtr pNativeBuffer)
static void ClearNative(IntPtr pNative)
static unsafe string ConvertToManaged(IntPtr bstr)
static void CheckStringLength(int length)
static readonly IntPtr Zero