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; }