2644|0

70

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

如何移除一个驱动器盘符呢? [复制链接]

以下代码能够卸除D盘的卷,D盘没有读写操作后先将其锁定,然后再将卷卸下,之后打开我的电脑后不能再访问D盘(但是我的电脑中依然能看见“驱动器D”)。但是我想进一步删除盘符D(即在我的电脑中不能再看见D盘),而且能再将D盘装配上去,且里面的数据不能丢失,如何实现呢?

  1. #include
  2. #include
  3. #include
  4. void main()
  5. {
  6. HANDLE hDevice;//handle to the drive to be examined
  7. BOOL lockResult;//lock results flag
  8. BOOL dismountResult;//dismount results flag
  9. BOOL unlockResult;//unlock results flag
  10. DWORD cbReturned;//discard results
  11. DWORD dwError;

  12. cout<<"Dismount drive D, Y or N?";
  13. char chDismount;
  14. cin>>chDismount;
  15. if(chDismount == 'Y' || chDismount == 'y')
  16. {
  17.   //打开卷
  18.   hDevice = CreateFile("\\.\D:",//drive to open   
  19.    GENERIC_READ   |   GENERIC_WRITE,
  20.    FILE_SHARE_READ   |   FILE_SHARE_WRITE,//share mode
  21.    NULL,         //default security attributes
  22.    OPEN_EXISTING,//disposition
  23.    0,            //file attributes.
  24.    NULL);       // don't copy any file's attributes   
  25.   if(hDevice   ==   INVALID_HANDLE_VALUE)//can't open the drive   
  26.   {
  27.    dwError   =   GetLastError();
  28.    cout<<"Fail to create file!"<
  29.    return;
  30.   }
  31.   //当驱动器D无读写时,即可锁定卷
  32.   lockResult = DeviceIoControl(
  33.    hDevice,
  34.    FSCTL_LOCK_VOLUME,
  35.    NULL,
  36.    0,
  37.    NULL,
  38.    0,
  39.    &cbReturned,
  40.    NULL);
  41.   if(!lockResult)
  42.    cout<<"Fail to lock volume!"<
  43.   else
  44.   {
  45.    //锁定成功即可将卷卸除
  46.    dismountResult = DeviceIoControl(
  47.     hDevice,
  48.     FSCTL_DISMOUNT_VOLUME,
  49.     NULL,
  50.     0,
  51.     NULL,
  52.     0,
  53.     &cbReturned,
  54.     NULL);
  55.    if(!lockResult)
  56.     cout<<"Fail to dismount volume!"<
  57.    else
  58.     cout<<"Dismount successful!"<
  59.   }
  60. }
  61. }
复制代码
点赞 关注

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表