Эквивалент UnsafeAddrOfPinnedArrayElement в Silverlight 5 - PullRequest
1 голос
/ 31 декабря 2011

Я пытаюсь преобразовать некоторые вызовы метода pInvoke в Silverlight 5, но столкнулся с проблемой. Как мне сделать эквивалент вызова UnsafeAddrOfPinnedArrayElement в Silverlight 5?

 public int Read(byte[] buffer, int index, int length)
    {
        var gch = GCHandle.Alloc(buffer);
        try
        {
             //Desktop .NET Framework code:              
             //var ptr = Marshal.UnsafeAddrOfPinnedArrayElement(buffer, index);

             //WHAT IS THE SL 5 Equivalent here?

             //TODO Call some pinvoke code that requires 'ptr'

        }
        finally
        {
            gch.Free();
        }
    }

1 Ответ

0 голосов
/ 31 декабря 2011

Из того, что я читаю, UnsafeAddrOfPinnedArrayElement просто получает адрес памяти элемента в массиве, почему бы просто не реализовать его самостоятельно?Вы также избежите необходимости выделять весь буфер во второй раз ...

public int Read(byte[] buffer, int index, int length)
{
    unsafe
    {
        fixed(byte *ptr = buffer)
        {
            byte *ptr = ptr + index;
        }
    }
}
...