Конвертация void* в byte[]

Рейтинг: 1Ответов: 2Опубликовано: 05.07.2011

Пишу обёртку на С# для статической С++ библиотеки. С C++ не знаком. В unsafe контексте в параметре типа void* возвращается указатель на byte[]. Как этот массив выудить для дальнейшей обработки в C#? (Это текст который нужно преобразовать из ANSI в Unicode). Заранее благодарен.

Прототип:

MPFUN int MPAPI SignBufferEx(void **out_buf, int *out_len);

Вызов в работающей программе на C++:

void* buf = NULL;
SignBufferEx(&buf, &ln);

Вызов в моей:

[DllImport(pathdll)]
public static unsafe extern int SignBufferEx(void** out_buf, int* out_len)

Добавил код, но он возвращает не то, что ожидается :(

var buffor = new byte[ln];
var pBuffor = (byte*) buf;
for (var i = 0; i < ln; i++)
{
    buffor[i] = *(pBuffor+i);
}

Encoding textEnc = new UnicodeEncoding();
Console.Out.WriteLine("textEnc.GetString(buf) = {0}", textEnc.GetString(buffor));
sign = textEnc.GetString(buffor);

Ответы

Ответов пока нет.