Как можно редактировать данные внутри Windows .Storage.Streams.Buffer - PullRequest
0 голосов
/ 12 февраля 2020

в UWP, подключаемые модули VPN должны инкапсулировать IP-пакеты, полученные от ОС, путем редактирования данного буфера (Storage.Streams.Buffer), буфер доступен только для чтения, поэтому я не могу заменить его другим буфером. в c ++ / winrt есть функция с именем data () внутри буфера, которая возвращает указатель uint8, но в c# такого поля или функции нет. как я должен редактировать данные в буфере?

        public void Encapsulate(VpnChannel channel, VpnPacketBufferList packets, VpnPacketBufferList encapulatedPackets)
        {
            var packet = packets.RemoveAtBegin();
            var dataBuffer = packet.Buffer; //read-only field
            /*How to edit above buffer without replacing it*/


        }

1 Ответ

0 голосов
/ 14 февраля 2020

выяснил, что есть функция, принадлежащая классу Array и в пространстве имен System.Collections.Generic с именем CopyTo(IBuffer), и, похоже, ее даже нет в документации Microsoft.

using namespace System.Collections.Generic;
.
.
.
byte [] data;
data.CopyTo(YourBuffer);
...