Поделиться через


функция CM_Request_Device_EjectA (cfgmgr32.h)

Функция CM_Request_Device_Eject подготавливает экземпляр локального устройства к безопасному удалению, если устройство является съемным. Если устройство может быть физически извлечено, это будет так.

Синтаксис

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

Параметры

[in] dnDevInst

Дескриптор экземпляра устройства, предоставленный вызывающим абонентом, привязанный к локальному компьютеру.

[out, optional] pVetoType

(Необязательно.) Если значение не равно NULL, это указывает на расположение, которое в случае сбоя запроса на удаление получает PNP_VETO_TYPE типизированное значение, указывающее причину сбоя.

[out, optional] pszVetoName

(Необязательно.) Если значение не равно NULL, это предоставленный вызывающим объектом указатель на буфер строки, который получает текстовую строку. Тип сведений, предоставляемых этой строкой, зависит от значения, полученного pVetoType. Сведения об этих строках см. в разделе PNP_VETO_TYPE.

[in] ulNameLength

(Необязательно.) Предоставленное вызывающим объектом значение, представляющее длину строкового буфера, предоставленного pszVetoName. Для этого параметра должно быть задано значение MAX_PATH.

[in] ulFlags

Не используется.

Возвращаемое значение

Если операция выполнена успешно, функция возвращает CR_SUCCESS. В противном случае возвращается один из кодов ошибок с префиксом CR_, определенных в Cfgmgr32.h.

Комментарии

Если pszVetoName имеет значение NULL, диспетчер PnP отображает пользователю сообщение о том, что устройство было удалено, или, если запрос не выполнен, идентифицирует причину сбоя. Если pszVetoName не имеет значение NULL, диспетчер PnP не отображает сообщение. (Обратите внимание, что только для Microsoft Windows 2000 диспетчер PnP отображает сообщение, даже если pszVetoName не равно NULL, если для устройства задана возможность CM_DEVCAP_DOCKDEVICE.)

Вызывающим CM_Request_Device_Eject иногда требуется SeUndockPrivilege или SeLoadDriverPrivilege следующим образом:

  • Если задана возможность CM_DEVCAP_DOCKDEVICE устройства (устройство является "док-устройством"), вызывающие абоненты должны иметь SeUndockPrivilege. (SeLoadDriverPrivilege не требуется.)
  • Если возможность CM_DEVCAP_DOCKDEVICE устройства не задана (устройство не является "док-устройством") и вызывающий процесс не является интерактивным или выполняется в многопользовательской среде в сеансе, не подключенном к физической консоли (например, удаленному сеансу служб терминалов), вызывающие функции должны иметь SeLoadDriverPrivilege.
Привилегии описаны в документации по Microsoft Windows SDK.

Сведения об использовании дескрипторов экземпляров устройства, привязанных к локальному компьютеру, см. в разделе CM_Get_Child.

Требования

Требование Значение
Минимальная версия клиента Доступно в Microsoft Windows 2000 и более поздних версиях Windows.
Целевая платформа Персональный компьютер
Верхняя часть cfgmgr32.h (включая Cfgmgr32.h)
Библиотека Cfgmgr32.lib

См. также раздел

CM_Get_Child
CM_Query_And_Remove_SubTree
CM_Query_And_Remove_SubTree_Ex
CM_Request_Device_Eject_Ex