public override void Write(byte[] buffer, int offset, int count) { var pinnedBuffer = GCHandle.Alloc(buffer, GCHandleType.Pinned); var bufferPtr = pinnedBuffer.AddrOfPinnedObject(); var sizePtr = Marshal.AllocHGlobal(8); _stream.Write(bufferPtr + offset, count, sizePtr); pinnedBuffer.Free(); Marshal.FreeHGlobal(sizePtr); }