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 |