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

 我来答
国菡正CE
2016-12-25 · 超过20用户采纳过TA的回答
知道答主
回答量:58
采纳率:0%
帮助的人:25.5万
展开全部
这是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);
}
}
}
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式