从读卡器弹出存储卡C#

我有一个定制开发的USB读卡器。我使用以下代码进行交互和iterrate设备: http://www.codeproject.com/KB/system/usbeject.aspx 上面的代码使用以下行提供了'eject'方法:
Native.CM_Request_Device_Eject_NoUi(device.InstanceHandle, IntPtr.Zero, null, 0, 0);
但是,这种“弹出”方法会卸载整个驱动器,而不是简单地弹出介质卡。 为什么这是一个问题是因为我想“弹出”媒体卡,然后放入另一个。然而,当整个阅读器被弹出时,我必须拔出/重新插入设备才能显示备份。 在Windows资源管理器中,当我右键单击“弹出”时,它按照我想象的方式运行,它可以安全地移除存储卡但不能读取读卡器。 我怎样才能在c#中推动这种不同类型的弹出? 谢谢, 斯蒂芬妮     
已邀请:
我是同一个任务。 :) 您需要使用弹出可移动媒体。 请参阅此处的c ++示例:如何弹出可移动媒体     
我在搜索“CM_Request_Device_Eject_NoUi”时意外地来到这里,看到它类似于我最近通过将类似的解决方案组合在一起所做的解决方案。原谅迟到的答案。 这对我有用(这也解决了我在其他SO问题上看到的一些问题,这些问题来自微软样本中的
AutoEjectVolume
而不是“在使用操作系统安全删除硬件时系统所做的一切”): 从如何在Windows中弹出可移动媒体中概述的步骤开始。 将操作替换为
AutoEjectVolume
,代码实际上是如何准备安全移除USB驱动器中的
RemoveDrive
方法的主体。请注意,以后的工作很大程度上依赖于其他两个CodeProject文章—包括你在问题中引用的那个—移植到C#。 2,我说“实际上”是因为—在实践中—在两个解决方案中都使用相同的
hVolume
,在Microsoft解决方案中调用
LockVolume
DismountVolume
PrepareRemovalOfVolume
之前,在CodeProject
RemoveDrive
方法中执行所有检查更有意义,然后调用Code9ject解决方案中显示的
CM_Request_Device_Eject_NoUi
。 一个简短的伪代码摘要: 用
CreateFile
打开音量(CodeProject) 获取驱动器的设备实例句柄和驱动器的父设备 实例句柄(CodeProject) 在打电话之前退出—特别是—
DismountVolume
, 如果上述任何步骤失败(CodeProject) 拨打
LockVolume
DismountVolume
PrepareRemovalOfVolume
使用从
CreateFile
(微软)返回的
hVolume
此后您可以随时关闭
hVolume
在驱动器的父设备上调用
CM_Request_Device_Eject_NoUi
实例句柄(CodeProject)     

要回复问题请先登录注册