キャプチャー バッファーの使用
サウンドのキャプチャーは、次の手順で行います。
IDirectSoundCaptureBuffer8::Start メソッドを呼び出して、バッファーを開始します。通常は、バッファーの最後に到達したときに、バッファーを停止せずに続行させるよう、dwFlags パラメーターで DSCBSTART_LOOPING を渡す必要があります。入力デバイスからのオーディオ データは、バッファーの最初から書き込まれます。
必要な量のデータが利用可能になるまで待ちます。キャプチャー カーソルが特定のポイントに到達したことを確認する方法については、「キャプチャー バッファーの通知」を参照してください。
十分なデータが利用可能になったら、IDirectSoundCaptureBuffer8::Lock メソッドを呼び出して、キャプチャー バッファーの一部をロックします。
キャプチャーに使用されるメモリー部分をロックしないようにするには、最初に IDirectSoundCaptureBuffer8::GetCurrentPosition を呼び出して、読み取りカーソルの位置を取得します。
Lock メソッドのパラメーターとして、読み取るメモリー ブロックのサイズおよびオフセットを渡します。このメソッドからは、メモリー ブロックの開始アドレスへのポインターとブロックのサイズが返されます。ブロックがバッファーの最後から先頭へラップ アラウンドする場合は、ブロックのセクションごとに 1 つずつ、合計 2 つのポインターが返されます。2 つ目のポインターは、バッファーのロック部分がラップ アラウンドしない場合、NULL になります。
Lock メソッドから返されたアドレスとブロック サイズを使用して、バッファーからデータをコピーします。
IDirectSoundCaptureBuffer8::Unlock メソッドを使用してバッファーのロックを解除します。
データのキャプチャーを終了できるようになるまで手順 2 ~ 5 を繰り返します。その後、IDirectSoundCaptureBuffer8::Stop メソッドを呼び出します。