次の方法で共有


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 の値は、呼び出しが成功したことを示します。

解説

バイト範囲は、ストリームの現在の末尾を超えて拡張できます。 ストリームの末尾を超えたロックは、実際にストリームの一部であるデータを変更することなく、ストリームの異なるインスタンス間の通信方法として役立ちます。

3 種類のロックをサポートできます。他のライターを除外するためのロック、他のリーダーまたはライターを除外するためのロック、および 1 つのリクエスターのみが特定の範囲のロックを取得できるようにするロック (通常は他の 2 つのロックの種類の 1 つの別名です)。 特定のストリーム インスタンスは、最初の 2 つの型のいずれか、またはその両方をサポートする場合があります。 ロックの種類は、LOCKTYPE 列挙体の値を使用して dwLockType によって指定されます。

LockRegion でロックされているリージョンは、後で libOffsetcbdwLockType パラメーターとまったく同じ値を使用して IByteBuffer::UnlockRegion を呼び出すことによって、明示的にロック解除する必要があります。 ストリームが解放される前に、リージョンのロックを解除する必要があります。 隣接する 2 つのリージョンを個別にロックしてから、1 回のロック解除呼び出しでロックを解除することはできません。

次の例は、バイト範囲へのアクセスの制限を示しています。

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
Header
Scardssp.h
タイプ ライブラリ
Scardssp.tlb
[DLL]
Scardssp.dll
IID
IID_IByteBufferは E126F8FE-A7AF-11D0-B88A-00C04FD424B9 として定義されています