【发布时间】:2021-11-23 11:36:43
【问题描述】:
我尝试了下面的代码。当设备名称包含“San”时,它会请求弹出,因为我已插入 SanDisk USB 驱动器。但是它失败了,原因似乎是PNP_VetoIllegalDeviceRequest。我查了原因,this page 说是
设备不支持指定的操作。
但我可以使用 Windows 的菜单手动弹出闪迪,所以原因似乎很荒谬。我是否正确调用了该函数?在拨打CM_Request_Device_Eject之前我需要先拨打其他电话吗?
输出是
....
SanDisk Ultra USB Device
Removing Sandisk
rejected.
type:8
name:USBSTOR\Disk&Ven_SanDisk&Prod_Ultra&Rev_1.00\....
代码是(Devinst 的值是3)
if (wcsstr(buffer, L"San") != 0)
{
wcout << "Removing Sandisk" << endl;
PNP_VETO_TYPE vType;
WCHAR vName[MAX_PATH];
result = CM_Request_Device_Eject(Devinst, &vType, vName, MAX_PATH, NULL);
if (result == CR_SUCCESS)
{
cout << "ejected" << endl;
}
else
{
wcout << "rejected." << endl;
wcout << "type:"<< vType << endl;
wcout << "name:" << vName << endl;
}
}
【问题讨论】: