为了账号安全,请及时绑定邮箱和手机立即绑定

c#怎么实现安全弹出U盘?

/ 猿问

c#怎么实现安全弹出U盘?

白衣染霜花 2018-10-15 18:14:47

c#怎么实现安全弹出U盘


查看完整描述

1 回答

?
九州编程

这是CSDN上的一个帖子的内容,也许对你有帮助。
我已经利用网上搜索到的代码实现在软件中自动删除U盘,也就相当于在任务栏右端的图标上点击删除的效果。但是由于那个类不适应我写的程序,我只能查他的代码。最终锁定到一个API函数:
[DllImport("setupapi.dll", EntryPoint = "CM_Request_Device_Eject")]
internal static extern int CM_Request_Device_Eject_NoUi(
int dnDevInst,
IntPtr pVetoType,
StringBuilder pszVetoName,
int ulNameLength,
int ulFlags);

在这个函数的5个参数中,我仅仅关注第一个参数(剩下的解决了pVetoType=IntPtr.Zero, pszVetoName=null, ulNameLength=0, ulFlags=0)。我想知道第一个参数指的是什么。我去跟踪搜到的那个程序时发现dnDevInst指的可能是U盘的物理序列号,但是不确定。同时我想知道怎样获取这个数字(最好是WMI,因为盗用这段函数的代码是在一个遍历磁盘接口的基于wmi的循环之中)。请各位牛人帮忙看看。

以下是基于wmi的循环:
private void ScanUDisk()
{
while (true)
{
SelectQuery selectQuery = new SelectQuery("select * from win32_logicaldisk");
ManagementObjectSearcher searcher = new ManagementObjectSearcher(selectQuery);
foreach (ManagementObject disk in searcher.Get())
{
if (disk["DriveType"].ToString() == "2")
{
CopyMain(disk["Name"].ToString()); //向U盘传送文件的函数
Thread.Sleep(500);
CM_Request_Device_Eject_NoUi(????, IntPtr.Zero, null, 0, 0);
}
}
}
}



查看完整回答
反对 回复 2018-11-12

添加回答

回复

举报

0/150
提交
取消
意见反馈 邀请有奖 帮助中心 APP下载
官方微信