开发者社区 问答 正文

oss的windows版本c-sdk有64位么?有停止或暂停传输的接口么?


oss的windows版本c-sdk需要一个停止或暂停上传和下载的接口,自己写了一个demo,只能通过直接关进程来测试断点续传。


还有下载一个500多mb的文件时,oss_resumable_download_file函数运行中,oss_dump_checkpoint函数里的oss_build_checkpoint_xml会出现异常:
0x67514651 (msvcr90.dll)处(位于 oss_c_sdk_test.exe 中)引发的异常: 0xC0000005: 写入位置 0x00000000 时发生访问冲突。

展开
收起
xuanyuanya 2018-05-11 19:25:49 2257 分享 版权
阿里云 AI 助理回答

在使用阿里云OSS(Object Storage Service)的C-SDK进行Windows平台下的文件上传和下载时,确实需要妥善处理中断与续传逻辑。对于您的问题,我提供以下几点建议:

1. 控制上传和下载的暂停与恢复

OSS C-SDK本身提供了断点续传的功能,但直接控制上传或下载的暂停与恢复可能需要您自定义实现逻辑。虽然标准SDK没有直接暴露“暂停”接口,但可以通过以下方式间接实现:

  • 上传:可以考虑在调用oss_resumable_upload_file时,通过控制外部条件(如设置标志位)来模拟暂停效果。当需要“暂停”时,不继续调用上传函数即可。由于OSS的断点续传机制是基于本地检查点文件的,下一次启动上传时,可以从上次的断点处继续。

  • 下载:同理,对于下载操作,虽然直接的暂停接口不存在,但可以通过监控状态,在适当的时候停止调用oss_resumable_download_file。再次下载时,利用之前保存的检查点信息恢复下载。

2. 异常处理

关于您遇到的异常情况,0xC0000005: 写入位置 0x00000000 时发生访问冲突,这通常意味着程序尝试访问无效的内存地址。这可能是由多种原因引起的,包括但不限于库版本不兼容、内存管理错误等。针对这个问题,您可以尝试以下几个解决步骤:

  • 确认依赖库:确保您的项目中使用的msvcr90.dll与OSS C-SDK所需的版本相匹配。不一致的运行时库可能会导致此类访问冲突。如果可能,尝试更新或重新配置您的开发环境以使用正确的库版本。

  • 升级SDK:检查是否有OSS C-SDK的新版本发布。新版本可能已经修复了已知的问题。从阿里云官方文档获取最新的SDK并重新编译测试。

  • 检查代码逻辑:回顾您的demo代码,特别是与oss_build_checkpoint_xml调用相关的地方,确保所有参数有效且内存分配正确。有时候,错误的指针或未初始化的变量会导致这类异常。

  • 调试与日志:使用调试工具(如Visual Studio的调试器)单步执行到异常发生点,观察变量值和调用栈,这有助于定位问题所在。同时,增加详细的日志记录,以便于分析问题发生的上下文。

如果以上方法仍不能解决问题,建议联系阿里云技术支持,提供更详细的错误信息和复现步骤,以便获得专业的帮助。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答