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 时发生访问冲突。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在使用阿里云OSS(Object Storage Service)的C-SDK进行Windows平台下的文件上传和下载时,确实需要妥善处理中断与续传逻辑。对于您的问题,我提供以下几点建议:
OSS C-SDK本身提供了断点续传的功能,但直接控制上传或下载的暂停与恢复可能需要您自定义实现逻辑。虽然标准SDK没有直接暴露“暂停”接口,但可以通过以下方式间接实现:
上传:可以考虑在调用oss_resumable_upload_file
时,通过控制外部条件(如设置标志位)来模拟暂停效果。当需要“暂停”时,不继续调用上传函数即可。由于OSS的断点续传机制是基于本地检查点文件的,下一次启动上传时,可以从上次的断点处继续。
下载:同理,对于下载操作,虽然直接的暂停接口不存在,但可以通过监控状态,在适当的时候停止调用oss_resumable_download_file
。再次下载时,利用之前保存的检查点信息恢复下载。
关于您遇到的异常情况,0xC0000005: 写入位置 0x00000000 时发生访问冲突
,这通常意味着程序尝试访问无效的内存地址。这可能是由多种原因引起的,包括但不限于库版本不兼容、内存管理错误等。针对这个问题,您可以尝试以下几个解决步骤:
确认依赖库:确保您的项目中使用的msvcr90.dll与OSS C-SDK所需的版本相匹配。不一致的运行时库可能会导致此类访问冲突。如果可能,尝试更新或重新配置您的开发环境以使用正确的库版本。
升级SDK:检查是否有OSS C-SDK的新版本发布。新版本可能已经修复了已知的问题。从阿里云官方文档获取最新的SDK并重新编译测试。
检查代码逻辑:回顾您的demo代码,特别是与oss_build_checkpoint_xml
调用相关的地方,确保所有参数有效且内存分配正确。有时候,错误的指针或未初始化的变量会导致这类异常。
调试与日志:使用调试工具(如Visual Studio的调试器)单步执行到异常发生点,观察变量值和调用栈,这有助于定位问题所在。同时,增加详细的日志记录,以便于分析问题发生的上下文。
如果以上方法仍不能解决问题,建议联系阿里云技术支持,提供更详细的错误信息和复现步骤,以便获得专业的帮助。