Попробуйте прочитать определенное количество данных в указанном смещение перед возвращением.
template<
    typename SyncRandomAccessReadDevice,
    typename Allocator>
std::size_t read_at(
    SyncRandomAccessReadDevice & d,
    uint64_t offset,
    basic_streambuf< Allocator > & b,
    boost::system::error_code & ec);
Эта функция используется для считывания определенного количества байтов данных с устройства случайного доступа в указанном смещение. Звонок будет блокироваться до тех пор, пока не будет выполнено одно из следующих условий:
Эта операция реализована с точки зрения нуля или более вызовов функции read_some_at устройства.
- d
 
Устройство, с которого следует считывать данные. Тип должен поддерживать концепцию SyncRandomAccessReadDevice.
 
- offset
 
Смещение, при котором будут считаны данные.
 
- b
 
<basic_streambuf>объект, в который будут считаны данные.
 
- ec
 
Установить, какая ошибка произошла, если таковая имеется.
 
 
Количество переданных байтов.
Эта перегрузка эквивалентна вызову:
boost::asio::read_at(
    d, 42, b,
    boost::asio::transfer_all(), ec);