使用带有 FSCTL_LOCK_VOLUME 的 DeviceIoControl 来锁定卷。调试器问题
Posted
技术标签:
【中文标题】使用带有 FSCTL_LOCK_VOLUME 的 DeviceIoControl 来锁定卷。调试器问题【英文标题】:Using DeviceIoControl with FSCTL_LOCK_VOLUME to lock a volume. Debugger issue 【发布时间】:2012-09-30 11:04:49 【问题描述】:我正在使用带有 FSCTL_LOCK_VOLUME 的 DeviceIoControl 在直接读/写磁盘之前锁定 USB 笔式驱动器。该程序有效 - 有时。 我遇到了锁定调用本身的问题。当我在 Visual Studio 2008 中执行命令时,结果是正确的并且锁定成功 - 每次!,当运行代码(调试或不调试)时,调用偶尔会失败,句柄无效。唯一显着的区别是在步进时会有半秒的暂停——我对此很满意,但在运行/调试时调用会立即失败。
请你给我一个提示,告诉我这是在哪里掉下来的。
我认为这是真正的技术人员!
【问题讨论】:
即使 CreateFile 为您返回了一个有效的句柄,但该句柄可能没有正确的规范以使您的 FSCTL_LOCK_VOLUME 操作正常工作。例如,必须指定FILE_SHARE_READ
和 FILE_SHARE_WRITE
。我对 DeviceIoControl 的体验是错误消息准确但基本详细。无效句柄意味着您的句柄对该操作无效。
【参考方案1】:
听起来像是一个计时错误。是否有其他线程可以访问句柄?如果是这样,其中一个可能会在您调用 DeviceIoControl 之前将其关闭。
【讨论】:
以上是关于使用带有 FSCTL_LOCK_VOLUME 的 DeviceIoControl 来锁定卷。调试器问题的主要内容,如果未能解决你的问题,请参考以下文章
HBase - 使用带有值列表的一列与使用带有列列表的一列族的优缺点是啥?
使用带有 ajax Rest 调用的 Spring CSRF 和带有 Thymeleaf 的 HTML 页面
如何使用带有或不带有 Appium 的 Robot Framework 集成 WinAppDriver?
如何在带有 React 的 Typescript/JSX 中使用带有箭头函数的泛型?