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.) Caller 提供的值,代表 pszVetoName所提供的字串緩衝區長度。 這應該設定為 MAX_PATH。
[in] ulFlags
未使用。
[in, optional] hMachine
呼叫端提供的機器控制碼,呼叫端提供的裝置實例控制碼會系結至其中。
傳回值
如果作業成功,函式會傳回CR_SUCCESS。 否則,它會傳回 Cfgmgr32.h中定義的其中一個CR_前置錯誤碼。
備註
如果 pszVetoName 為 Null,則 PnP 管理員會顯示訊息給使用者,指出裝置已移除,或如果要求失敗,請識別失敗的原因。 如果 pszVetoName 不是 Null,則 PnP 管理員不會顯示訊息。 不過, (請注意,只有 Microsoft Windows 2000 的 PnP 管理員會顯示訊息,即使 pszVetoName 不是 Null,如果裝置的CM_DEVCAP_DOCKDEVICE功能已設定。)
對於遠端電腦,此函式僅適用于「停駐」裝置實例。 也就是說,函式只能從遠端使用來取消模擬電腦。 在此情況下,呼叫端必須有 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) |
程式庫 | Cfgmgr32.lib |
另請參閱
CM_Get_Child_Ex
CM_Query_And_Remove_SubTreeCM_Query_And_Remove_SubTree_ExCM_Request_Device_Eject