📄 hardwarebuffer.h
字号:
// HardwareBuffer.h: interface for the CHardwareBuffer class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_HARDWAREBUFFER_H__1CB5335F_773A_4C2A_B96E_F18F7303AD28__INCLUDED_)
#define AFX_HARDWAREBUFFER_H__1CB5335F_773A_4C2A_B96E_F18F7303AD28__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "dmachannel.h"
#include "CX5530Audio.h"
const int MIN_INTERRUPT_INTERVAL = 5; // min number of ms between two interrupts
class CHardwareBuffer :
public CMemoryBuffer,
public IDsDriverNotify
{
public:
//////////////////////////////////////////////////////////////////////////////
/*****************************************************************************
IDsDriverNotify methods
*****************************************************************************/
//////////////////////////////////////////////////////////////////////////////
STDMETHOD(SetNotificationPositions) (THIS_ DWORD, LPCDSBPOSITIONNOTIFY);
public:
CHardwareBuffer(HRESULT &hr, UINT iIndex, volatile struct BusMasterRegisters* pRegisters);
virtual ~CHardwareBuffer();
public:
bool HasInterrupt(void);
virtual void ProcessInterrupt(void);
bool Allocate(ULONG uSize);
void SetDMABuffer();
CDMAChannel* GetSGDTable(){return &m_SGDTable;};
protected:
bool IsStopInterrupt(void);
void StartDMAChannel( bool bCapture);
void StopDMAChannel();
virtual DWORD GetDMAPosition();
volatile struct BusMasterRegisters* m_pRegisters;
// the native sound format (set at buffer creation)
WAVEFORMATEX m_wfxFormat;
DWORD m_dwLastAddr;
ULONG m_ulLastOffset;
CDMAChannel m_SGDTable;
UINT m_uChannel;
CCX5530Audio *m_pCX5530;
CRITICAL_SECTION m_csBuffer;
USHORT m_uNumberOfNotifications;
DSBPOSITIONNOTIFY * m_pDsPositionNotify;
HANDLE m_hEventStop;
bool m_bIsRunning;
};
#endif // !defined(AFX_HARDWAREBUFFER_H__1CB5335F_773A_4C2A_B96E_F18F7303AD28__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -