Could you hire me? Contact me if you like what I’ve done in this article and think I can create value for your company with my skills.

July 20, 2007 / by Zsolt Soczó

Gyors PInvoke string marshalling visszafelé

Mekkora költsége van, ha van egy pointerünk egy natív stringre, és azt vissza akarjuk kapni managed oldalon Sytem.Stringként? A példában a string egy delegate-en kereszüli callback során jön át a manazsolt oldalra.

Implict marshall:

static void Target1(string _str)
{
}

Kézi marshall:

static void Target2(IntPtr _str)
{
string str = Marshal.PtrToStringUni(_str);
}

Unsafe marshall:

unsafe static void Target3(IntPtr _str)
{
string str = new string((char*)_str);
}

Az utolsó megoldás van, hogy 10x gyorsabb, mint az első kettő. Ravasz.

Forrás.

Could you hire me? Contact me if you like what I’ve done in this article and think I can create value for your company with my skills.