我正在关注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。
答案 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源代码的副本,以了解返回值的含义。任何更进一步的调试都需要这些信息。