
- •Приложение Глобальные функции acmDriverAdd
- •AcmDriverEnum
- •AcmDriverEnumCallback
- •AcmDriverPriority
- •AcmDriverProc
- •AcmDriverRemove
- •AcmFilterChoose
- •AcmFilterChooseHookProc
- •AcmFilterEnum
- •AcmFilterEnumCallback
- •AcmFilterTagEnum
- •AcmFilterTagEnumCallback
- •AcmFormatChoose
- •AcmFormatChooseHookProc
- •AcmFormatEnum
- •AcmFormatEnumCallback
- •AcmFormatSuggest
- •AcmFormatTagDetails
- •AcmFormatTagEnum
- •AcmFormatTagEnumCallback
- •AcmMetrics
- •AcmStreamClose
- •AcmStreamConvert
- •AcmStreamConvertCallback
- •AcmStreamOpen
- •AcmStreamPrepareHeader
- •AcmStreamSize
- •AcmStreamUnprepareHeader
- •AfxGetApp
- •AfxGetInstanceHandle
- •AfxGetInstanceHandle
- •AuxGetDevCaps
- •AuxGetNumDevs
- •AuxGetVolume
- •AuxSetVolume
- •CoCreateInstance
- •CoInitialize
- •CommDlgExtendedError
- •CopyMemory
- •CoUninitialize
- •CreateEvent
- •CreateWaitableTimer
- •CreateWindowEx
- •DirectDrawCreate
- •DirectSoundCaptureCreate
- •DirectSoundCaptureEnumerate
- •DirectSoundCreate
- •DirectSoundEnumerate
- •DsEnumCallback
- •EnableWindow
- •FillMemory
- •FormatMessage
- •GetCurrentDirectory
- •GetDiskFreeSpace
- •GetDlgItem
- •GetLastError
- •GetOpenFileName
- •GetOpenFileNamePreview
- •GetSaveFileName
- •GetSaveFileNamePreview
- •GetTickCount
- •GetWindowRect
- •KillTimer
- •MciGetCreatorTask
- •MciGetDeviceId
- •MciGetErrorString
- •MciGetYieldProc
- •MciSendCommand
- •MciSendString
- •MciSetYieldProc
- •MciWndCreate
- •MciWndRegisterClass
- •MessageBeep
- •MessageBox
- •MmioAdvance
- •MmioAscend
- •MmioClose
- •MmioCreateChunk
- •MmioDescend
- •MmioFlush
- •MmioGetInfo
- •MmioInstallIoProc
- •MmioOpen
- •MmioProc
- •MmioRead
- •MmioRename
- •MmioSeek
- •MmioSendMessage
- •MmioSetBuffer
- •MmioSetInfo
- •MmioStringToFourcc
- •MmioWrite
- •MsgWaitForMultipleObjects
- •OutputDebugString
- •PlaySound
- •PulseEvent
- •QueryPerformanceCounter
- •QueryPerformanceFrequency
- •RegisterWindowMessage
- •ResetEvent
- •SetCurrentDirectory
- •SetCursor
- •SetDiBitsToDevice
- •SetEvent
- •SetTimer
- •SndPlaySound
- •TimeBeginPeriod
- •TimeEndPeriod
- •TimeGetDevCaps
- •TimeGetSystemTime
- •TimeGetTime
- •TimeKillEvent
- •TimeProc
- •TimerProc
- •TimeSetEvent
- •WaitForSingleObject
- •WaveInAddBuffer
- •WaveInGetDevCaps
- •WaveInGetErrorText
- •WaveInGetNumDevs
- •WaveInOpen
- •WaveInPrepareHeader
- •WaveInProc
- •WaveInReset
- •WaveInStart
- •WaveInStop
- •WaveInUnprepareHeader
- •WaveOutBreakLoop
- •WaveOutClose
- •WaveOutGetDevCaps
- •WaveOutGetErrorText
- •WaveOutGetNumDevs
- •WaveOutGetPitch
- •WaveOutGetPlaybackRate
- •WaveOutGetPosition
- •WaveOutGetVolume
- •WaveOutOpen
- •WaveOutPause
- •WaveOutPrepareHeader
- •WaveOutProc
- •WaveOutReset
- •WaveOutRestart
- •WaveOutSetPitch
- •WaveOutSetPlaybackRate
- •WaveOutSetVolume
- •WaveOutUnprepareHeader
- •WaveOutWrite
- •WinHelp
- •ZeroMemory
- •Интерфейсы
- •IDirectSound
- •IDirectSound::Compact
- •IDirectSound::CreateSoundBuffer
- •IDirectSound::DuplicateSoundBuffer
- •IDirectSound::GetCaps
- •IDirectSound::GetSpeakerConfig
- •IDirectSound::Initialize
- •IDirectSound::SetCooperativeLevel
- •IDirectSound::SetSpeakerConfig
- •IDirectSoundBuffer
- •IDirectSoundBuffer::GetCaps
- •IDirectSoundBuffer::GetCurrentPosition
- •IDirectSoundBuffer::GetFormat
- •IDirectSoundBuffer::GetFrequency
- •IDirectSoundBuffer::GetPan
- •IDirectSoundBuffer::GetStatus
- •IDirectSoundBuffer::GetVolume
- •IDirectSoundBuffer::Lock
- •IDirectSoundBuffer::Play
- •IDirectSoundBuffer::Restore
- •IDirectSoundBuffer::SetCurrentPosition
- •IDirectSoundBuffer::SetFormat
- •IDirectSoundBuffer::SetFrequency
- •IDirectSoundBuffer::SetPan
- •IDirectSoundBuffer::SetVolume
- •IDirectSoundBuffer::Stop
- •IDirectSoundBuffer::Unlock
- •IDirectSoundCapture
- •IDirectSoundCapture::CreateCaptureBuffer
- •IDirectSoundCapture::GetCaps
- •IDirectSoundCaptureBuffer
- •IDirectSoundCaptureBuffer::GetCaps
- •IDirectSoundCaptureBuffer::GetCurrentPosition
- •IDirectSoundCaptureBuffer::GetFormat
- •IDirectSoundCaptureBuffer::GetStatus
- •IDirectSoundCaptureBuffer::Lock
- •IDirectSoundCaptureBuffer::Start
- •IDirectSoundCaptureBuffer::Stop
- •IDirectSoundCaptureBuffer::Unlock
- •IDirectSoundNotify
- •IDirectSoundNotify::SetNotificationPositions
- •IKsPropertySet
- •IKsPropertySet::Get
- •IKsPropertySet::QuerySupport
- •IKsPropertySet::Set
- •IUnknown
- •Реализация
- •Использование
- •IUnknown::AddRef
- •IUnknown::QueryInterface
- •IUnknown::Release
- •Классы cArchive
- •CArchive::Read
- •CArchive::Write
- •CBitmap
- •CBitmap::CreateCompatibleBitmap
- •CBitmap::GetBitmapBits
- •CBitmap::SetBitmapBits
- •CCmdUi::ContinueRouting
- •CCmdUi::Enable
- •CCmdUi::SetCheck
- •Cdc::Attach
- •Cdc::BitBlt
- •Cdc::CreateCompatibleDc
- •Cdc::Detach
- •Cdc::EndDoc
- •Cdc::EndPage
- •Cdc::FillRect
- •Cdc::GetDeviceCaps
- •Cdc::GetSafeHdc
- •Cdc::GetTextExtent
- •Cdc::IsPrinting
- •Cdc::LineTo
- •Cdc::Rectangle
- •Cdc::SelectClipRgn
- •Cdc::SelectObject
- •Cdc::SetMapMode
- •Cdc::SetTextAlign
- •Cdc::SetViewportOrg
- •Cdc::StartDoc
- •Cdc::StartPage
- •CDialog
- •CDialog::OnCancel
- •CDialog::DoModal
- •CDialog::EndDialog
- •CDialog::OnInitDialog
- •CDialog::OnOk
- •CDocument
- •CDocument::GetFile
- •CDocument::GetPathName
- •CDocument::OnNewDocument
- •CDocument::ReleaseFile
- •CDocument::SetModifiedFlag
- •CDocument::UpdateAllViews
- •CFile::cFile
- •CFile::Close
- •CFile::GetFilePath
- •CFile::GetLength
- •CFile::Open
- •CFile::Read
- •CFile::Remove
- •CFile::Seek
- •CFile::SeekToBegin
- •CFile::SetLength
- •CFile::Write
- •CFrameWnd
- •CFrameWnd::Create
- •CFrameWnd::DockControlBar
- •CFrameWnd::EnableDocking
- •CFrameWnd::LoadBarState
- •CFrameWnd::LoadFrame
- •CFrameWnd::OnCreateClient
- •CFrameWnd::SaveBarState
- •CFrameWnd::SetActiveView
- •CFrameWnd::ShowControlBar
- •CObArray
- •CObArray::Add
- •CObArray::GetSize
- •CObArray::operator [ ]
- •CObArray::RemoveAll
- •CObArray::SetSize
- •CPropertyPage
- •CPropertyPage::OnSetActive
- •CPropertyPage::OnWizardBack
- •CPropertyPage::OnWizardFinish
- •CPropertyPage::OnWizardNext
- •CPropertySheet
- •CPropertySheet::AddPage
- •CPropertySheet::Construct
- •CPropertySheet::cPropertySheet
- •CPropertySheet::DoModal
- •CPropertySheet::GetPageIndex
- •CPropertySheet::SetActivePage
- •CPropertySheet::SetFinishText
- •CPropertySheet::SetTitle
- •CPropertySheet::SetWizardButtons
- •CPropertySheet::SetWizardMode
- •CRect::NormalizeRect
- •CRect::OffsetRect
- •CRect::PtInRect
- •CRect::SetRect
- •CRgn::CreateRectRgnIndirect
- •CSliderCtrl
- •CSliderCtrl::GetPos
- •CSliderCtrl::SetLineSize
- •CSliderCtrl::SetPageSize
- •CSliderCtrl::SetPos
- •CSliderCtrl::SetRange
- •CSliderCtrl::SetTicFreq
- •CSplitterWnd
- •CSplitterWnd::CreateStatic
- •CSplitterWnd::CreateView
- •CSplitterWnd::GetPane
- •CStatusBar
- •CStatusBar::CommandToIndex
- •CStatusBar::Create
- •CStatusBar::SetIndicators
- •CStatusBar::SetPaneInfo
- •CStatusBar::SetPaneText
- •CString
- •CString::Empty
- •CString::Format
- •CString::GetBuffer
- •CString::IsEmpty
- •CString::LoadString
- •CString::MakeReverse
- •CString::ReleaseBuffer
- •CView::DoPreparePrinting
- •CView::GetDocument
- •CView::OnBeginPrinting
- •CView::OnDraw
- •CView::OnInitialUpdate
- •CView::OnPrepareDc
- •CView::OnPreparePrinting
- •CView::OnPrint
- •CView::OnUpdate
- •CWinApp
- •CWinApp::AddDocTemplate
- •CWinApp::Enable3dControls
- •CWinApp::GetProfileInt
- •CWinApp::GetProfileString
- •CWinApp::InitInstance
- •CWinApp::LoadIcon
- •CWinApp::LoadStandardCursor
- •CWinApp::OpenDocumentFile
- •CWinApp::SetRegistryKey
- •CWinApp::WriteProfileInt
- •CWinApp::WriteProfileString
- •CWnd::DoDataExchange
- •CWnd::EnableWindow
- •CWnd::GetClientRect
- •CWnd::GetDlgItem
- •CWnd::GetParent
- •CWnd::GetParentFrame
- •CWnd::GetParentOwner
- •CWnd::GetSafeHwnd
- •CWnd::Invalidate
- •CWnd::IsDlgButtonChecked
- •CWnd::OnHScroll
- •CWnd::OnKillFocus
- •CWnd::OnSetFocus
- •CWnd::SetScrollInfo
- •CWnd::SetScrollPos
- •CWnd::ShowScrollBar
- •CWnd::UpdateData
- •Команды mci break
- •Capability
- •Sysinfo
- •Макросы mci_hms_hour
- •Mci_hms_minute
- •Mci_hms_second
- •Mci_make_hms
- •Mci_make_msf
- •Mci_make_tmsf
- •Mci_msf_frame
- •Mci_msf_minute
- •Mci_msf_second
- •Mci_tmsf_frame
- •Mci_tmsf_minute
- •Mci_tmsf_second
- •Mci_tmsf_track
- •MciWndCanConfig
- •MciWndCanEject
- •MciWndCanPlay
- •MciWndCanRecord
- •MciWndCanSave
- •MciWndCanWindow
- •MciWndChangeStyles
- •MciWndClose
- •MciWndDestroy
- •MciWndEnd
- •MciWndGetActiveTimer
- •MciWndGetAlias
- •MciWndGetDevice
- •MciWndGetDeviceId
- •MciWndGetEnd
- •MciWndGetError
- •MciWndGetFileName
- •MciWndGetInactiveTimer
- •MciWndGetLength
- •MciWndGetPosition
- •MciWndGetPositionString
- •MciWndGetRepeat
- •MciWndGetSpeed
- •MciWndGetStart
- •MciWndGetStyles
- •MciWndGetTimeFormat
- •MciWndGetVolume
- •MciWndHome
- •MciWndNew
- •MciWndOpen
- •MciWndOpenDialog
- •MciWndOpenInterface
- •MciWndPause
- •MciWndPlay
- •MciWndPlayFrom
- •MciWndPlayFromTo
- •MciWndPlayReverse
- •MciWndPlayTo
- •MciWndRecord
- •MciWndResume
- •MciWndReturnString
- •MciWndSave
- •MciWndSaveDialog
- •MciWndSeek
- •MciWndSendString
- •MciWndSetActiveTimer
- •MciWndSetInactiveTimer
- •MciWndSetOwner
- •MciWndSetRepeat
- •MciWndSetSpeed
- •MciWndSetTimeFormat
- •MciWndSetTimers
- •MciWndSetVolume
- •MciWndStep
- •MciWndStop
- •MciWndUseFrames
- •MciWndUseTime
- •MmioFourcc
- •Массивы patcharray
- •Keyarray
- •Сообщения mci_break
- •Mci_close
- •Mci_getdevcaps
- •Mci_index
- •Mci_open
- •Mci_pause
- •Mci_play
- •Mci_record
- •Mci_reserve
- •Mci_resume
- •Mci_save
- •Mci_seek
- •Mci_setaudio
- •Mci_status
- •Mci_stop
- •Mciwndm_can_config
- •Mciwndm_can_eject.
- •Mciwndm_can_play
- •Mciwndm_can_record
- •Mciwndm_can_save
- •Mciwndm_can_window
- •Mciwndm_changestyles
- •Mciwndm_getactivetimer
- •Mciwndm_getalias
- •Mciwndm_getdevice
- •Mciwndm_getdeviceid
- •Mciwndm_getend
- •Mciwndm_geterror
- •Mciwndm_getfilename
- •Mciwndm_getinactivetimer
- •Mciwndm_getlength
- •Mciwndm_getposition
- •Mciwndm_getrepeat
- •Mciwndm_getspeed
- •Mciwndm_getstart
- •Mciwndm_getstyles
- •Mciwndm_gettimeformat
- •Mciwndm_getvolume
- •Mciwndm_new
- •Mciwndm_notifyerror
- •Mciwndm_notifymedia
- •Mciwndm_notifymode
- •Mciwndm_notifypos
- •Mciwndm_open
- •Mciwndm_openinterface
- •Mciwndm_playfrom
- •Mciwndm_playreverse
- •Mciwndm_playto
- •Mciwndm_returnstring
- •Mciwndm_sendstring
- •Mciwndm_setactivetimer
- •Mciwndm_setinactivetimer
- •Mciwndm_setowner
- •Mciwndm_setrepeat
- •Mciwndm_setspeed
- •Mciwndm_settimeformat
- •Mciwndm_settimers
- •Mciwndm_setvolume
- •Mm_acm_formatchoose
- •Mm_mcinotify
- •Mm_mcisignal
- •Mm_wim_close
- •Mm_wim_data
- •Mm_wim_open
- •Mm_wom_close
- •Mm_wom_done
- •Mm_wom_open
- •Mmiom_close
- •Mmiom_open
- •Mmiom_read
- •Mmiom_rename
- •Mmiom_seek
- •Mmiom_write
- •Mmiom_writeflush
- •Wm_close
- •Wm_timer
- •Структуры acmdriverdetails
- •Acmfilterchoose
- •Acmformatchoose
- •Acmfilterdetails
- •Acmfiltertagdetails
- •Acmformatdetails
- •Acmformattagdetails
- •Acmstreamheader
- •Auxcaps
- •Bitmapinfo
- •Bitmapinfoheader
- •Createstruct
- •Dsbcaps
- •Dsbpositionnotify
- •Dsbufferdesc
- •Dscbcaps
- •Dscbufferdesc
- •Dsccaps
- •Logfont
- •Mci_break_parms
- •Mci_dgv_cue_parms
- •Mci_dgv_open_parms
- •Mci_dgv_pause_parms
- •Mci_dgv_play_parms
- •Mci_dgv_record_parms
- •Mci_dgv_reserve_parms
- •Mci_dgv_save_parms
- •Mci_dgv_set_parms
- •Mci_dgv_status_parms
- •Mci_generic_parms
- •Mci_getdevcaps_parms
- •Mci_open_parms
- •Mci_ovly_open_parms
- •Mci_ovly_save_parms
- •Mci_play_parms
- •Mci_record_parms
- •Mci_save_parms
- •Mci_seek_parms
- •Mci_seq_set_parms
- •Mci_set_parms
- •Mci_status_parms
- •Mci_vcr_cue_parms
- •Mci_vcr_play_parms
- •Mci_vcr_record_parms
- •Mci_vcr_seek_parms
- •Mci_vcr_set_parms
- •Mci_vcr_status_parms
- •Mci_vd_play_parms
- •Mci_wave_open_parms
- •Mci_wave_set_parms
- •Mmckinfo
- •Mmioinfo
- •Openfilename
- •Rgbquad
- •Scrollinfo
- •Security_attributes
- •Timecaps
- •Wavefilter
- •Waveformatex
- •Wavehdr
- •Waveincaps
- •Waveoutcaps
Dsbpositionnotify
typedef struct {
DWORD dwOffset;
HANDLE hEventNotify;
} DSBPOSITIONNOTIFY, *LPDSBPOSITIONNOTIFY;
typedef const DSBPOSITIONNOTIFY *LPCDSBPOSITIONNOTIFY;
Переменные
dwOffset — смещение от начала буфера точки, в которой будет отмечено событие, или DSBPN_OFFSETSTOP.
hEventNotify — дескриптор события, отмечаемого при достижении курсором воспроизведения заданной точки в аудио буфере.
Примечание
Объект структуры DSBPOSITIONNOTIFY используется в методе IDirectSoundNotify::SetNotificationPositions.
Если в переменной dwOffset содержится значение DSBPN_OFFSETSTOP, то событие отмечается в случае прекращения воспроизведения или записи вследствие достижения конца буфера при отсутствии режима кольцевого воспроизведения или вызова приложением методов IDirectSoundBuffer::Stop или IDirectSoundCaptureBuffer::Stop.
Описание данной структуры содержится в файле заголовка dsound.h
Dsbufferdesc
typedef struct {
DWORD dwSize;
DWORD dwFlags;
DWORD dwBufferBytes;
DWORD dwReserved;
LPWAVEFORMATEX lpwfxFormat;
} DSBUFFERDESC, *LPDSBUFFERDESC;
typedef const DSBUFFERDESC *LPCDSBUFFERDESC;
Переменные
dwSize —размер структуры в байтах. Эта переменная должна быть инициализирована до первого обращения к объекту структуры.
dwFlags — определяет возможности создаваемого объекта DirectSoundBuffer. Является комбинацией следующих значений:
DSBCAPS_CTRL3D — данный буфер представляет собой первичный или вторичный аудио буфер, способный работать с 3-мерным звуком.
DSBCAPS_CTRLDEFAULT — буфер имеет настройки, используемые по умолчанию. Данный флаг эквивалентен одновременной установке флагов DSBCAPS_CTRLPAN, DSBCAPS_CTRLVOLUME и DSBCAPS_CTRLFREQUENCY.
DSBCAPS_CTRLFREQUENCY — буфер может изменять частоту дискретизации.
DSBCAPS_CTRLPAN — буфер способен панорамировать звук.
DSBCAPS_CTRLPOSITIONNOTIFY — буфер способен информировать о позиции своего курсора.
DSBCAPS_CTRLVOLUME — буфер позволяет управлять уровнем.
DSBCAPS_GETCURRENTPOSITION2 — указывает на то, что метод IDirectSoundBuffer::GetCurrentPosition должен использовать расширенные возможности управления курсором буфера воспроизведения. В объектах DirectSound, создаваемых DirectX версии 1 курсор буфера воспроизведения существенно опережал текущую позицию воспроизводимого аудио сигнала эмулируемых звуковых карт и отставал от курсора буфера записи. Флаг DSBCAPS_GETCURRENTPOSITION2 позволяет приложению получить более корректную информацию о позиции курсора буфера воспроизведения. Если этот флаг не определён, то, для совместимости со старыми приложениями, используется прежний режим отображения позиции курсора. Данный флаг используется только в режиме эмуляции звуковых карт. При наличии драйвера DirectSound позиция курсора буфера воспроизведения корректно отображается во всех версиях DirectX.
DSBCAPS_GLOBALFOCUS — создаётся глобальный аудио буфер. Если установлен данный флаг, то приложение, использующее DirectSound, может продолжать воспроизведение содержимого буфера после передачи фокуса ввода другому приложению даже в том случае, если новое приложение использует DirectSound. Из этого правила существует одно исключение: если новое приложение использует DirectSound с уровнем приоритета DSSCL_EXCLUSIVE или DSSCL_WRITEPRIMARY, то глобальные буфера других приложений заглушаются.
DSBCAPS_LOCHARDWARE — для данного буфера будет использоваться аппаратное микширование даже в том случае, если не установлен флаг DSBCAPS_STATIC. Если устройство не поддерживает аппаратного микширования или на звуковой карте отсутствует необходимый объём памяти, вызов метода IDirectSound::CreateSoundBuffer завершиться с ошибкой. Поскольку возможность аппаратного микширования обеспечивается не всеми звуковыми картами, приложение должно проверить наличие этой возможности до вызова соответствующих функций.
DSBCAPS_LOCSOFTWARE — размещает буфер в оперативной памяти и использует для него программное микширование даже в том случае, если установлен флаг DSBCAPS_STATIC и имеется возможность аппаратного микширования.
DSBCAPS_MUTE3DATMAXDISTANCE — устанавливается предельная продолжительность воспроизведения звука. После превышения этой величины воспроизведение звука из буфера прекращается, что предотвращает чрезмерную загрузку центрального процессора.
DSBCAPS_PRIMARYBUFFER — указывает на то, что данные установки относятся к первичному аудио буферу. Если этот флаг не установлен, создаётся вторичный аудио буфер.
DSBCAPS_STATIC — указывает на то, что данный буфер будет использоваться для хранения статической аудио информации. Обычно такой буфер однократно загружается и многократно воспроизводится. Это обстоятельство делает их первыми кандидатами на размещение в памяти звуковой карты.
DSBCAPS_STICKYFOCUS — изменяет поведение аудио буферов при перемещении фокуса ввода приложения. Этот флаг может быть установлен при вызове метода IDirectSound::CreateSoundBuffer. Установка данного флага приводит к тому, что приложение, использующее DirectSound, продолжает воспроизведение своего специальным образом оформленного аудио буфера при передаче пользователем фокуса ввода приложению не использующему DirectSound. Воспроизведение обычных аудио буферов при этом прекращается. Это позволяет прослушивать аудио информацию при работе в таких приложениях как Microsoft Word или Microsoft Excel. Однако в том случае, когда фокус ввода передаётся приложению, использующему DirectSound, прекращается воспроизведение всех буферов старого приложения.
dwBufferBytes — задаёт размер создаваемого буфера в байтах. При создании первичного аудио буфера эта переменная должна содержать нулевое значение. Для вторичных аудио буферов значение этой переменной должно лежать в пределах, определяемых величинами DSBSIZE_MIN и DSBSIZE_MAX, определёнными в файле заголовка Dsound.h.
dwReserved — зарезервировано для дальнейшего использования.
lpwfxFormat — указатель на объект структуры, содержащей описание формата аудио информации в буфере. Для установки формата первичного аудио буфера используется метод IDirectSoundBuffer::SetFormat.
Примечание
Объект структуры DSBUFFERDESC содержит описание параметров объекта DirectSoundBuffer, создаваемого методом IDirectSound::CreateSoundBuffer.
Флаги DSBCAPS_LOCHARDWARE и DSBCAPS_LOCSOFTWARE, устанавливаемые в переменной dwFlags являются необязательными и взаимоисключающими. Флаг DSBCAPS_LOCHARDWARE используется для размещения буфера в памяти звуковой карты, а флаг DSBCAPS_LOCSOFTWARE размещает его в оперативной памяти компьютера, если это возможно.
Эти же флаги определены в переменной dwFlags, являющейся членом структуры DSCAPS, где они определяют фактическое размещение объекта DirectSoundBuffer.
При создании первичного аудио буфера приложение должно поместить в переменную dwBufferBytes нулевое значение. DirectSound определит оптимальный размер буфера исходя из возможностей используемой звуковой карты. Для определения размера созданного первичного аудио буфера следует вызвать метод IDirectSoundBuffer::GetCaps.
Описание данной структуры содержится в файле заголовка dsound.h
DSCAPS
typedef {
DWORD dwSize;
DWORD dwFlags;
DWORD dwMinSecondarySampleRate;
DWORD dwMaxSecondarySampleRate;
DWORD dwPrimaryBuffers;
DWORD dwMaxHwMixingAllBuffers;
DWORD dwMaxHwMixingStaticBuffers;
DWORD dwMaxHwMixingStreamingBuffers;
DWORD dwFreeHwMixingAllBuffers;
DWORD dwFreeHwMixingStaticBuffers;
DWORD dwFreeHwMixingStreamingBuffers;
DWORD dwMaxHw3DAllBuffers;
DWORD dwMaxHw3DStaticBuffers;
DWORD dwMaxHw3DStreamingBuffers;
DWORD dwFreeHw3DAllBuffers;
DWORD dwFreeHw3DStaticBuffers;
DWORD dwFreeHw3DStreamingBuffers;
DWORD dwTotalHwMemBytes;
DWORD dwFreeHwMemBytes;
DWORD dwMaxContigFreeHwMemBytes;
DWORD dwUnlockTransferRateHwBuffers;
DWORD dwPlayCpuOverheadSwBuffers;
DWORD dwReserved1;
DWORD dwReserved2;
} DSCAPS, *LPDSCAPS;
typedef const DSCAPS *LPCDSCAPS;
Переменные
dwSize — размер структуры в байтах. Эта переменная должна быть инициализирована до первого обращения к объекту структуры.
dwFlags — определяет возможности устройства. Является комбинацией следующих значений:
DSCAPS_CERTIFIED — драйвер был протестирован и сертифицирован корпорацией Microsoft.
DSCAPS_CONTINUOUSRATE — аудио устройство может работать со всеми частотами дискретизации от dwMinSecondarySampleRate до dwMaxSecondarySampleRate. Обычно это означает, что реальная частота дискретизации выводимой информации находится в пределах 10 Гц от требуемой частоты дискретизации.
DSCAPS_EMULDRIVER — для устройства не установлен драйвер DirectSound, поэтому он эмулируется стандартными функциями Windows. Это приводит к дополнительным временным затратам.
DSCAPS_PRIMARY16BIT — аудио устройство способно работать с 16-разрядным первичным аудио буфером.
DSCAPS_PRIMARY8BIT — аудио устройство способно работать с 8-разрядным первичным аудио буфером.
DSCAPS_PRIMARYMONO — аудио устройство способно работать с первичными моно буферами.
DSCAPS_PRIMARYSTEREO — аудио устройство способно работать с первичными стерео буферами.
DSCAPS_SECONDARY16BIT — аудио устройство способно работать с аппаратно микшируемыми 16-разрядным вторичным аудио буферами.
DSCAPS_SECONDARY8BIT — аудио устройство способно работать с аппаратно микшируемыми 8-разрядным вторичным аудио буферами.
DSCAPS_SECONDARYMONO — аудио устройство способно работать с аппаратно микшируемыми вторичными моно буферами.
DSCAPS_SECONDARYSTEREO — аудио устройство способно работать с аппаратно микшируемыми вторичными стерео буферами.
dwMinSecondarySampleRate и dwMaxSecondarySampleRate — минимальная и максимальная частота дискретизации, аппаратно поддерживаемая вторичными аудио буферами данного устройства.
dwPrimaryBuffers — количество поддерживаемых первичных аудио буферов. Эта величина всегда равняется 1.
dwMaxHwMixingAllBuffers — определяет общее число аудио буферов, которое может быть смешано аппаратно. Эта величина может быть меньше суммы величин dwMaxHwMixingStaticBuffers и dwMaxHwMixingStreamingBuffers, поскольку эти буфера могут разделять одно и то же физическое пространство в памяти звуковой карты.
dwMaxHwMixingStaticBuffers — определяет общее число статических аудио буферов устройства.
dwMaxHwMixingStreamingBuffers — определяет общее число потоковых аудио буферов устройства.
dwFreeHwMixingAllBuffers, dwFreeHwMixingStaticBuffers и dwFreeHwMixingStreamingBuffers — определяет незадействованные возможности устройства по микшированию буферов. Приложение может использовать эти величины для определения аппаратных ресурсов, которые могут быть использованы для создания вторичных аудио буферов. Вычитание полученных значений из соответствующих предельных значений позволяет определить объём уже задействованных ресурсов.
dwMaxHw3DAllBuffers, dwMaxHw3DStaticBuffers и dwMaxHw3DStreamingBuffers — описание возможностей устройства по созданию 3-мерного звука.
dwFreeHw3DAllBuffers, dwFreeHw3DStaticBuffers и dwFreeHw3DStreamingBuffers — описание незадействованных возможностей устройства по созданию 3-мерного звука.
dwTotalHwMemBytes — размер в байтах оперативной памяти, расположенной на звуковой карте, которая может быть использована для создания статических аудио буферов.
dwFreeHwMemBytes — размер в байтах оперативной памяти, расположенной на звуковой карте.
dwMaxContigFreeHwMemBytes — размер в байтах наибольшей свободной слитной области памяти, расположенной на звуковой карте.
dwUnlockTransferRateHwBuffers — характеризует скорость, измеряемую в килобайтах в секунду, с которой данные могут передаваться в аппаратно реализованный статический аудио буфер. Эта величина, наряду с объёмом передаваемой информации, определяет продолжительность вызова метода IDirectSoundBuffer::Unlock. Для программно реализованных буферов эта величина равна нулю, поскольку нет необходимости перемещать какие-либо данные.
dwPlayCpuOverheadSwBuffers — определяет процентную загрузку центрального процессора при микшировании программно реализованных буферов (расположенных в оперативной памяти компьютера). Эта величина зависит от типа используемой шины, типа процессора и его тактовой частоты. Эта величина равна нулю для аппаратно реализованных буферов, поскольку их микширование производится в звуковой карте.
dwReserved1 dwReserved2 — зарезервировано для дальнейшего использования.
Примечание
Объект структуры DSCAPS используется для передачи описания возможностей устройства DirectSound в метод IDirectSound::GetCaps.
Описание данной структуры содержится в файле заголовка dsound.h.