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 内容