我想用C ++中的readonly设置一个USB闪存盘。
我找到了一个使用带有文本文件作为参数的diskpart的解决方案,但是在命令提示符下这样做不起作用(而使用没有文本文件的diskpart工作)。另外,如果可能的话,我想避免使用第三个文本文件。
我看了一下libusb,但没有发现任何内容将设备与其驱动器号(我至少需要用户界面)联系起来。
我尝试过SetFileAttributes,但它以“Invalid parameter”错误结束。
我怎么能这样做?
谢谢。
[编辑]:我正在使用Win32。
答案 0 :(得分:1)
您需要使用IOCTL_DISK_SET_DISK_ATTRIBUTES
进行此操作,并使用IOCTL_DISK_GET_DISK_ATTRIBUTES
进行查询。
"\\\\?\\PhysicalDrive<X>"
FILE_READ_DATA|FILE_WRITE_DATA
为集合。对于查询访问可以
任何 init SET_DISK_ATTRIBUTES
SET_DISK_ATTRIBUTES sda = { sizeof(sda), TRUE };// not sizeof(GET_DISK_ATTRIBUTES).as in documentation, this mistake
sda.AttributesMask = DISK_ATTRIBUTE_READ_ONLY;
sda.Attributes = DISK_ATTRIBUTE_READ_ONLY;
和DeviceIoControl( hDevice, IOCTL_DISK_SET_DISK_ATTRIBUTES, &sda,
sizeof(sda), 0, 0, 0);
然而,这将仅从Windows 7开始工作