Метод 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 возвращается при успешном выполнении, но в результате реализации могут быть возвращены другие коды успешного выполнения. Следующие коды ошибок обычно возвращаются при сбое операции, но не представляют единственные возможные значения ошибок:
Код возврата | Описание |
---|---|
|
Неопределенный сбой.
Значение: 0x80004005 |
|
Устройство в настоящее время используется другим приложением.
Значение: 0x80070005 |
|
Один или несколько аргументов являются недопустимыми.
Значение: 0x80070057 |
|
Не удалось выделить необходимую память.
Значение: 0x8007000E |
|
Устройству не удалось принять команду в течение периода ожидания. Это может быть вызвано тем, что устройство перешло в несогласованное состояние, или может потребоваться увеличить время ожидания для команды.
Значение: 0xC0AA020D |
|
Указанный дескриптор недопустим.
Значение: 6 |
|
Указанный сетевой ресурс или устройство больше не доступны.
Значение: 55 |
|
Устройство, связанное с этим устройством записи во время последней операции, было заблокировано исключительно, что привело к сбою этой операции.
Значение: 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 |