IByteBuffer::LockRegion-Methode
[Die LockRegion-Methode ist für die Verwendung in den Betriebssystemen verfügbar, die im Abschnitt Anforderungen angegeben sind. Es ist nicht für die Verwendung in Windows Server 2003 mit Service Pack 1 (SP1) und höher, Windows Vista, Windows Server 2008 und nachfolgenden Versionen des Betriebssystems verfügbar. Die IStream-Schnittstelle bietet ähnliche Funktionen.]
Die LockRegion-Methode schränkt den Zugriff auf einen angegebenen Bytesbereich im Pufferobjekt ein.
Syntax
HRESULT LockRegion(
[in] LONG libOffset,
[in] LONG cb,
[in] LONG dwLockType
);
Parameter
-
libOffset [in]
-
Ganzzahl, die den Byteoffset für den Anfang des Bereichs angibt.
-
cb [in]
-
Ganze Zahl, die die Länge des zu beschränkenden Bereichs in Bytes angibt.
-
dwLockType [in]
-
Gibt die Einschränkungen an, die beim Zugriff auf den Bereich angefordert werden. Dies kann einer der Werte in der folgenden Tabelle sein.
Wert Bedeutung - LOCK_WRITE
Der angegebene Bytebereich kann beliebig oft geöffnet und gelesen werden, aber das Schreiben in den gesperrten Bereich ist mit Ausnahme des Besitzers, dem diese Sperre gewährt wurde, verboten. - LOCK_EXCLUSIVE
Das Schreiben in den angegebenen Bytebereich ist mit Ausnahme des Besitzers, dem diese Sperre gewährt wurde, untersagt. - LOCK_ONLYONCE
Wenn diese Sperre gewährt wird, kann keine andere LOCK_ONLYONCE Sperre für den Bereich abgerufen werden. Normalerweise ist dieser Sperrtyp ein Alias für einen anderen Sperrtyp. Daher kann bestimmten Implementierungen zusätzliches Verhalten diesem Sperrtyp zugeordnet sein.
Rückgabewert
Der Rückgabewert ist ein HRESULT. Der Wert S_OK gibt an, dass der Aufruf erfolgreich war.
Bemerkungen
Der Bytebereich kann über das aktuelle Ende des Datenstroms hinaus reichen. Das Sperren über das Ende eines Datenstroms hinaus ist als Kommunikationsmethode 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 Schreiber auszuschließen, Sperren, um andere Lese- oder Schreibgeräte auszuschließen, und Sperren, die es nur einem Anforderer ermöglicht, eine Sperre für den angegebenen Bereich zu erhalten, was normalerweise ein Alias für einen der beiden anderen Sperrtypen ist. Ein bestimmter Stream instance kann einen der ersten beiden Typen oder beide unterstützen. Der Sperrtyp wird von dwLockType mit einem Wert aus der LOCKTYPE-Enumeration angegeben.
Jede mit LockRegion gesperrte Region muss später explizit entsperrt werden, indem IByteBuffer::UnlockRegion mit genau den gleichen 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 einzelnen Entsperrungsaufruf entsperrt werden.
Beispiele
Das folgende Beispiel zeigt die Einschränkung des Zugriffs auf einen Bytebereich.
HRESULT hr;
// Lock a region.
hr = pIByteBuff->LockRegion(0, 10, LOCK_EXCLUSIVE);
if (FAILED(hr))
printf("Failed IByteBuffer::LockRegion\n");
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) |
Windows XP [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) |
Windows Server 2003 [nur Desktop-Apps] |
Ende des Supports (Client) |
Windows XP |
Ende des Supports (Server) |
Windows Server 2003 |
Header |
|
Typbibliothek |
|
DLL |
|
IID |
IID_IByteBuffer ist definiert als E126F8FE-A7AF-11D0-B88A-00C04FD424B9 |