Import ANSI w CF

0

Witam.

Importuję zewnętrzną funkcję która zwraca wartość typu (char *) w formacie ANSI. Powiedzmy, że wygląda to tak:

[DllImport("foodll.dll")]
[return: MarshalAs(UnmanagedType.LPStr)]
static extern string foo(IntPtr handle);

W normalnym .NET wszystko działa jak powinno.
Niestety w .NET CF już nie, ponieważ obsługuje on tylko format Unicode, a parametry muszą być w formacie LPWStr:

[DllImport("foodll.dll")]
[return: MarshalAs(UnmanagedType.LPWStr)]
static extern string foo(IntPtr handle);

Tak więc choć deklaracja typu jest LPWStr (tak musi być, inaczej jest zgłaszany wyjątek), tak naprawdę jest to typ LPStr.
Pytanie brzmi, jak zamienić LPWStr LPStr ANSI na Unicode?
Istnieje jakiaś standardowa funkcja czy muszę ją sobie napisać?
Przypominam, że chodzi o .NET CF.
Proszę o radę.

Jacek

0

Już sobie poradziłem.
Użyłem MultiByteToWideChar do konwersji ANSI -> Unicode i ASCIIEncoding.GetBytes() do konwersji w drugą stronę.

Pozdrawiam Jacek

1 użytkowników online, w tym zalogowanych: 0, gości: 1