Metodo IDiscRecorder2::AcquireExclusiveAccess (imapi2.h)

Acquisisce l'accesso esclusivo al dispositivo.

Sintassi

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

Parametri

[in] force

Impostare su VARIANT_TRUE per ottenere l'accesso esclusivo al volume se il volume del file system può o non può essere smontato. Se VARIANT_FALSE, questo metodo ottiene l'accesso esclusivo solo quando non è presente alcun file system montato nel volume.

[in] __MIDL__IDiscRecorder20000

Stringa contenente il nome descrittivo dell'applicazione client che richiede l'accesso esclusivo. Non può essere NULL o una stringa di lunghezza zero. La stringa deve essere conforme alle restrizioni per il codice di controllo IOCTL_CDROM_EXCLUSIVE_ACCESS trovato nella DDK.

Valore restituito

S_OK viene restituito in caso di esito positivo, ma altri codici di esito positivo possono essere restituiti in seguito all'implementazione. I codici di errore seguenti vengono comunemente restituiti in caso di errore dell'operazione, ma non rappresentano gli unici valori di errore possibili:

Codice restituito Descrizione
E_FAIL
Errore non specificato.

Valore: 0x80004005

E_ACCESS_DENIED
Il dispositivo è attualmente in uso da un'altra applicazione.

Valore: 0x80070005

E_INVALIDARG
Uno o più argomenti non sono validi.

Valore: 0x80070057

E_OUTOFMEMORY
Impossibile allocare la memoria richiesta.

Valore: 0x8007000E

E_IMAPI_RECORDER_COMMAND_TIMEOUT
Il dispositivo non è riuscito ad accettare il comando entro il periodo di timeout. Ciò può essere causato dall'immissione di uno stato incoerente del dispositivo oppure potrebbe essere necessario aumentare il valore di timeout per il comando.

Valore: 0xC0AA020D

HRESULT_FROM_WIN32(ERROR_INVALID_HANDLE)
L'handle specificato non è valido.

Valore: 6

HRESULT_FROM_WIN32(ERROR_DEV_NOT_EXIST)
La risorsa di rete o il dispositivo specificato non sono più disponibili.

Valore: 55

E_IMAPI_RECORDER_LOCKED
Il dispositivo associato a questo registratore durante l'ultima operazione è stato bloccato esclusivamente, causando l'esito negativo di questa operazione.

Valore: 0xC0AA0210

Commenti

Non è necessario chiamare questo metodo per acquisire manualmente il blocco perché le operazioni di scrittura, ad esempio IDiscFormat2Data::Write, acquisiscono automaticamente il blocco.

Ogni registratore ha un conteggio dei blocchi. La prima chiamata a un registratore blocca il dispositivo per l'accesso esclusivo. Le applicazioni possono usare il metodo AcquireExclusiveAccess più volte per applicare più blocchi in un dispositivo. Ogni chiamata incrementa il conteggio dei blocchi di uno.

Quando si sblocca un registratore, il conteggio dei blocchi deve raggiungere zero per liberare il dispositivo per altri client. La chiamata al metodo IDiscRecorder2::ReleaseExclusiveAccess decrementa il conteggio dei blocchi di uno.

Per liberare un dispositivo sono necessari un numero uguale di chiamate ai metodi AcquireExclusiveAccess e ReleaseExclusiveAccess . Se l'applicazione termina in modo imprevisto o si arresta in modo anomalo mantenendo l'accesso esclusivo, il driver CDROM.SYS rilascia automaticamente questi blocchi esclusivi.

Se il dispositivo è già bloccato, è possibile chiamare IDiscRecorder2::get_ExclusiveAccessOwner per recuperare il nome dell'applicazione client attualmente con accesso esclusivo.

Requisiti

Requisito Valore
Client minimo supportato Windows Vista, Windows XP con SP2 [solo app desktop]
Server minimo supportato Windows Server 2003 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione imapi2.h

Vedi anche

IDiscRecorder2

IDiscRecorder2::ReleaseExclusiveAccess

IDiscRecorder2::get_ExclusiveAccessOwner