Microsoft DirectX 8.0 (C++)

IDirectSoundCaptureBuffer8::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
ロック イベントに変更を加えるフラグ。この値は NULL または次のフラグである。
DSCBLOCK_ENTIREBUFFER
dwReadBytes を無視して、キャプチャ バッファ全体をロックする。

戻り値

成功した場合は DS_OK を返す。

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

DSERR_INVALIDPARAM
DSERR_INVALIDCALL

注意

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

アプリケーションが ppvAudioPtr2 パラメータおよび pdwAudioBytes2 パラメータに対して NULL を渡すと、ロックがバッファの終端を越えることはなく、ラップされない。

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

動作環境

  ヘッダー : dsound.h で宣言。