Partager via


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

Obtient un accès exclusif à l’appareil.

Syntaxe

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

Paramètres

[in] force

Définissez sur VARIANT_TRUE pour obtenir un accès exclusif au volume, que le volume du système de fichiers puisse ou ne peut pas être démonté. Si VARIANT_FALSE, cette méthode n’obtient un accès exclusif qu’en l’absence de système de fichiers monté sur le volume.

[in] __MIDL__IDiscRecorder20000

Chaîne qui contient le nom convivial de l’application cliente demandant un accès exclusif. Ne peut pas être NULL ou une chaîne de longueur nulle. La chaîne doit être conforme aux restrictions pour le code de contrôle IOCTL_CDROM_EXCLUSIVE_ACCESS trouvé dans le DDK.

Valeur retournée

S_OK est retourné en cas de réussite, mais d’autres codes de réussite peuvent être retournés à la suite de l’implémentation. Les codes d’erreur suivants sont généralement retournés en cas d’échec de l’opération, mais ne représentent pas les seules valeurs d’erreur possibles :

Code de retour Description
E_FAIL
Défaillance non spécifiée.

Valeur : 0x80004005

E_ACCESS_DENIED
L’appareil est actuellement utilisé par une autre application.

Valeur : 0x80070005

E_INVALIDARG
Un ou plusieurs arguments ne sont pas valides.

Valeur : 0x80070057

E_OUTOFMEMORY
Échec de l’allocation de la mémoire requise.

Valeur : 0x8007000E

E_IMAPI_RECORDER_COMMAND_TIMEOUT
L’appareil n’a pas pu accepter la commande dans le délai imparti. Cela peut être dû au fait que l’appareil est entré dans un état incohérent, ou que la valeur du délai d’expiration de la commande doit être augmentée.

Valeur : 0xC0AA020D

HRESULT_FROM_WIN32(ERROR_INVALID_HANDLE)
Le handle spécifié n’est pas valide.

Valeur : 6

HRESULT_FROM_WIN32(ERROR_DEV_NOT_EXIST)
La ressource réseau ou le périphérique spécifié n’est plus disponible.

Valeur : 55

E_IMAPI_RECORDER_LOCKED
L’appareil associé à cet enregistreur lors de la dernière opération a été verrouillé exclusivement, ce qui a provoqué l’échec de cette opération.

Valeur : 0xC0AA0210

Remarques

Vous ne devez pas avoir à appeler cette méthode pour acquérir le verrou vous-même, car les opérations d’écriture, telles que IDiscFormat2Data ::Write, acquièrent le verrou pour vous.

Chaque enregistreur a un nombre de verrous. Le premier appel à un enregistreur verrouille l’appareil pour un accès exclusif. Les applications peuvent utiliser la méthode AcquireExclusiveAccess plusieurs fois pour appliquer plusieurs verrous sur un appareil. Chaque appel incrémente le nombre de verrous d’un.

Lors du déverrouillage d’un enregistreur, le nombre de verrous doit atteindre zéro pour libérer l’appareil pour d’autres clients. L’appel de la méthode IDiscRecorder2 ::ReleaseExclusiveAccess décrémente le nombre de verrous d’un.

Un nombre égal d’appels aux méthodes AcquireExclusiveAccess et ReleaseExclusiveAccess sont nécessaires pour libérer un appareil. Si l’application se ferme de façon inattendue ou se bloque en conservant l’accès exclusif, le pilote CDROM.SYS libère automatiquement ces verrous exclusifs.

Si l’appareil est déjà verrouillé, vous pouvez appeler IDiscRecorder2 ::get_ExclusiveAccessOwner pour récupérer le nom de l’application cliente qui dispose actuellement d’un accès exclusif.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows Vista, Windows XP avec SP2 [applications de bureau uniquement]
Serveur minimal pris en charge Windows Server 2003 [applications de bureau uniquement]
Plateforme cible Windows
En-tête imapi2.h

Voir aussi

IDiscRecorder2

IDiscRecorder2 ::ReleaseExclusiveAccess

IDiscRecorder2 ::get_ExclusiveAccessOwner