回复: 关于windows下对磁盘DeviceIoControl操作时,碰到GetLastError 5的问题
#6 回 feng851 的帖子 [lwei24 07-12 18:21]
feng851:#define UNICODE 1
#define _UNICODE 1
/* The code of interest is in the subroutine GetDriveGeometry. The
code in main shows how to interpret the results of the call. */
....... (2022-07-12 17:59)
其实在FSCTL_LOCK_VOLUME前,我还调用了IOCTL_DISK_GET_DRIVE_LAYOUT_EX、IOCTL_DISK_DELETE_DRIVE_LAYOUT这两个控制码,也没有看见它报错GetLastError 5,不知道为什么到了FSCTL_LOCK_VOLUME这个控制码,它就报错5 - 拒绝访问
#7 [feng851 07-13 08:32]
FSCTL_LOCK_VOLUME IOCTL (winioctl.h)
Locks a volume if it is not in use. A locked volume can be accessed only through handles to the file object (*hDevice) that locks the volume. For more information, see the Remarks section.
你插个优盘,不打开它,然后FSCTL_LOCK_VOLUME IOCTL这个优盘的试试?
#8 回 feng851 的帖子 [lwei24 07-22 16:10]
feng851:FSCTL_LOCK_VOLUME IOCTL (winioctl.h)
Locks a volume if it is not in use. A locked volume can be accessed only through handles to the file object (*hDevice) that locks the volume. For more information, see the Remarks section.
....... (2022-07-13 08:32)
试了很多次,还是GetLastError 5
#9 [feng851 07-22 17:17]
会不会在之前先要调用FSCTL_DISMOUNT_VOLUME?
#10 回 feng851 的帖子 [lwei24 07-22 17:40]
feng851:会不会在之前先要调用FSCTL_DISMOUNT_VOLUME? (2022-07-22 17:17)
在MFC上的项目迁移到Qt上,MFC运行是没有问题,但是到了Qt上的FSCTL_LOCK_VOLUME 锁盘操作就报错GetLastError 5。即使是刚刚插入的硬盘,什么也没有操作,直接调试,仍然是在锁盘位置GetLastError 5。其实在锁盘之前还创建句柄、销毁分区IOCTL_DISK_DELETE_DRIVE_LAYOUT、刷新IOCTL_DISK_UPDATE_PROPERTIES也没有问题,不知道为啥一到锁盘就报错5了……