CM_Request_Device_Eject_ExA函数 (cfgmgr32.h)
[从 Windows 8 和 Windows Server 2012 开始,此函数已弃用。 请改用 CM_Request_Device_Eject 。]
如果设备是可移动的, 则 CM_Request_Device_Eject_Ex 函数准备本地或远程设备实例,以便安全删除。 如果设备可以物理弹出,它将是。
语法
CMAPI CONFIGRET CM_Request_Device_Eject_ExA(
[in] DEVINST dnDevInst,
[out, optional] PPNP_VETO_TYPE pVetoType,
[out, optional] LPSTR pszVetoName,
[in] ULONG ulNameLength,
[in] ULONG ulFlags,
[in, optional] HMACHINE hMachine
);
参数
[in] dnDevInst
调用方提供的设备实例句柄,绑定到 hMachine 提供的计算机句柄。
[out, optional] pVetoType
(Optional.) 如果不是 NULL,则指向一个位置,如果删除请求失败,则会收到指示失败原因 的PNP_VETO_TYPE类型的值。
[out, optional] pszVetoName
(Optional.) 如果不为 NULL,这是调用方提供的指向接收文本字符串的字符串缓冲区的指针。 此字符串提供的信息类型取决于 pVetoType 接收的值。 有关这些字符串的信息,请参阅 PNP_VETO_TYPE。
[in] ulNameLength
(Optional.) 调用方提供的值,该值表示 pszVetoName 提供的字符串缓冲区的长度。 这应设置为 MAX_PATH。
[in] ulFlags
未使用。
[in, optional] hMachine
调用方提供的计算机句柄,调用方提供的设备实例句柄绑定到该句柄。
返回值
如果操作成功,函数将返回CR_SUCCESS。 否则,它将返回 Cfgmgr32.h 中定义的CR_前缀错误代码之一。
注解
如果 pszVetoName 为 NULL,则 PnP 管理器向用户显示一条消息,指示设备已删除,如果请求失败,则显示失败原因。 如果 pszVetoName 不为 NULL,则 PnP 管理器不会显示消息。 但是, (请注意,如果设置了设备的CM_DEVCAP_DOCKDEVICE功能,即使 pszVetoName 不为 NULL,PnP 管理器也仅针对 Microsoft Windows 2000 显示一条消息。)
对于远程计算机,此功能仅适用于“停靠”设备实例。 也就是说, 函数只能远程用于取消停靠计算机。 在这种情况下,调用方必须具有 SeUndockPrivilege。
CM_Request_Eject_Ex的调用方有时需要 SeUndockPrivilege 或 SeLoadDriverPrivilege,如下所示:
- 如果设备的CM_DEVCAP_DOCKDEVICE功能设置 (设备是“停靠”设备) ,则调用方必须具有 SeUndockPrivilege。 不需要 (SeLoadDriverPrivilege 。)
- 如果未设置设备的CM_DEVCAP_DOCKDEVICE功能 (则设备不是“停靠”设备) , 并且 调用进程不是交互式的,或者在未附加到物理控制台 ((如远程终端服务会话)的多用户环境中运行) ,则此函数的调用方必须具有 SeLoadDriverPrivilege。
有关使用绑定到本地或远程计算机的设备实例句柄的信息,请参阅 CM_Get_Child_Ex。
Windows 8 和 Windows Server 2012 及更高版本的操作系统中删除了访问远程计算机的功能,因此在这些版本的 Windows 上运行时,你无法访问远程计算机。
要求
最低受支持的客户端 | 在 Microsoft Windows 2000 及更高版本的 Windows 中可用。 |
目标平台 | 桌面 |
标头 | cfgmgr32.h (包括 Cfgmgr32.h) |
Library | Cfgmgr32.lib |
另请参阅
CM_Get_Child_Ex
CM_Query_And_Remove_SubTreeCM_Query_And_Remove_SubTree_ExCM_Request_Device_Eject