次の方法で共有


IMF2DBuffer2::Lock2DSize メソッド (mfobjects.h)

呼び出し元にバッファー内のメモリへのアクセス権を付与します。

構文

HRESULT Lock2DSize(
  [in]  MF2DBuffer_LockFlags lockFlags,
  [out] BYTE                 **ppbScanline0,
  [out] LONG                 *plPitch,
  [out] BYTE                 **ppbBufferStart,
  [out] DWORD                *pcbBufferLength
);

パラメーター

[in] lockFlags

み取り、書き込み、またはその両方のためにバッファーをロックするかどうかを指定するMF2DBuffer_LockFlags列挙体のメンバー。

[out] ppbScanline0

画像内のピクセルの先頭行の最初のバイトへのポインターを受け取ります。 上部の行は、画像がビューアーに表示されるときに先頭行として定義され、メモリ内の最初の行ではない可能性があります。

[out] plPitch

サーフェスストライドをバイト単位で受け取ります。 ストライドは負の値になる可能性があり、画像がメモリの下端から上に向かっていることを示します。

[out] ppbBufferStart

メモリ内のアクセス可能なバッファーの先頭へのポインターを受け取ります。

[out] pcbBufferLength

バッファーの長さをバイト単位で受け取ります。

戻り値

このメソッドは、これらの値のいずれかを返すことができます。

リターン コード 説明
S_OK
正常終了しました。
MF_E_INVALIDREQUEST
無効な要求です。 バッファーは、互換性のないロック フラグで既にロックされている可能性があります。 「解説」を参照してください。
E_OUTOFMEMORY
操作を完了するためのメモリが不足しています。

注釈

メモリへのアクセスが完了したら、 IMF2DBuffer::Unlock2D を呼び出してバッファーのロックを解除します。 Lock2DSize の呼び出しごとに Unlock2D を 1 回呼び出す必要があります。

このメソッドは、 IMF2DBuffer::Lock2D メソッドと 同じです。 ただし、 Lock2DSize は、呼び出し元がメモリ ポインターを検証できるようにするため、および読み取り専用ロックをサポートするため、推奨されます。 バッファーは、 IMF2DBuffer2 インターフェイスをサポートする保証はありません。 バッファーにアクセスするには、一覧表示されている順序で次のメソッドを試す必要があります。

  1. IMF2DBuffer2::Lock2DSize
  2. IMF2DBuffer::Lock2D
  3. IMFMediaBuffer::Lock
ppbBufferStart パラメーターと pcbBufferLength パラメーターは、バッファー メモリの境界を受け取ります。 バッファー オーバーランから保護するには、これらの値を使用します。 ppbScanline0plPitch の値を使用して、イメージ データにアクセスします。 イメージがメモリのボトムアップの場合、 ppbScanline0 はメモリ内の最後のスキャン行を指し、 plPitch は負の値になります。 詳細については、「 イメージストライド」を参照してください。

lockFlags パラメーターは、バッファーが読み取り専用アクセス、書き込み専用アクセス、または読み取り/書き込みアクセス用にロックされているかどうかを指定します。

  • バッファーが既に読み取り専用アクセス用にロックされている場合、書き込みアクセス用にロックすることはできません。
  • 書き込み専用アクセス用にバッファーが既にロックされている場合、読み取りアクセス用にロックすることはできません。
  • バッファーが既に読み取り/書き込みアクセス用にロックされている場合は、読み取りまたは書き込みアクセス用にロックできます。
可能な場合は、読み取り専用または書き込み専用のロックを使用し、読み取り/書き込みアクセス用にバッファーをロックしないようにします。 バッファーが DirectX グラフィックス インフラストラクチャ (DXGI) サーフェスを表す場合、読み取り/書き込みロックによって CPU メモリと GPU メモリの間に余分なコピーが発生する可能性があります。

要件

要件
サポートされている最小のクライアント Windows 8 [デスクトップ アプリ |UWP アプリ]
サポートされている最小のサーバー Windows Server 2012 [デスクトップ アプリ |UWP アプリ]
対象プラットフォーム Windows
ヘッダー mfobjects.h (Mfidl.h を含む)

こちらもご覧ください

IMF2DBuffer2