次の方法で共有


IDirectSoundCaptureBuffer8::Lock

Lock メソッドは、バッファーの一部をロックします。バッファーのロックによって、バッファーへのポインターが返され、アプリケーションはメモリーに対するオーディオ データの読み取りまたは書き込みを行うことができます。

HRESULT 
Lock(
  DWORD dwOffset,
  DWORD dwBytes,
  LPVOID * ppvAudioPtr1,
  LPDWORD  pdwAudioBytes1,
  LPVOID * ppvAudioPtr2,
  LPDWORD pdwAudioBytes2,
  DWORD dwFlags
);

パラメータ

  • dwOffset
    バッファーの先頭からロック開始位置までのオフセット (バイト単位) です。
  • dwBytes
    ロックするバッファー部分のサイズ (バイト単位) です。バッファーは概念的には循環バッファーであるため、この数値は dwOffset からバッファーの最後までの間のバイト数を上回ることができます。
  • ppvAudioPtr1
    バッファーの最初にロックされた部分へのポインターを受け取る変数のアドレスです。
  • pdwAudioBytes1
    ppvAudioPtr1 のブロックのバイト数を受け取る変数のアドレスです。この値が dwBytes より小さい場合、ロックはラップされ、ppvAudioPtr2 はバッファーの先頭にある第 2 のデータ ブロックを指します。
  • ppvAudioPtr2
    キャプチャー バッファーの 2 番目にロックされた部分へのポインターを受け取る変数のアドレスです。NULL が返された場合、ppvAudioPtr1 パラメーターはキャプチャー バッファーのロックされた部分全体を指します。
  • pdwAudioBytes2
    ppvAudioPtr2 のブロックのバイト数を受け取る変数のアドレスです。ppvAudioPtr2 が NULL の場合、値は 0 です。
  • dwFlags
    ロック イベントを変更するフラグです。この値は、ゼロまたは次のフラグです。

戻り値

成功した場合は、DS_OK を返します。失敗した場合は、次の値のいずれかを返します。

リターン コード
DSERR_INVALIDPARAM
DSERR_INVALIDCALL

解説 

このメソッドは、オフセットとバイト カウントを受け取り、2 つの読み込みポインターとそれに関連するサイズを返します。ロックされる部分がバッファーの最後まで到達せず、バッファーの先頭にラップしない場合、2 番目のポインターである ppvAudioBytes2 は NULL を受け取ります。ロックがラップする場合、ppvAudioBytes2 はバッファーの先頭を指します。

アプリケーションが ppvAudioPtr2 パラメーターと pdwAudioBytes2 パラメーターに NULL を渡すと、ロックはバッファーの最後を越えることはなく、ラップされません。

アプリケーションは、このメソッドで返されたポインターからデータを読み込んだ後、直ちに Unlock を呼び出す必要があります。動作中にサウンド バッファーをロックしたままにしてはいけません。ロックしたままにすると、キャプチャー カーソルがロックされたバイト領域に達し、オーディオの問題が発生することがあります。

要件

ヘッダー: DSound.h 宣言

ライブラリ: Dsound3d.dll 内容

関連項目

IDirectSoundCaptureBuffer8