Следующий код всегда будет вызывать исключение UnuthorizedAccessException (доступ к внутреннему буферу MemoryStream невозможен).
byte[] buf1 = { 2, 3, 5, 7, 11 };
var ms = new MemoryStream(buf1);
byte[] buf2 = ms.GetBuffer(); // exception will be thrown here
Это простое старое консольное приложение, и я работаю как администратор. Я не могу представить себе более привилегированную настройку, которую я мог бы дать этому коду. Так почему я не могу добраться до этого буфера? (А если никто не может, в чем смысл метода GetBuffer?)
Документы MSDN говорят
Чтобы создать экземпляр MemoryStream с общедоступным буфером, используйте MemoryStream, MemoryStream (array [], Int32, Int32, Boolean, Boolean) или MemoryStream (Int32).
Я этого не делаю?
P.S. Я не хочу использовать ToArray (), потому что это создает копию.