Microsoft DirectX 8.0 (C++) |
バッファの全部または一部をデータ書き込み用に準備し、データを書き込めるポインタを返す。
HRESULT Lock( DWORD dwOffset, DWORD dwBytes, LPVOID * ppvAudioPtr1, LPDWORD pdwAudioBytes1, LPVOID * ppvAudioPtr2, LPDWORD pdwAudioBytes2, DWORD dwFlags );
成功した場合は DS_OK を返す。
失敗した場合は、次のいずれかのエラー値を返す。
DSERR_BUFFERLOST |
DSERR_INVALIDCALL |
DSERR_INVALIDPARAM |
DSERR_PRIOLEVELNEEDED |
このメソッドはオフセットとバイト カウントを受け取り、2 つの書き込みポインタとそれぞれに関連するサイズを返す。ロックされる部分がバッファの最後まで拡張せず、バッファの先頭にラップされない場合、2 番目のポインタである ppvAudioBytes2 は NULL を受け取る。ロックがラップされる場合、ppvAudioBytes2 はバッファの先頭へのポインタを指す。
アプリケーションが ppvAudioPtr2 パラメータおよび pdwAudioBytes2 パラメータに対して NULL を渡すと、ロックがバッファの終端を越えることはなく、ラップされない。
このメソッドで返されたポインタにデータを書き込んだら、アプリケーションは直ちに IDirectSoundBuffer8::Unlock を呼び出して、データ再生の用意ができたことを DirectSound に通知する必要がある。この通知を行わないと、サウンド デバイスの構成によっては、オーディオの分断または無音状態が発生する場合がある。
このメソッドは、書き込みポインタのみを返す。データが有効でない場合があるため、アプリケーションでこのポインタからサウンド データを読み込もうとすべきではない。たとえば、バッファがカードのメモリに配置されている場合、そのポインタはメイン システム メモリ内の一時バッファのアドレスとなっていることも考えられる。IDirectSoundBuffer8::Unlock を呼び出すと、この一時バッファの内容はカードのメモリに転送される。
ヘッダー : dsound.h で宣言。