Метод IDiscRecorder2::AcquireExclusiveAccess (imapi2.h)

Получает монопольный доступ к устройству.

Синтаксис

HRESULT AcquireExclusiveAccess(
  [in] VARIANT_BOOL force,
  [in] BSTR         __MIDL__IDiscRecorder20000
);

Параметры

[in] force

Задайте значение VARIANT_TRUE, чтобы получить монопольный доступ к тому независимо от того, можно ли отключить том файловой системы. Если VARIANT_FALSE, этот метод получает монопольный доступ, только если на томе нет подключенной файловой системы.

[in] __MIDL__IDiscRecorder20000

Строка, содержащая понятное имя клиентского приложения, запрашивающего монопольный доступ. Не может иметь значение NULL или строка нулевой длины. Строка должна соответствовать ограничениям для кода элемента управления IOCTL_CDROM_EXCLUSIVE_ACCESS, найденного в DDK.

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

S_OK возвращается при успешном выполнении, но в результате реализации могут быть возвращены другие коды успешного выполнения. Следующие коды ошибок обычно возвращаются при сбое операции, но не представляют единственные возможные значения ошибок:

Код возврата Описание
E_FAIL
Неопределенный сбой.

Значение: 0x80004005

E_ACCESS_DENIED
Устройство в настоящее время используется другим приложением.

Значение: 0x80070005

E_INVALIDARG
Один или несколько аргументов являются недопустимыми.

Значение: 0x80070057

E_OUTOFMEMORY
Не удалось выделить необходимую память.

Значение: 0x8007000E

E_IMAPI_RECORDER_COMMAND_TIMEOUT
Устройству не удалось принять команду в течение периода ожидания. Это может быть вызвано тем, что устройство перешло в несогласованное состояние, или может потребоваться увеличить время ожидания для команды.

Значение: 0xC0AA020D

HRESULT_FROM_WIN32(ERROR_INVALID_HANDLE)
Указанный дескриптор недопустим.

Значение: 6

HRESULT_FROM_WIN32(ERROR_DEV_NOT_EXIST)
Указанный сетевой ресурс или устройство больше не доступны.

Значение: 55

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

Значение: 0xC0AA0210

Комментарии

Вам не нужно вызывать этот метод для самостоятельного получения блокировки, так как операции записи, такие как IDiscFormat2Data::Write, получают блокировку.

Каждое средство записи имеет количество блокировок. Первый вызов средства записи блокирует устройство для монопольного доступа. Приложения могут использовать метод AcquireExclusiveAccess несколько раз для применения нескольких блокировок на устройстве. Каждый вызов увеличивает количество блокировок на единицу.

При разблокировке средства записи число блокировок должно достигать нуля, чтобы освободить устройство для других клиентов. Вызов метода IDiscRecorder2::ReleaseExclusiveAccess уменьшает количество блокировок на один.

Для освобождения устройства требуется равное количество вызовов методов AcquireExclusiveAccess и ReleaseExclusiveAccess . В случае неожиданного завершения работы приложения или сбоя при удержании монопольного доступа драйвер CDROM.SYS автоматически снимет эти монопольные блокировки.

Если устройство уже заблокировано, можно вызвать IDiscRecorder2::get_ExclusiveAccessOwner , чтобы получить имя клиентского приложения, которое в настоящее время имеет монопольный доступ.

Требования

Требование Значение
Минимальная версия клиента Windows Vista, Windows XP с пакетом обновления 2 (SP2) [только классические приложения]
Минимальная версия сервера Windows Server 2003 [только классические приложения]
Целевая платформа Windows
Header imapi2.h

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

IDiscRecorder2

IDiscRecorder2::ReleaseExclusiveAccess

IDiscRecorder2::get_ExclusiveAccessOwner