Compartir a través de


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

Adquiere acceso exclusivo al dispositivo.

Sintaxis

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

Parámetros

[in] force

Establézcalo en VARIANT_TRUE para obtener acceso exclusivo al volumen, tanto si el volumen del sistema de archivos puede desmontar como si no se puede desmontar. Si VARIANT_FALSE, este método obtiene acceso exclusivo solo cuando no hay ningún sistema de archivos montado en el volumen.

[in] __MIDL__IDiscRecorder20000

Cadena que contiene el nombre descriptivo de la aplicación cliente que solicita acceso exclusivo. No puede ser NULL o una cadena de longitud cero. La cadena debe cumplir las restricciones para el código de control de IOCTL_CDROM_EXCLUSIVE_ACCESS que se encuentra en el DDK.

Valor devuelto

S_OK se devuelve correctamente, pero se pueden devolver otros códigos de éxito como resultado de la implementación. Los siguientes códigos de error se devuelven normalmente en caso de error de operación, pero no representan los únicos valores de error posibles:

Código devuelto Descripción
E_FAIL
Error no especificado.

Valor: 0x80004005

E_ACCESS_DENIED
El dispositivo está siendo utilizado actualmente por otra aplicación.

Valor: 0x80070005

E_INVALIDARG
Uno o varios argumentos no son válidos.

Valor: 0x80070057

E_OUTOFMEMORY
No se pudo asignar la memoria necesaria.

Valor: 0x8007000E

E_IMAPI_RECORDER_COMMAND_TIMEOUT
El dispositivo no pudo aceptar el comando dentro del período de tiempo de espera. Esto puede deberse a que el dispositivo ha entrado en un estado incoherente o es posible que sea necesario aumentar el valor de tiempo de espera del comando.

Valor: 0xC0AA020D

HRESULT_FROM_WIN32(ERROR_INVALID_HANDLE)
El identificador especificado no es válido.

Valor: 6

HRESULT_FROM_WIN32(ERROR_DEV_NOT_EXIST)
El recurso de red o el dispositivo especificados ya no se encuentran disponibles.

Valor: 55

E_IMAPI_RECORDER_LOCKED
El dispositivo asociado a esta grabadora durante la última operación se ha bloqueado exclusivamente, lo que provoca un error en esta operación.

Valor: 0xC0AA0210

Comentarios

No debe tener que llamar a este método para adquirir el bloqueo usted mismo porque las operaciones de escritura, como IDiscFormat2Data::Write, adquieren el bloqueo automáticamente.

Cada grabadora tiene un recuento de bloqueos. La primera llamada a una grabadora bloquea el dispositivo para el acceso exclusivo. Las aplicaciones pueden usar el método AcquireExclusiveAccess varias veces para aplicar varios bloqueos en un dispositivo. Cada llamada incrementa el recuento de bloqueos en uno.

Al desbloquear una grabadora, el recuento de bloqueos debe alcanzar cero para liberar el dispositivo para otros clientes. Al llamar al método IDiscRecorder2::ReleaseExclusiveAccess , se disminuye el recuento de bloqueos por uno.

Se necesita un número igual de llamadas a los métodos AcquireExclusiveAccess y ReleaseExclusiveAccess para liberar un dispositivo. Si la aplicación se cierra inesperadamente o se bloquea mientras mantiene el acceso exclusivo, el controlador de CDROM.SYS liberará automáticamente estos bloqueos exclusivos.

Si el dispositivo ya está bloqueado, puede llamar a IDiscRecorder2::get_ExclusiveAccessOwner para recuperar el nombre de la aplicación cliente que actualmente tiene acceso exclusivo.

Requisitos

Requisito Value
Cliente mínimo compatible Windows Vista, Windows XP con SP2 [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2003 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado imapi2.h

Consulte también

IDiscRecorder2

IDiscRecorder2::ReleaseExclusiveAccess

IDiscRecorder2::get_ExclusiveAccessOwner