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

调用方提供的计算机句柄,调用方提供的设备实例句柄绑定到该句柄。

注意 从 Windows 8 和 Windows Server 2012 开始,不支持使用此功能访问远程计算机,因为此功能已被删除。
 

返回值

如果操作成功,函数将返回CR_SUCCESS。 否则,它将返回 Cfgmgr32.h 中定义的CR_前缀错误代码之一。

注解

如果 pszVetoNameNULL,则 PnP 管理器向用户显示一条消息,指示设备已删除,如果请求失败,则显示失败原因。 如果 pszVetoName 不为 NULL,则 PnP 管理器不会显示消息。 但是, (请注意,如果设置了设备的CM_DEVCAP_DOCKDEVICE功能,即使 pszVetoName 不为 NULL,PnP 管理器也仅针对 Microsoft Windows 2000 显示一条消息。)

对于远程计算机,此功能仅适用于“停靠”设备实例。 也就是说, 函数只能远程用于取消停靠计算机。 在这种情况下,调用方必须具有 SeUndockPrivilege

CM_Request_Eject_Ex的调用方有时需要 SeUndockPrivilegeSeLoadDriverPrivilege,如下所示:

  • 如果设备的CM_DEVCAP_DOCKDEVICE功能设置 (设备是“停靠”设备) ,则调用方必须具有 SeUndockPrivilege。 不需要 (SeLoadDriverPrivilege 。)
  • 如果未设置设备的CM_DEVCAP_DOCKDEVICE功能 (则设备不是“停靠”设备) , 并且 调用进程不是交互式的,或者在未附加到物理控制台 ((如远程终端服务会话)的多用户环境中运行) ,则此函数的调用方必须具有 SeLoadDriverPrivilege
Microsoft Windows SDK文档中介绍了 (特权。)

有关使用绑定到本地或远程计算机的设备实例句柄的信息,请参阅 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