VC++弹出U盘

摘自http://bbs.pcbeta.com/viewthread-1067733-1-1.html

windows弹出可移动媒体的时候,首先通过DeviceIoControl发送FSCTL_LOCK_VOLUME IOCTL来锁定卷,然后发送FSCTL_DISMOUNT_VOLUME IOCTL来卸载卷,这两步之后,可确保卷不被其他程序使用,这时拔出可移动磁盘可以确保没有损害,虽然并没有删除盘符,但这没有关系。若在托盘弹出u盘,则会通过DeleteVolumeMountPoint删除卷装载点,删除掉u盘盘符,使其无法访问。虽然前者没有删除掉盘符,但是由于卷已经被lock和dismount,不会读写可移动磁盘,此时拔出是安全的。

上面的方法貌似没什么用,U盘盘符还在,U盘还室能打开。


下面的方法来自http://bbs.csdn.net/topics/390342966


//弹出U盘
//CreateFile的dwDesiredAccess至少要有GENERIC_READ权限,dwShareMode要有FILE_SHARE_READ | FILE_SHARE_WRITE属性
HANDLE hDevice = CreateFile(pszVolume, GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL);

if (INVALID_HANDLE_VALUE == hDevice)
{
	return;
}

DWORD dwJunk = 0;
BOOL bRet = DeviceIoControl(hDevice,IOCTL_STORAGE_EJECT_MEDIA, NULL, 0, NULL, 0, &dwJunk, NULL);

CloseHandle(hDevice);

网上有人说这种方法没有用,但我这里一直没什么问题。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 要在bat文件中弹出U盘,可以使用以下命令: ```bat echo off %SystemRoot%\System32\rundll32.exe shell32.dll,Control_RunDLL hotplug.dll ``` 上述代码中,`echo off`命令用于关闭命令提示符窗口的回显。`%SystemRoot%\System32\rundll32.exe`是Windows系统自带的一个可执行文件,可用于运行DLL文件中的函数。`shell32.dll`是一个包含了许多Windows Shell动作的DLL文件,而`hotplug.dll`中包含了U盘等可移动设备的相关函数。 通过在bat文件中运行`rundll32.exe shell32.dll,Control_RunDLL hotplug.dll`命令,会打开一个设备管理器窗口,其中包含了可移动设备,例如U盘。你可以从设备管理器中选择U盘设备并进行弹出操作。 注意:这种方法只是打开了设备管理器窗口,需要手动选择并弹出U盘设备。如果要自动弹出U盘,需要结合使用其他语言或脚本与WinAPI进行交互。 ### 回答2: 实际上,bat文件无法直接弹出U盘,因为这涉及到操作系统和硬件的功能。但是我们可以编写一个bat文件来安全地卸载U盘,然后才能将其从电脑上取出。 下面是一个示例的bat文件内容: @echo off echo 正在卸载U盘,请稍候... echo. echo 您可以安全地将U盘拔出。 echo. echo 注意:请确保没有正在使用U盘上的文件。 echo. rem 找到U盘的驱动器号 for /f "tokens=2 delims==" %%i in ('wmic logicaldisk where "drivetype=2" get deviceid /value') do set "drive=%%i" rem 卸载U盘 echo select volume %drive:~0,2% > unmount.txt echo remove dismount >> unmount.txt diskpart /s unmount.txt rem 删除临时文件 del unmount.txt 上述bat文件的作用是通过使用diskpart命令来卸载U盘。在bat文件中,我们首先使用wmic命令来获取U盘的驱动器号,然后将其存储在一个变量中。接下来,我们使用echo命令生成一个文本文件unmount.txt,该文本文件包含了要在diskpart中执行的命令。最后,我们使用diskpart命令来执行unmount.txt中的命令,卸载U盘。执行完毕后,请确保关闭命令提示符窗口,然后才能安全地将U盘从电脑上取出。 需要注意的是,在执行此bat文件之前,请确保没有在使用U盘上的任何文件,并且请谨慎操作,以避免对U盘和计算机造成任何损坏。 ### 回答3: 要让bat文件弹出U盘,可以通过使用Windows命令行的弹出驱动器命令来实现。具体步骤如下: 1. 首先,打开文本编辑器(如记事本)创建一个新的批处理文件,文件后缀名为.bat。例如,命名为eject.bat。 2. 输入以下命令代码到bat文件中: ``` echo off set driveletter=U: %driveletter% ``` 其中,上述代码中的“U:”表示要弹出U盘的驱动器号码。如果你的U盘驱动器号不是U盘,则需要将代码中的“U:”替换为你的U盘驱动器的号码(如E盘的话修改为“E:”)。确保代码中的驱动器号码与你要弹出U盘的驱动器号码一致。 3. 保存bat文件,并双击运行该文件。 运行此bat文件后,系统会执行弹出驱动器命令,从而实现弹出U盘的目的。请注意,在完成U盘弹出之前,确保没有文件在U盘上处于打开状态,以免出现数据丢失的情况。 需要强调的是,由于bat文件中的命令是通过命令行执行的,弹出U盘的操作可能会遇到系统权限的限制。如果你不具备足够的权限,则可能无法成功弹出U盘。另外,有些U盘可能存在硬件或驱动程序的限制,导致无法在命令行中直接弹出。在这种情况下,你可能需要考虑其他解决方案或工具来实现弹出U盘操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值