社区
硬件/系统
帖子详情
怎么实现弹出USB设备,而不是从系统中卸载
agu
2006-11-30 11:39:00
通常对USB的卸载操作,但我现在项目需要做一个"弹出"USB设备操作.就相当于在"我的电脑"里选中USB设备的盘符,单击鼠标右键,在单击"弹出"菜单项.这个"弹出"操作和从当前的系统中,通过在单击任务栏下的USB设备卸载是不同的.请问高手,应该怎么实现这样的操作,谢谢!
...全文
558
6
打赏
收藏
怎么实现弹出USB设备,而不是从系统中卸载
通常对USB的卸载操作,但我现在项目需要做一个"弹出"USB设备操作.就相当于在"我的电脑"里选中USB设备的盘符,单击鼠标右键,在单击"弹出"菜单项.这个"弹出"操作和从当前的系统中,通过在单击任务栏下的USB设备卸载是不同的.请问高手,应该怎么实现这样的操作,谢谢!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
sky_ghm
2006-12-07
打赏
举报
回复
我现在也在弄一个和Usb有关的问题。希望大家能够帮忙:一台电脑上多个u盘,系统通过什么怎样标识我要拔除的是其中的哪一个u盘呢???????
gaopl_8278
2006-12-01
打赏
举报
回复
我这里有不卸载U盘,但是会把U盘的卷(逻辑盘符)卸载掉,虽然你的U盘本身还在,但卷没有了,你是无法正常使用的.在我的电脑中看不到,但是在磁盘管理中能看到,但是它没有逻辑盘符,即使你给它手动分配新的盘符也是不能用的,除非你重新做卸载卷的逆操作.我把代码贴出来你看看吧.
名称:卸载指定的磁盘卷标
功能:对参数指定的磁盘卷标进行卸载,使其不能被用户使用
输入:DriveLetter 驱动器号(例如F)
输出:0-成功
作者:zhaojingfeng
**************************************************************************/
int UnMountVolume(char DriveLetter)
{
/**********************************************************
基本流程如下:
1.打开该卷标设备
2.锁定当前卷
3.关闭所有该卷上打开的所有文件
4.卸载该卷
5.解除该卷的锁定
6.关闭设备
7.删除卷标盘符
说明:由于当该卷标磁盘上的文件被打开时,23步骤有是会失败,所以
为了达到强制关闭的目的,封掉了235步骤
**********************************************************/
char VolumeName[] = "\\\\.\\ :";
HANDLE Device;
DWORD BytesReturned;
//初始化该卷标设备(类似"\\\\.\\F:")
VolumeName[4] = DriveLetter;
//打开该卷标的设备,不存在则返回
Device = CreateFile(
VolumeName,
GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ | FILE_SHARE_WRITE,
NULL,
OPEN_EXISTING,
FILE_FLAG_NO_BUFFERING,
NULL
);
if (Device == INVALID_HANDLE_VALUE)
{
return 1;
}
/*//锁定需要卸载的卷
if (!DeviceIoControl(
Device,
FSCTL_LOCK_VOLUME,
NULL,
0,
NULL,
0,
&BytesReturned,
NULL
))
{
return 2;
}
*/
/*//关闭该卷上打开的所有文件
if (!DeviceIoControl(
Device,
IOCTL_FILE_DISK_CLOSE_FILE,
NULL,
0,
NULL,
0,
&BytesReturned,
NULL
))
{
return 3;
}
*/
//卸载该卷
if (!DeviceIoControl(
Device,
FSCTL_DISMOUNT_VOLUME,
NULL,
0,
NULL,
0,
&BytesReturned,
NULL
))
{
return 4;
}
/*//解除对该卷的锁定
if (!DeviceIoControl(
Device,
FSCTL_UNLOCK_VOLUME,
NULL,
0,
NULL,
0,
&BytesReturned,
NULL
))
{
return 5;
}
*/
//关闭设备HANDLE
CloseHandle(Device);
//删除虚拟盘符,系统中看到的盘符应该消失
if (!DefineDosDevice(
DDD_REMOVE_DEFINITION,
&VolumeName[4],
NULL
))
{
return 6;
}
return 0;
}
这代码不是我写的,我写的是直接卸载U盘,所以有问题自己再摸索.
shawnwan
2006-12-01
打赏
举报
回复
。。。。。。。。。。。。。
不懂,学习下
agu
2006-12-01
打赏
举报
回复
现在我能做到发现USB设备,能卸载USB设备,但是弹出功能还没有搞定呀?各位高手给点建议,看了MSDN的DDK,用CMAPI CONFIGRET WINAPI
CM_Request_Device_Eject(
IN DEVINST dnDevInst,
OUT PPNP_VETO_TYPE pVetoType,
OUT LPTSTR pszVetoName,
IN ULONG ulNameLength,
IN ULONG ulFlags
);能卸载USB设备,但怎么弹出,却找不到......
7teeth
2006-12-01
打赏
举报
回复
关注
agu
2006-11-30
打赏
举报
回复
http://blog.csdn.net/feifei1018/archive/2005/09/28/491087.aspx
windows10右键菜单怎样添加
卸载
USB
设备
选项
我们在使用完u盘之后,如果想要拔出它一般都需要先
弹出
usb
设备
才可以,也就是说用户每次都得到...接下来,就为大家分享一个在windows10右键菜单
中
添加安全
弹出
usb
设备
的方法。有了这个方法我们就能快速
弹出
usb
设备
。
android 应用程序安装
卸载
(
卸载
应用宝)
电脑上有腾讯管家,作为安卓开发,用真机测试的比较多,鄙人算一个,不喜欢用应用宝,当你
卸载
了应用宝之后,插上
USB
,有时候就回静默安装应用宝,然后
弹出
应用宝获取什么什么权限,特别烦 手机在没有安装应用宝...
websocket
实现
斗鱼弹幕
系统
本课程主要讲解了1.服务器的消息如何发给客户端;2.通过
实现
方式利用websocket;3.websocket
实现
方案概述等内容,希望学完之后对你有所收获。
IBM
USB
2.0se_Setup
当需要拔出 IBM
USB
2.0 移动硬盘时,在
系统
拖盘区左键或右键单击
USB
设备
图标,在
弹出
的菜单
中
选择“停止 ***”(
USB
移动硬盘),将出现“正在停止下列
设备
”的提示,片刻又出现“你可以安全地拔出这个
USB
...
u盘安全删除工具My
USB
Ejecterv1.07单文件绿色版
是一款没有运行界面的小软件,功能就是安全的
弹出
U盘,以免数据丢失,保证数据的安全。 在使用U盘或其他
USB
设备
时,经常会遇到“现在无法停止‘通用卷’
设备
”的提示,此时强行拨出,又怕U盘损坏和数据丢失,相当...
硬件/系统
2,640
社区成员
17,239
社区内容
发帖
与我相关
我的任务
硬件/系统
VC/MFC 硬件/系统
复制链接
扫一扫
分享
社区描述
VC/MFC 硬件/系统
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章