弹出USB驱动器

时间:2015-08-06 05:52:34

标签: c# c++

我正在关注CodeProject Tutorial以删除C#中的USB驱动器。我面临的问题是USB笔式驱动器成功弹出但不适用于便携式硬盘驱动器。代码如下:

int r = CM_Request_Device_Eject_NoUi(DevInstParent, IntPtr.Zero, null, 0, 0);
LogFile.Err("Eject Return value - " + r);

当强制USB笔式驱动器弹出整数r时返回0并弹出命令成功,但当强制弹出便携式驱动器时,它返回23。

1 个答案:

答案 0 :(得分:1)

根据cfgmgr32.h,23(0x17)为CR_REMOVE_VETOED,表示操作系统正在推翻您删除驱动器的尝试。查看您已关联的代码,CM_Request_Device_Eject_NoUi只是调用CM_Request_Device_Eject而不使用out的{​​{1}}参数,因此您的Veto Reason会在不通知您的情况下被丢弃。< / p>

调整代码以显示pVetoType的值。您几乎肯定需要找到cfgmgr32.h源代码的副本,以了解返回值的含义。任何更进一步的调试都需要这些信息。