android sd 挂载流程_android sdcard挂载/卸载方法

vold有一个调试的功能,叫做vdc,对应源码中的vdc.c或vdc.cpp。

如果研究vdc的源码会发现安卓的变迁史。

Android 4.2-5.1

checkout分支jb-release。

vold支持的命令在CommandListener中定义。

CommandListener::VolumeCmd::VolumeCmd() :

VoldCommand("volume") {

}

int CommandListener::VolumeCmd::runCommand(SocketClient *cli,

int argc, char **argv) {

dumpArgs(argc, argv, -1);

if (argc < 2) {

cli->sendMsg(ResponseCode::CommandSyntaxError, "Missing Argument", false);

return 0;

}

VolumeManager *vm = VolumeManager::Instance();

int rc = 0;

if (!strcmp(argv[1], "list")) {

return vm->listVolumes(cli);

} else if (!strcmp(argv[1], "debug")) {

if (argc != 3 || (argc == 3 && (strcmp(argv[2], "off") && strcmp(argv[2], "on")))) {

cli->sendMsg(ResponseCode::CommandSyntaxError, "Usage: volume debug ", false);

return 0;

}

vm->setDebug(!strcmp(argv[2], "on") ? true : false);

} else if (!strcmp(argv[1], "mount")) {

if (argc != 3) {

cli->sendMsg(ResponseCode::CommandSyntaxError, "Usage: volume mount ", false);

return 0;

}

rc = vm->mountVolume(argv[2]);

} else if (!strcmp(argv[1], "unmount")) {

if (argc < 3 || argc > 4 ||

((argc == 4 && strcmp(argv[3], "force")) &&

(argc == 4 && strcmp(argv[3], "force_and_revert")))) {

cli->sendMsg(ResponseCode::CommandSyntaxError, "Usage: volume unmount [force|force_and_revert]", false);

return 0;

}

bool force = false;

bool revert = false;

if (argc >= 4 && !strcmp(argv[3], "force")) {

force = true;

} else if (argc >= 4 &

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值