使用FSCTL_LOCK_VOLUME锁定驱动器

dspaces1

我在锁定C驱动器时遇到问题,因此以后可以提取一些文件信息。

#define wszDrive L"\\\\.\\PhysicalDrive0"
HANDLE targetVol = INVALID_HANDLE_VALUE;
DWORD stats;
targetVol = CreateFile(wszDrive,
        0,
        FILE_SHARE_READ | FILE_SHARE_WRITE,
        NULL,
        OPEN_EXISTING,
        /*FILE_FLAG_NO_BUFFERING | FILE_FLAG_RANDOM_ACCESS*/0,
        NULL);

    if (targetVol == INVALID_HANDLE_VALUE)    // cannot open the drive
    {
        cout << "error in ioControl with volume handler" << endl;
        system("pause");
    }

    if (DeviceIoControl(targetVol,
        FSCTL_LOCK_VOLUME,
        NULL, 0, NULL, 0,
        &stats,
        NULL) ==0)
    {
        cout << "Error with targetVol DeviceIo" << endl;
        ErrorExit(TEXT("GetProcessId"));
        system("pause");
    }

下面的错误出口返回“ GetProcessID失败,错误1:函数不正确。”

void ErrorExit(LPTSTR lpszFunction)
{
    // Retrieve the system error message for the last-error code

    LPVOID lpMsgBuf;
    LPVOID lpDisplayBuf;
    DWORD dw = GetLastError();

    FormatMessage(
        FORMAT_MESSAGE_ALLOCATE_BUFFER |
        FORMAT_MESSAGE_FROM_SYSTEM |
        FORMAT_MESSAGE_IGNORE_INSERTS,
        NULL,
        dw,
        MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
        (LPTSTR)&lpMsgBuf,
        0, NULL);

    // Display the error message and exit the process

    lpDisplayBuf = (LPVOID)LocalAlloc(LMEM_ZEROINIT,
        (lstrlen((LPCTSTR)lpMsgBuf) + lstrlen((LPCTSTR)lpszFunction) + 40) * sizeof(TCHAR));
    StringCchPrintf((LPTSTR)lpDisplayBuf,
        LocalSize(lpDisplayBuf) / sizeof(TCHAR),
        TEXT("%s failed with error %d: %s"),
        lpszFunction, dw, lpMsgBuf);
    MessageBox(NULL, (LPCTSTR)lpDisplayBuf, TEXT("Error"), MB_OK);

    LocalFree(lpMsgBuf);
    LocalFree(lpDisplayBuf);
    ExitProcess(dw);
}

你们知道发生了什么事吗?

埃里克·布朗

MSC的FSCTL_LOCK_VOLUME文档马上就说

锁定未使用的卷

C:驱动器几乎始终处于使用状态。唯一不使用它的时间是从不同的媒体启动。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用FSCTL_LOCK_VOLUME锁定驱动器

来自分类Dev

使用PowerShell检索锁定的BitLocker驱动器的卷标

来自分类Dev

安装 Windows 的驱动器已锁定。解锁驱动器并重试

来自分类Dev

使用`Format-Volume` cmdlet格式化没有驱动器号的RAM磁盘

来自分类Dev

如何使用USB驱动器/笔式驱动器?

来自分类Dev

如何在Windows 7中解锁锁定的驱动器?

来自分类Dev

如何访问锁定的硬盘驱动器?

来自分类Dev

Windows如何锁定驱动器以进行快速启动?

来自分类Dev

使用Delphi查找特殊驱动器

来自分类Dev

使用XCOPY的驱动器规范无效

来自分类Dev

使用Grub选择启动驱动器?

来自分类Dev

使用Delphi查找特殊驱动器

来自分类Dev

使用备用驱动器作为交换?

来自分类Dev

使用GParted克隆驱动器

来自分类Dev

哪个驱动器托架使用SSD?

来自分类Dev

使用的内核驱动器不是Nvidia

来自分类Dev

使用磁带驱动器而不是HDD?

来自分类Dev

使用Gparted完全清除驱动器

来自分类Dev

设置家庭使用的NAS驱动器

来自分类Dev

使用CIF替换远程驱动器

来自分类Dev

使用LINQ跳过驱动器中的EnumerateFiles在驱动器中

来自分类Dev

如何使用旧的Windows硬盘驱动器(如备份驱动器)?

来自分类Dev

如何使用DD将数据从旧驱动器迁移到新驱动器?

来自分类Dev

使用3个外部硬盘驱动器创建跨区驱动器

来自分类Dev

如何使用CMD将USB驱动器设置为本地驱动器?

来自分类Dev

初始保存到本地驱动器是否比使用网络驱动器更具弹性

来自分类Dev

使用JCIFS性能问题从本地驱动器复制文件以共享驱动器

来自分类Dev

ddrescue使用更大的中间驱动器。如何移回较小的驱动器?

来自分类Dev

如何使用cmd检测Truecrypt驱动器或给定驱动器的USB记忆棒?

Related 相关文章

  1. 1

    使用FSCTL_LOCK_VOLUME锁定驱动器

  2. 2

    使用PowerShell检索锁定的BitLocker驱动器的卷标

  3. 3

    安装 Windows 的驱动器已锁定。解锁驱动器并重试

  4. 4

    使用`Format-Volume` cmdlet格式化没有驱动器号的RAM磁盘

  5. 5

    如何使用USB驱动器/笔式驱动器?

  6. 6

    如何在Windows 7中解锁锁定的驱动器?

  7. 7

    如何访问锁定的硬盘驱动器?

  8. 8

    Windows如何锁定驱动器以进行快速启动?

  9. 9

    使用Delphi查找特殊驱动器

  10. 10

    使用XCOPY的驱动器规范无效

  11. 11

    使用Grub选择启动驱动器?

  12. 12

    使用Delphi查找特殊驱动器

  13. 13

    使用备用驱动器作为交换?

  14. 14

    使用GParted克隆驱动器

  15. 15

    哪个驱动器托架使用SSD?

  16. 16

    使用的内核驱动器不是Nvidia

  17. 17

    使用磁带驱动器而不是HDD?

  18. 18

    使用Gparted完全清除驱动器

  19. 19

    设置家庭使用的NAS驱动器

  20. 20

    使用CIF替换远程驱动器

  21. 21

    使用LINQ跳过驱动器中的EnumerateFiles在驱动器中

  22. 22

    如何使用旧的Windows硬盘驱动器(如备份驱动器)?

  23. 23

    如何使用DD将数据从旧驱动器迁移到新驱动器?

  24. 24

    使用3个外部硬盘驱动器创建跨区驱动器

  25. 25

    如何使用CMD将USB驱动器设置为本地驱动器?

  26. 26

    初始保存到本地驱动器是否比使用网络驱动器更具弹性

  27. 27

    使用JCIFS性能问题从本地驱动器复制文件以共享驱动器

  28. 28

    ddrescue使用更大的中间驱动器。如何移回较小的驱动器?

  29. 29

    如何使用cmd检测Truecrypt驱动器或给定驱动器的USB记忆棒?

热门标签

归档