Compartilhar via


Método IDiscRecorder2::AcquireExclusiveAccess (imapi2.h)

Adquire acesso exclusivo ao dispositivo.

Sintaxe

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

Parâmetros

[in] force

Defina como VARIANT_TRUE para obter acesso exclusivo ao volume se o volume do sistema de arquivos pode ou não ser desmontado. Se VARIANT_FALSE, esse método obterá acesso exclusivo somente quando não houver nenhum sistema de arquivos montado no volume.

[in] __MIDL__IDiscRecorder20000

Cadeia de caracteres que contém o nome amigável do aplicativo cliente que solicita acesso exclusivo. Não pode ser NULL ou uma cadeia de caracteres de comprimento zero. A cadeia de caracteres deve estar em conformidade com as restrições para o código de controle IOCTL_CDROM_EXCLUSIVE_ACCESS encontrado no DDK.

Retornar valor

S_OK é retornado com êxito, mas outros códigos de êxito podem ser retornados como resultado da implementação. Os seguintes códigos de erro geralmente são retornados em caso de falha na operação, mas não representam os únicos valores de erro possíveis:

Código de retorno Descrição
E_FAIL
Falha não especificada.

Valor: 0x80004005

E_ACCESS_DENIED
No momento, o dispositivo está sendo usado por outro aplicativo.

Valor: 0x80070005

E_INVALIDARG
Um ou mais argumentos não são válidos.

Valor: 0x80070057

E_OUTOFMEMORY
Falha ao alocar a memória necessária.

Valor: 0x8007000E

E_IMAPI_RECORDER_COMMAND_TIMEOUT
O dispositivo não aceitou o comando dentro do período de tempo limite. Isso pode ser causado pelo dispositivo ter inserido um estado inconsistente ou o valor de tempo limite para o comando pode precisar ser aumentado.

Valor: 0xC0AA020D

HRESULT_FROM_WIN32(ERROR_INVALID_HANDLE)
O identificador especificado é inválido.

Valor: 6

HRESULT_FROM_WIN32(ERROR_DEV_NOT_EXIST)
O recurso de rede ou dispositivo especificado não está mais disponível.

Valor: 55

E_IMAPI_RECORDER_LOCKED
O dispositivo associado a esse gravador durante a última operação foi bloqueado exclusivamente, fazendo com que essa operação falhasse.

Valor: 0xC0AA0210

Comentários

Você não deve chamar esse método para adquirir o bloqueio por conta própria porque as operações de gravação, como IDiscFormat2Data::Write, adquirem o bloqueio para você.

Cada gravador tem uma contagem de bloqueios. A primeira chamada para um gravador bloqueia o dispositivo para acesso exclusivo. Os aplicativos podem usar o método AcquireExclusiveAccess várias vezes para aplicar vários bloqueios em um dispositivo. Cada chamada incrementa a contagem de bloqueios em um.

Ao desbloquear um gravador, a contagem de bloqueios deve atingir zero para liberar o dispositivo para outros clientes. Chamar o método IDiscRecorder2::ReleaseExclusiveAccess diminui a contagem de bloqueios por um.

Um número igual de chamadas para os métodos AcquireExclusiveAccess e ReleaseExclusiveAccess são necessárias para liberar um dispositivo. Se o aplicativo sair inesperadamente ou falhar ao manter o acesso exclusivo, o driver CDROM.SYS liberará automaticamente esses bloqueios exclusivos.

Se o dispositivo já estiver bloqueado, você poderá chamar IDiscRecorder2::get_ExclusiveAccessOwner para recuperar o nome do aplicativo cliente que atualmente tem acesso exclusivo.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows Vista, Windows XP com SP2 [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2003 [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho imapi2.h

Confira também

IDiscRecorder2

IDiscRecorder2::ReleaseExclusiveAccess

IDiscRecorder2::get_ExclusiveAccessOwner