public UnalignedRecordReader(IBinaryStorageFile fileReader, int recordSize, Stream recordData, IntPtr stagingDataPointer)
        {
            _fileReader = fileReader;
            _recordSize = recordSize;

            _recordData    = stagingDataPointer;
            _managePointer = false;

            using (var windowedStream = new WindowedStream(recordData, recordSize))
                using (var outputStream = new IO.UnmanagedMemoryStream(stagingDataPointer, recordSize))
                    windowedStream.CopyTo(outputStream, recordSize);
        }
        public UnalignedRecordReader(IBinaryStorageFile fileReader, int recordSize, Stream recordData)
        {
            _fileReader = fileReader;
            _recordSize = recordSize;

            // Allocating 7 extra bytes to guarantee we don't ever read out of our memory space
            // _recordData = Marshal.AllocHGlobal(recordData.Length + 7);
            _recordData    = Marshal.AllocHGlobal(recordSize);
            _managePointer = true;

            using (var windowedStream = new WindowedStream(recordData, recordSize))
                using (var outputStream = new IO.UnmanagedMemoryStream(_recordData, recordSize))
                    windowedStream.CopyTo(outputStream, recordSize);

            _bitCursor = 0;
        }