Freigeben über


IDiscRecorder2::AcquireExclusiveAccess-Methode (imapi2.h)

Ruft exklusiven Zugriff auf das Gerät ab.

Syntax

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

Parameter

[in] force

Legen Sie auf VARIANT_TRUE fest, um exklusiven Zugriff auf das Volume zu erhalten, unabhängig davon, ob das Dateisystemvolume die Bereitstellung aufheben kann oder nicht. Wenn VARIANT_FALSE, erhält diese Methode nur dann exklusiven Zugriff, wenn kein Dateisystem auf dem Volume eingebunden ist.

[in] __MIDL__IDiscRecorder20000

Zeichenfolge, die den Anzeigenamen der Clientanwendung enthält, die exklusiven Zugriff anfordert. Kann nicht NULL oder eine Zeichenfolge mit der Länge null sein. Die Zeichenfolge muss den Einschränkungen für den IOCTL_CDROM_EXCLUSIVE_ACCESS-Steuerelementcode im DDK entsprechen.

Rückgabewert

S_OK wird bei Erfolg zurückgegeben, aber andere Erfolgscodes können als Ergebnis der Implementierung zurückgegeben werden. Die folgenden Fehlercodes werden häufig bei Vorgangsfehlern zurückgegeben, stellen aber nicht die einzigen möglichen Fehlerwerte dar:

Rückgabecode Beschreibung
E_FAIL
Unspezifizierter Fehler.

Wert: 0x80004005

E_ACCESS_DENIED
Das Gerät wird derzeit von einer anderen Anwendung verwendet.

Wert: 0x80070005

E_INVALIDARG
Mindestens ein Argument ist ungültig.

Wert: 0x80070057

E_OUTOFMEMORY
Fehler beim Zuweisen des erforderlichen Arbeitsspeichers.

Wert: 0x8007000E

E_IMAPI_RECORDER_COMMAND_TIMEOUT
Das Gerät konnte den Befehl innerhalb des Timeoutzeitraums nicht annehmen. Dies kann dadurch verursacht werden, dass das Gerät einen inkonsistenten Zustand eingegeben hat, oder der Timeoutwert für den Befehl muss möglicherweise erhöht werden.

Wert: 0xC0AA020D

HRESULT_FROM_WIN32(ERROR_INVALID_HANDLE)
Das angegebene Handle ist ungültig.

Wert: 6

HRESULT_FROM_WIN32(ERROR_DEV_NOT_EXIST)
Die angegebene Netzwerkressource oder das angegebene Gerät ist nicht mehr verfügbar.

Wert: 55

E_IMAPI_RECORDER_LOCKED
Das Gerät, das diesem Rekorder während des letzten Vorgangs zugeordnet ist, wurde ausschließlich gesperrt, sodass dieser Vorgang fehlschlägt.

Wert: 0xC0AA0210

Hinweise

Sie müssen diese Methode nicht aufrufen, um die Sperre selbst abzurufen, da die Schreibvorgänge, z. B. IDiscFormat2Data::Write, die Sperre für Sie abrufen.

Jeder Rekorder hat eine Sperranzahl. Der erste Aufruf eines Rekorders sperrt das Gerät für den exklusiven Zugriff. Anwendungen können die AcquireExclusiveAccess-Methode mehrmals verwenden, um mehrere Sperren auf einem Gerät anzuwenden. Bei jedem Aufruf wird die Sperranzahl um eins erhöht.

Beim Entsperren eines Rekorders muss die Sperranzahl null erreichen, um das Gerät für andere Clients freizugeben. Durch Aufrufen der IDiscRecorder2::ReleaseExclusiveAccess-Methode wird die Sperranzahl um eins erhöht.

Zum Freigeben eines Geräts sind gleich viele Aufrufe der Methoden AcquireExclusiveAccess und ReleaseExclusiveAccess erforderlich. Sollte die Anwendung unerwartet beendet oder abstürzen, während der exklusive Zugriff gehalten wird, gibt der CDROM.SYS Treiber diese exklusiven Sperren automatisch frei.

Wenn das Gerät bereits gesperrt ist, können Sie IDiscRecorder2::get_ExclusiveAccessOwner aufrufen, um den Namen der Clientanwendung abzurufen, die derzeit über exklusiven Zugriff verfügt.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows Vista, Windows XP mit SP2 [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2003 [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile imapi2.h

Weitere Informationen

IDiscRecorder2

IDiscRecorder2::ReleaseExclusiveAccess

IDiscRecorder2::get_ExclusiveAccessOwner