IByteBuffer::LockRegion 方法
[ LockRegion 方法可用於需求一節中指定的作業系統。 它不適用於 Windows Server 2003 Service Pack 1 (SP1) 及更新版本、Windows Vista、Windows Server 2008 和後續版本的作業系統。 IStream介面提供類似的功能。]
LockRegion方法會限制存取緩衝區物件中指定的位元組範圍。
語法
HRESULT LockRegion(
[in] LONG libOffset,
[in] LONG cb,
[in] LONG dwLockType
);
參數
-
libOffset [in]
-
整數,指定範圍開頭的位元組位移。
-
cb [in]
-
整數,指定要限制的範圍長度,以位元組為單位。
-
dwLockType [in]
-
指定存取範圍時所要求的限制。 這可以是下表中的其中一個值。
值 意義 - LOCK_WRITE
指定的位元組範圍可以開啟並讀取任何次數,但禁止寫入鎖定範圍,但授與此鎖定的擁有者除外。 - LOCK_EXCLUSIVE
除了授與此鎖定的擁有者之外,禁止寫入指定的位元組範圍。 - LOCK_ONLYONCE
如果授與此鎖定,就無法在範圍上取得其他LOCK_ONLYONCE鎖定。 此鎖定類型通常是其他鎖定類型的別名。 因此,特定實作可能會有與此鎖定類型相關聯的其他行為。
傳回值
傳回值為 HRESULT。 值S_OK表示呼叫成功。
備註
位元組範圍可以延伸超過資料流程的目前結尾。 超出資料流程結尾的鎖定,可作為資料流程不同實例之間通訊的方法,而不需變更實際屬於資料流程一部分的資料。
可支援三種類型的鎖定:鎖定以排除其他寫入器、鎖定以排除其他讀取器或寫入器,以及只允許一位要求者取得指定範圍的鎖定,這通常是其他兩種鎖定類型之一的別名。 指定的資料流程實例可能支援前兩種類型之一或兩者。 鎖定類型是由 dwLockType所指定,使用 LOCKTYPE 列舉中的值。
使用LockRegion鎖定的任何區域之後,都必須呼叫與libOffset、cb和dwLockType參數完全相同的IByteBuffer::UnlockRegion來明確解除鎖定。 必須先解除鎖定區域,才能釋放資料流程。 無法個別鎖定兩個相鄰區域,然後使用單一解除鎖定呼叫解除鎖定。
範例
下列範例顯示限制對位元組範圍的存取。
HRESULT hr;
// Lock a region.
hr = pIByteBuff->LockRegion(0, 10, LOCK_EXCLUSIVE);
if (FAILED(hr))
printf("Failed IByteBuffer::LockRegion\n");
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 |
Windows XP [僅限傳統型應用程式] |
最低支援的伺服器 |
Windows Server 2003 [僅限桌面應用程式] |
用戶端支援結束 |
Windows XP |
伺服器終止支援 |
Windows Server 2003 |
標頭 |
|
類型程式庫 |
|
DLL |
|
IID |
IID_IByteBuffer定義為 E126F8FE-A7AF-11D0-B88A-00C04FD424B9 |