捕捉一個聲音包括以下步驟:
1.通過調用IDirectSoundCaptureBuffer8::Start方法啟動緩沖區。正規來說 ,你應該設置DSCBSTART_LOOPING 作為dwFlags參數,這樣這個緩沖區將持續運 行而不是當到達緩沖區末尾後就停止。從輸入設備上獲取的音頻數據從緩沖區起 始處開始填充。
2.等待直到達到期望的數據量。一個決定什麼時候捕捉指針到達特定的位置 辦法,參見《波形捕捉:(6)“捕捉緩沖區”通知》。
3.當達到足夠的數據量時,通過調用IDirectSoundCaptureBuffer8::Lock方 法鎖定一部分捕捉緩沖區。
為了確保你試圖鎖定的內存區域不是那些將被用於捕捉的區域,你可以首先 通過調用IDirectSoundCaptureBuffer8::GetCurrentPosition方法得到讀指針的 位置。
你把將要讀取的內存塊的大小和偏移量作為參數傳給Lock方法。這個方法返 回一個指向這個內存塊起始地址的指針和這一塊的大小。如果這塊區域從緩沖區 末尾環繞到起始處,那麼將會返回兩個指針,第一個指針用於這塊區域的每一個 部分。如果鎖定的內存區域沒有環繞則第二個指針為NULL。
4.使用由Lock方法返回的地址和塊大小,從緩沖區中復制數據。
5.使用IDirectSoundCaptureBuffer8::Unlock方法對緩沖區解鎖。
6.重復2~5步,直到你准備停止捕捉數據。然後調用 IDirectSoundCaptureBuffer8::Stop方法。