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 |
---|---|
|
Unspezifizierter Fehler.
Wert: 0x80004005 |
|
Das Gerät wird derzeit von einer anderen Anwendung verwendet.
Wert: 0x80070005 |
|
Mindestens ein Argument ist ungültig.
Wert: 0x80070057 |
|
Fehler beim Zuweisen des erforderlichen Arbeitsspeichers.
Wert: 0x8007000E |
|
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 |
|
Das angegebene Handle ist ungültig.
Wert: 6 |
|
Die angegebene Netzwerkressource oder das angegebene Gerät ist nicht mehr verfügbar.
Wert: 55 |
|
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 |