次のコードは常に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)を使用します。
私はそれをしていませんか?
PSコピーを作成するため、ToArray()を使用したくありません。