DirectX SDK |
The information in this topic pertains only to applications written in C and C++. See DirectSound Visual Basic Tutorials.
Still inside the SetupStreamBuffer function, you now create a secondary sound buffer in the same format as the wave file. The process is similar for that you used in Step 1 to create a primary buffer. First you describe the buffer in the global DSBUFFERDESC structure, then you pass this description to the IDirectSound::CreateSoundBuffer method.
memset(&dsbdesc, 0, sizeof(DSBUFFERDESC)); dsbdesc.dwSize = sizeof(DSBUFFERDESC); dsbdesc.dwFlags = DSBCAPS_GETCURRENTPOSITION2 // Always a good idea | DSBCAPS_GLOBALFOCUS // Allows background playing | DSBCAPS_CTRLPOSITIONNOTIFY; // Needed for notification // The size of the buffer is arbitrary, but should be at least // two seconds, to keep data writes well ahead of the play // position. dsbdesc.dwBufferBytes = pwfx->nAvgBytesPerSec * 2; dsbdesc.lpwfxFormat = pwfx; if FAILED(IDirectSound_CreateSoundBuffer( lpds, &dsbdesc, &lpdsb, NULL)) { WaveCloseReadFile(&hmmio, &pwfx); return FALSE; }