TrueCrypt原理与系统开发(2):TrueCrypt Mount加载虚拟磁盘

第二部分、TrueCrypt Mount加载虚拟磁盘

      在创建完加密卷之后,怎么使用虚拟磁盘呢?这个时候需要加载虚拟磁盘,加载完虚拟磁盘后,就会在磁盘分区里多出一个分区,比如在我的电脑里可以看到一个新的本地磁盘 (L:)。那么,TrueCrypt里具体是怎么实现的?首先需要选择我们在上一步创建的加密卷,选择一个需要加载的分区,这其实就是在还没用到的分区卷标里选择一个,之后点击载入载入即可,这个时候就会找到加密卷进行加载,这时会需要用户输入创建加密卷时的设定的密码,加载成功后,就能看到新虚拟出来的磁盘了。

      因此,TrueCrypt另一个核心函数加载虚拟磁盘函数应该是接受加密卷、磁盘分区、用户密码等参数进行加载,该函数在TrueCrypt的原型是

 

[cpp:nogutter]  view plain copy
  1. int MountVolume (HWND hwndDlg,    
  2.                  int driveNo,    
  3.                  char *volumePath,    
  4.                  Password *password,    
  5.                  BOOL cachePassword,    
  6.                  BOOL sharedAccess,    
  7.                  MountOptions *mountOptions,    
  8.                  BOOL quiet,    
  9.                  BOOL bReportWrongPassword )    
 

 

      下面我们来看下每个参数具体的含义

 

 参数 类型 含义 示例
 hwndDlg HWND 传入的窗口句柄 NULL
 driveNo int 加载的磁盘分区序号 8
 volumePath char * 用户选择的加密卷文件 C://1.txt
 password Password 用户输入的密码 123456
 cachePassword BOOL 是否采用缓存密码 FALSE
 sharedAccess BOOL  FALSE
 mountOptions MountOptions 加载选项 
 quiet BOOL  FALSE
 bReportWrongPassword BOOL 是否报告错误的密码 TRUE

 

      MountVolume函数返回结果为

      -1  用户终止加载

      0   加载失败

      1   加载成功

      2   在共享模式加载成功

      下面我们来看具体的实例

 

[cpp:nogutter]  view plain copy
  1. int Mount(char* szFile, char* szPassword, int nDriveNo, HWND hwndDlg)    
  2. {    
  3.     int nDosDriveNo;    
  4.     char szFileName[TC_MAX_PATH+1]; /* The file selected by the user */    
  5.     Password VolumePassword;            /* Password used for mounting volumes */    
  6.     BOOL bCacheInDriver = FALSE;        /* Cache any passwords we see */    
  7.     BOOL bForceMount = FALSE;           /* Mount volume even if host file/device already in use */    
  8.     MountOptions mountOptions;    
  9.     int mounted = 0;    
  10.     //nDosDriveNo = 8;    
  11.     nDosDriveNo = nDriveNo;    
  12.     //strcpy(szFileName, "C://1.txt");    
  13.     //szFileName[8] = 0;    
  14.     strcpy(szFileName, szFile);    
  15.     szFileName[strlen(szFile)] = 0;    
  16.     bCacheInDriver = FALSE;    
  17.     bForceMount = FALSE;    
  18.     //strcpy(VolumePassword.Text, "123456");    
  19.     strcpy(VolumePassword.Text, szPassword);    
  20.     VolumePassword.Length = strlen (VolumePassword.Text);    
  21.     mountOptions.PersistentVolume = 0;    
  22.     mountOptions.PreserveTimestamp = 1;    
  23.     strcpy(mountOptions.ProtectedHidVolPassword.Text, "");    
  24.     mountOptions.ProtectedHidVolPassword.Length = 0;    
  25.     mountOptions.ProtectHiddenVolume = 0;    
  26.     mountOptions.ReadOnly = 0;    
  27.     mountOptions.Removable = 0;    
  28.     mountOptions.SystemVolume = 0;    
  29.     mounted = MountVolume (hwndDlg, nDosDriveNo, szFileName, &VolumePassword, bCacheInDriver,     
  30.         bForceMount, &mountOptions, FALSE, TRUE);    
  31.     if(mounted == 1)    
  32.         return 1;    
  33.     else    
  34.         return 0;    
  35.     return 1;    
  36. }    
 

 

      成功虚拟磁盘后,即会弹出虚拟出的磁盘,可以在虚拟磁盘里创建文件,在虚拟磁盘里的文件都会加密到用户指定的加密卷文件中,任何人想要看到虚拟磁盘里的文件,需要加载该虚拟磁盘并正确输入密码。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值