在返回前,在指定的偏移量处写入一定量的数据。
template< typename SyncRandomAccessWriteDevice, typename Allocator, typename CompletionCondition> std::size_t write_at( SyncRandomAccessWriteDevice & d, uint64_t offset, basic_streambuf< Allocator > & b, CompletionCondition completion_condition, boost::system::error_code & ec, constraint_t< is_completion_condition< CompletionCondition >::value > = 0);
此函数用于将特定数量的字节数据写入具有随机访问的设备中的指定偏移量。调用将阻塞,直到满足以下条件之一:
basic_streambuf
中的所有数据。此操作通过零次或多次调用设备的 write_some_at 函数来实现。
要写入数据的设备。类型必须支持 SyncRandomAccessWriteDevice 概念。
将要写入_数据的偏移量_。
将从中写入数据的 basic_streambuf
对象。
用于确定写入操作是否完成的函数对象。函数对象的签名必须是:
std::size_t completion_condition( // Result of latest write_some_at operation. const boost::system::error_code& error, // Number of bytes transferred so far. std::size_t bytes_transferred );
返回值为 0 表示写入操作已完成。非零返回值表示下一次调用设备 write_some_at 函数时要写入的最大字节数。
用于指示发生何种错误(如果有)。
已写入的字节数。如果发生错误,则返回错误前成功传输的总字节数。