IStream::LockRegion-Methode (objidl.h)

Die LockRegion-Methode schränkt den Zugriff auf einen angegebenen Bytebereich im Stream ein. Die Unterstützung dieser Funktionalität ist optional, da einige Dateisysteme sie nicht bereitstellen.

Syntax

HRESULT LockRegion(
  [in] ULARGE_INTEGER libOffset,
  [in] ULARGE_INTEGER cb,
  [in] DWORD          dwLockType
);

Parameter

[in] libOffset

Eine ganze Zahl, die den Byteoffset für den Anfang des Bereichs angibt.

[in] cb

Eine ganze Zahl, die die Länge des bereichs in Bytes angibt, der eingeschränkt werden soll.

[in] dwLockType

Gibt die Einschränkungen an, die für den Zugriff auf den Bereich angefordert werden.

Rückgabewert

Diese Methode kann einen dieser Werte zurückgeben.

Rückgabecode Beschreibung
S_OK Der angegebene Bytebereich wurde gesperrt.
E_PENDING Nur asynchroner Speicher: Ein Teil oder alle Daten des Datenstroms sind derzeit nicht verfügbar.
STG_E_INVALIDFUNCTION Das Sperren wird überhaupt nicht unterstützt, oder der spezifische typ der angeforderten Sperre wird nicht unterstützt.
STG_E_LOCKVIOLATION Die angeforderte Sperre wird unterstützt, kann aber aufgrund einer vorhandenen Sperre nicht gewährt werden.
STG_E_REVERTED Das Objekt wurde durch einen rückgängig machen Vorgang darüber in der Transaktionsstruktur ungültig gemacht.

Hinweise

Der Bytebereich des Streams kann erweitert werden. Das Sperren eines erweiterten Bereichs für den Stream ist als Methode der Kommunikation zwischen verschiedenen Instanzen des Datenstroms nützlich, ohne daten zu ändern, die tatsächlich Teil des Datenstroms sind.

Drei Arten von Sperren können unterstützt werden: Sperren, um andere Writer auszuschließen, Sperren, um andere Leser oder Writer auszuschließen, und Sperren, die es nur einem Anforderer ermöglichen, eine Sperre für den angegebenen Bereich zu erhalten, der normalerweise ein Alias für einen der beiden anderen Sperrtypen ist. Ein bestimmter Stream instance unterstützt möglicherweise einen der ersten beiden Typen oder beide. Der Sperrtyp wird von dwLockType mithilfe eines Werts aus der LOCKTYPE-Enumeration angegeben.

Jede mit IStream::LockRegion gesperrte Region muss später explizit entsperrt werden, indem IStream::UnlockRegion mit genau denselben Werten für die Parameter libOffset, cb und dwLockType aufgerufen wird. Die Region muss entsperrt werden, bevor der Stream freigegeben wird. Zwei angrenzende Regionen können nicht separat gesperrt und dann mit einem einzigen Entsperrungsaufruf entsperrt werden.

Hinweise für Anrufer

Da der unterstützte Sperrtyp optional ist und in verschiedenen Implementierungen von IStream variieren kann, müssen Sie Code bereitstellen, um den STG_E_INVALIDFUNCTION Fehler zu beheben.

Die LockRegion-Methode hat keine Auswirkungen auf die Verbunddateiimplementierung, da die Implementierung keine Bereichssperrung unterstützt.

Hinweise für Implementierer

Die Unterstützung für diese Methode ist für Implementierungen von Streamobjekten optional, da sie vom zugrunde liegenden Dateisystem möglicherweise nicht unterstützt wird. Die unterstützte Art der Sperre ist ebenfalls optional. Der STG_E_INVALIDFUNCTION Fehler wird zurückgegeben, wenn der angeforderte Sperrtyp nicht unterstützt wird.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 2000 Professional [Desktop-Apps | UWP-Apps]
Unterstützte Mindestversion (Server) Windows 2000 Server [Desktop-Apps | UWP-Apps]
Zielplattform Windows
Kopfzeile objidl.h
Bibliothek Uuid.lib
DLL Ole32.dll

Weitere Informationen

IStream – Implementierung von Zusammengesetzten Dateien

IStream::UnlockRegion

LOCKTYPE