CM_Request_Device_EjectW函数 (cfgmgr32.h)

如果设备是可移动的, 则 CM_Request_Device_Eject 函数准备一个本地设备实例,以便安全删除。 如果设备可以物理弹出,它将是。

语法

CMAPI CONFIGRET CM_Request_Device_EjectW(
  [in]            DEVINST        dnDevInst,
  [out, optional] PPNP_VETO_TYPE pVetoType,
  [out, optional] LPWSTR         pszVetoName,
  [in]            ULONG          ulNameLength,
  [in]            ULONG          ulFlags
);

参数

[in] dnDevInst

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

[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

未使用。

返回值

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

注解

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

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

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

有关使用绑定到本地计算机的设备实例句柄的信息,请参阅 CM_Get_Child

要求

要求
最低受支持的客户端 在 Microsoft Windows 2000 及更高版本的 Windows 中可用。
目标平台 桌面
标头 cfgmgr32.h (包括 Cfgmgr32.h)
Library Cfgmgr32.lib

另请参阅

CM_Get_Child

CM_Query_And_Remove_SubTree

CM_Query_And_Remove_SubTree_Ex

CM_Request_Device_Eject_Ex