mirror of
https://github.com/reactos/reactos.git
synced 2025-02-23 17:05:46 +00:00
- Fix building of cmidriver
- Required a few hacks, which were documented as //HACK svn path=/trunk/; revision=44113
This commit is contained in:
parent
effa38586c
commit
8e510a0ea2
12 changed files with 211 additions and 36 deletions
|
@ -31,6 +31,84 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|||
|
||||
//#pragma code_seg("PAGE")
|
||||
|
||||
const GUID KSNODETYPE_DAC = {0x507AE360L, 0xC554, 0x11D0, {0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1}};
|
||||
const GUID KSNODETYPE_ADC = {0x4D837FE0L, 0xC555, 0x11D0, {0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1}};
|
||||
const GUID KSNODETYPE_AGC = {0xE88C9BA0L, 0xC557, 0x11D0, {0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1}};
|
||||
const GUID KSNODETYPE_LOUDNESS = {0x41887440L, 0xC558, 0x11D0, {0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1}};
|
||||
const GUID KSNODETYPE_MUTE = {0x02B223C0L, 0xC557, 0x11D0, {0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1}};
|
||||
const GUID KSNODETYPE_TONE = {0x7607E580L, 0xC557, 0x11D0, {0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1}};
|
||||
const GUID KSNODETYPE_VOLUME = {0x3A5ACC00L, 0xC557, 0x11D0, {0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1}};
|
||||
const GUID KSNODETYPE_PEAKMETER = {0xa085651e, 0x5f0d, 0x4b36, {0xa8, 0x69, 0xd1, 0x95, 0xd6, 0xab, 0x4b, 0x9e}};
|
||||
const GUID KSNODETYPE_MUX = {0x2CEAF780, 0xC556, 0x11D0, {0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1}};
|
||||
const GUID KSNODETYPE_STEREO_WIDE = {0xA9E69800L, 0xC558, 0x11D0, {0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1}};
|
||||
const GUID KSNODETYPE_CHORUS = {0x20173F20L, 0xC559, 0x11D0, {0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1}};
|
||||
const GUID KSNODETYPE_REVERB = {0xEF0328E0L, 0xC558, 0x11D0, {0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1}};
|
||||
const GUID KSNODETYPE_SUPERMIX = {0xE573ADC0L, 0xC555, 0x11D0, {0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1}};
|
||||
const GUID KSNODETYPE_SUM = {0xDA441A60L, 0xC556, 0x11D0, {0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1}};
|
||||
const GUID KSNODETYPE_SRC = {0x9DB7B9E0L, 0xC555, 0x11D0, {0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1}};
|
||||
const GUID KSNODETYPE_3D_EFFECTS = {0x55515860L, 0xC559, 0x11D0, {0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1}};
|
||||
const GUID KSNODETYPE_SPDIF_INTERFACE = {0x0605+0xDFF219E0, 0xF70F, 0x11D0, {0xB9, 0x17, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96}};
|
||||
const GUID KSNODETYPE_MICROPHONE = {0x0201+0xDFF219E0,0xF70F, 0x11D0, {0xB9, 0x17, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96}};
|
||||
const GUID KSNODETYPE_CD_PLAYER = {0x0703+0xDFF219E0,0xF70F, 0x11D0, {0xB9, 0x17, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96}};
|
||||
const GUID KSNODETYPE_LINE_CONNECTOR = {0x0603+0xDFF219E0,0xF70F, 0x11D0, {0xB9, 0x17, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96}};
|
||||
const GUID KSNODETYPE_ANALOG_CONNECTOR = {0x601+0xDFF219E0,0xF70F, 0x11D0, {0xB9, 0x17, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96}};
|
||||
const GUID KSNODETYPE_SPEAKER = {0x0301+0xDFF219E0,0xF70F, 0x11D0, {0xB9, 0x17, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96}};
|
||||
|
||||
const GUID KSPROPTYPESETID_General = {0x97E99BA0L, 0xBDEA, 0x11CF, {0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00}};
|
||||
const GUID KSPROPSETID_General = {0x1464EDA5L, 0x6A8F, 0x11D1, {0x9A, 0xA7, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96}};
|
||||
const GUID KSPROPSETID_Audio = {0x45FFAAA0L, 0x6E1B, 0x11D0, {0xBC, 0xF2, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00}};
|
||||
const GUID GUID_NULL ={0x00000000L, 0x0000, 0x0000, {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}};
|
||||
const GUID KSCATEGORY_AUDIO = {0x6994AD04, 0x93EF, 0x11D0, {0xA3, 0xCC, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96}};
|
||||
|
||||
|
||||
const GUID KSDATAFORMAT_TYPE_AUDIO = {0x73647561L, 0x0000, 0x0010, {0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}};
|
||||
const GUID KSDATAFORMAT_SUBTYPE_PCM = {0x00000001L, 0x0000, 0x0010, {0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}};
|
||||
const GUID KSDATAFORMAT_SPECIFIER_WAVEFORMATEX = {0x05589f81L, 0xc356, 0x11ce, {0xbf, 0x01, 0x00, 0xaa, 0x00, 0x55, 0x59, 0x5a}};
|
||||
const GUID KSDATAFORMAT_SPECIFIER_DSOUND = {0x518590a2L, 0xa184, 0x11d0, {0x85, 0x22, 0x00, 0xc0, 0x4f, 0xd9, 0xba, 0xf3}};
|
||||
const GUID KSDATAFORMAT_SUBTYPE_WAVEFORMATEX = {0x00000000L, 0x0000, 0x0010, {0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}};
|
||||
const GUID KSDATAFORMAT_SUBTYPE_DOLBY_AC3_SPDIF = {0x00000092L, 0x0000, 0x0010, {0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}};
|
||||
|
||||
|
||||
const GUID KSAUDFNAME_WAVE_VOLUME = {0x185FEDE5L, 0x9905, 0x11D1, {0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3}};
|
||||
const GUID KSAUDFNAME_WAVE_MUTE = {0x185FEDE6L, 0x9905, 0x11D1, {0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3}};
|
||||
const GUID KSAUDFNAME_MIC_VOLUME = {0x185FEDEDL, 0x9905, 0x11D1, {0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3}};
|
||||
const GUID KSAUDFNAME_MASTER_VOLUME = {0x185FEDE3L, 0x9905, 0x11D1, {0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3}};
|
||||
const GUID KSAUDFNAME_RECORDING_SOURCE = {0x185FEDEFL, 0x9905, 0x11D1, {0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3}};
|
||||
const GUID KSAUDFNAME_CD_VOLUME = {0x185FEDE9L, 0x9905, 0x11D1, {0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3}};
|
||||
const GUID KSAUDFNAME_CD_IN_VOLUME = {0x185FEDF3L, 0x9905, 0x11D1, {0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3}};
|
||||
const GUID KSAUDFNAME_MIC_IN_VOLUME = {0x185FEDF5L, 0x9905, 0x11D1, {0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3}};
|
||||
const GUID KSAUDFNAME_MICROPHONE_BOOST = {0x2bc31d6aL, 0x96e3, 0x11d2, {0xac, 0x4c, 0x0, 0xc0, 0x4f, 0x8e, 0xfb, 0x68}};
|
||||
const GUID KSAUDFNAME_CD_MUTE = {0x185FEDEAL, 0x9905, 0x11D1, {0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3}};
|
||||
const GUID KSAUDFNAME_LINE_MUTE = {0x185FEDECL, 0x9905, 0x11D1, {0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3}};
|
||||
const GUID KSAUDFNAME_MIC_MUTE = {0x185FEDEEL, 0x9905, 0x11D1, {0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3}};
|
||||
const GUID KSAUDFNAME_AUX_MUTE = {0x185FEDFDL, 0x9905, 0x11D1, {0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3}};
|
||||
const GUID KSAUDFNAME_MASTER_MUTE = {0x185FEDE4L, 0x9905, 0x11D1, {0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3}};
|
||||
const GUID KSAUDFNAME_RECORDING_CONTROL = {0x185FEDFAL, 0x9905, 0x11D1, {0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3}};
|
||||
const GUID KSAUDFNAME_VOLUME_CONTROL = {0x185FEDF7L, 0x9905, 0x11D1, {0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3}};
|
||||
const GUID KSAUDFNAME_LINE_IN_VOLUME = {0x185FEDF4L, 0x9905, 0x11D1, {0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3}};
|
||||
const GUID KSAUDFNAME_AUX_VOLUME = {0x185FEDFCL, 0x9905, 0x11D1, {0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3}};
|
||||
|
||||
const GUID KSPROPSETID_CMI = {0x2B81CDBB, 0xEE6C, 0x4ECC, {0x8A, 0xA5, 0x9A, 0x18, 0x8B, 0x02, 0x3D, 0xFF}};
|
||||
|
||||
|
||||
const GUID CMINAME_IEC_5V = {0x2B81CDBB, 0xEE6C, 0x4ECC, {0x8A, 0xA5, 0x9A, 0x18, 0x8B, 0x02, 0x3D, 0xF0}};
|
||||
const GUID CMINAME_IEC_OUT = {0x2B81CDBB, 0xEE6C, 0x4ECC, {0x8A, 0xA5, 0x9A, 0x18, 0x8B, 0x02, 0x3D, 0xF1}};
|
||||
const GUID CMINAME_IEC_INVERSE = {0x2B81CDBB, 0xEE6C, 0x4ECC, {0x8A, 0xA5, 0x9A, 0x18, 0x8B, 0x02, 0x3D, 0xF2}};
|
||||
const GUID CMINAME_IEC_MONITOR = {0x2B81CDBB, 0xEE6C, 0x4ECC, {0x8A, 0xA5, 0x9A, 0x18, 0x8B, 0x02, 0x3D, 0xF3}};
|
||||
const GUID CMINAME_IEC_SELECT = {0x2B81CDBB, 0xEE6C, 0x4ECC, {0x8A, 0xA5, 0x9A, 0x18, 0x8B, 0x02, 0x3D, 0xF5}};
|
||||
const GUID CMINAME_XCHG_FB = {0x2B81CDBB, 0xEE6C, 0x4ECC, {0x8A, 0xA5, 0x9A, 0x18, 0x8B, 0x02, 0x3D, 0xF6}};
|
||||
const GUID CMINAME_BASS2LINE = {0x2B81CDBB, 0xEE6C, 0x4ECC, {0x8A, 0xA5, 0x9A, 0x18, 0x8B, 0x02, 0x3D, 0xF7}};
|
||||
const GUID CMINAME_CENTER2LINE = {0x2B81CDBB, 0xEE6C, 0x4ECC, {0x8A, 0xA5, 0x9A, 0x18, 0x8B, 0x02, 0x3D, 0xF8}};
|
||||
const GUID CMINAME_IEC_COPYRIGHT = {0x2B81CDBB, 0xEE6C, 0x4ECC, {0x8A, 0xA5, 0x9A, 0x18, 0x8B, 0x02, 0x3D, 0xF9}};
|
||||
const GUID CMINAME_IEC_POLVALID = {0x2B81CDBB, 0xEE6C, 0x4ECC, {0x8A, 0xA5, 0x9A, 0x18, 0x8B, 0x02, 0x3D, 0xFA}};
|
||||
const GUID CMINAME_IEC_LOOP = {0x2B81CDBB, 0xEE6C, 0x4ECC, {0x8A, 0xA5, 0x9A, 0x18, 0x8B, 0x02, 0x3D, 0xFB}};
|
||||
const GUID CMINAME_REAR2LINE = {0x2B81CDBB, 0xEE6C, 0x4ECC, {0x8A, 0xA5, 0x9A, 0x18, 0x8B, 0x02, 0x3D, 0xFC}};
|
||||
const GUID CMINAME_CENTER2MIC = {0x2B81CDBB, 0xEE6C, 0x4ECC, {0x8A, 0xA5, 0x9A, 0x18, 0x8B, 0x02, 0x3D, 0xFD}};
|
||||
const GUID CMINAME_DAC = {0x2B81CDBB, 0xEE6C, 0x4ECC, {0x8A, 0xA5, 0x9A, 0x18, 0x8B, 0x02, 0x3D, 0xF4}};
|
||||
const GUID PRODUCT_CM8738 = {0x9db14e9a, 0x7be7, 0x480d, {0xa2, 0xfa, 0x32, 0x93, 0x24, 0x89, 0xde, 0x9c}};
|
||||
const GUID COMPONENT_CM8738 = {0x9db14e9a, 0x7be7, 0x480d, {0xa2, 0xfa, 0x32, 0x93, 0x24, 0x89, 0xde, 0x9d}};
|
||||
const GUID MANUFACTURER_CM8738 = {0x9db14e9a, 0x7be7, 0x480d, {0xa2, 0xfa, 0x32, 0x93, 0x24, 0x89, 0xde, 0x9e}};
|
||||
|
||||
|
||||
NTSTATUS InstallSubdevice(
|
||||
PDEVICE_OBJECT DeviceObject,
|
||||
|
@ -451,8 +529,24 @@ DriverEntry(
|
|||
return ntStatus;
|
||||
}
|
||||
|
||||
|
||||
#ifdef _MSC_VER
|
||||
|
||||
#pragma code_seg()
|
||||
int __cdecl _purecall (void)
|
||||
{
|
||||
return 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
extern "C" {
|
||||
void __cxa_pure_virtual()
|
||||
{
|
||||
// put error handling here
|
||||
|
||||
DbgBreakPoint();
|
||||
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -38,7 +38,7 @@ const ULONG MAX_MINIPORTS = 3;
|
|||
const ULONG MAX_MINIPORTS = 2;
|
||||
#endif
|
||||
|
||||
extern NTSTATUS CreateMiniportWaveCMI
|
||||
extern HRESULT NTAPI CreateMiniportWaveCMI
|
||||
(
|
||||
OUT PUNKNOWN * Unknown,
|
||||
IN REFCLSID,
|
||||
|
@ -46,7 +46,7 @@ extern NTSTATUS CreateMiniportWaveCMI
|
|||
IN POOL_TYPE PoolType
|
||||
);
|
||||
|
||||
extern NTSTATUS CreateMiniportTopologyCMI
|
||||
extern HRESULT NTAPI CreateMiniportTopologyCMI
|
||||
(
|
||||
OUT PUNKNOWN * Unknown,
|
||||
IN REFCLSID,
|
||||
|
|
|
@ -1,6 +1,16 @@
|
|||
<?xml version="1.0"?>
|
||||
<!DOCTYPE module SYSTEM "../../../../../tools/rbuild/project.dtd">
|
||||
<module name="cmidriver" type="kernelmodedriver" installbase="system32/drivers" installname="cmipci.sys" allowwarnings="true">
|
||||
|
||||
<group compilerset="gcc">
|
||||
<compilerflag compiler="cxx">-fno-exceptions</compilerflag>
|
||||
<compilerflag compiler="cxx">-fno-rtti</compilerflag>
|
||||
</group>
|
||||
|
||||
<group compilerset="msc">
|
||||
<compilerflag compiler="cxx">/GR-</compilerflag>
|
||||
</group>
|
||||
|
||||
<include base="mpu401">.</include>
|
||||
<library>ntoskrnl</library>
|
||||
<library>portcls</library>
|
||||
|
|
|
@ -36,10 +36,10 @@ NewCMIAdapter(
|
|||
PUNKNOWN UnknownOuter,
|
||||
POOL_TYPE PoolType)
|
||||
{
|
||||
#if 0
|
||||
#if 1
|
||||
//PAGED_CODE();
|
||||
DBGPRINT(("NewCMIAdapter()"));
|
||||
//ASSERT (Unknown);
|
||||
ASSERT (Unknown);
|
||||
#endif
|
||||
STD_CREATE_BODY_(CCMIAdapter, Unknown, UnknownOuter, PoolType, PCMIADAPTER);
|
||||
}
|
||||
|
@ -129,7 +129,7 @@ CCMIAdapter::~CCMIAdapter()
|
|||
}
|
||||
}
|
||||
|
||||
STDMETHODIMP_(NTSTATUS) CCMIAdapter::NonDelegatingQueryInterface(REFIID Interface, PVOID* Object)
|
||||
STDMETHODIMP_(NTSTATUS) CCMIAdapter::QueryInterface(REFIID Interface, PVOID* Object)
|
||||
{
|
||||
//PAGED_CODE();
|
||||
|
||||
|
@ -449,7 +449,7 @@ STDMETHODIMP_(void) CCMIAdapter::clearMixerBit(UInt8 index, UInt8 flag)
|
|||
writeMixer(index, readMixer(index) & ~flag);
|
||||
}
|
||||
|
||||
NTSTATUS CCMIAdapter::InterruptServiceRoutine(PINTERRUPTSYNC InterruptSync, PVOID DynamicContext)
|
||||
NTSTATUS NTAPI CCMIAdapter::InterruptServiceRoutine(PINTERRUPTSYNC InterruptSync, PVOID DynamicContext)
|
||||
{
|
||||
UInt32 status, mask = 0;
|
||||
|
||||
|
|
|
@ -41,8 +41,7 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|||
#include "cmireg.hpp"
|
||||
|
||||
class CCMIAdapter : public ICMIAdapter,
|
||||
public IAdapterPowerManagement,
|
||||
public CUnknown
|
||||
public IAdapterPowerManagement
|
||||
{
|
||||
private:
|
||||
PDEVICE_OBJECT DeviceObject;
|
||||
|
@ -56,8 +55,25 @@ private:
|
|||
void resetController();
|
||||
|
||||
public:
|
||||
DECLARE_STD_UNKNOWN();
|
||||
DEFINE_STD_CONSTRUCTOR(CCMIAdapter);
|
||||
STDMETHODIMP QueryInterface( REFIID InterfaceId, PVOID* Interface);
|
||||
STDMETHODIMP_(ULONG) AddRef()
|
||||
{
|
||||
InterlockedIncrement(&m_Ref);
|
||||
return m_Ref;
|
||||
}
|
||||
STDMETHODIMP_(ULONG) Release()
|
||||
{
|
||||
InterlockedDecrement(&m_Ref);
|
||||
|
||||
if (!m_Ref)
|
||||
{
|
||||
delete this;
|
||||
return 0;
|
||||
}
|
||||
return m_Ref;
|
||||
}
|
||||
|
||||
CCMIAdapter(IUnknown *OuterUnknown){}
|
||||
~CCMIAdapter();
|
||||
|
||||
IMP_IAdapterPowerManagement;
|
||||
|
@ -88,7 +104,7 @@ public:
|
|||
|
||||
STDMETHODIMP_(void) resetMixer();
|
||||
|
||||
static NTSTATUS InterruptServiceRoutine(PINTERRUPTSYNC InterruptSync, PVOID StaticContext);
|
||||
static NTSTATUS NTAPI InterruptServiceRoutine(PINTERRUPTSYNC InterruptSync, PVOID StaticContext);
|
||||
|
||||
STDMETHODIMP_(PCMI8738Info) getCMI8738Info(void)
|
||||
{
|
||||
|
@ -105,6 +121,9 @@ public:
|
|||
};
|
||||
|
||||
friend NTSTATUS NewCCMIAdapter(PCMIADAPTER* OutCMIAdapter, PRESOURCELIST ResourceList);
|
||||
|
||||
LONG m_Ref;
|
||||
|
||||
};
|
||||
|
||||
NTSTATUS NewCMIAdapter(PUNKNOWN* Unknown, REFCLSID, PUNKNOWN UnknownOuter, POOL_TYPE PoolType);
|
||||
|
|
|
@ -33,14 +33,14 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|||
|
||||
#pragma code_seg("PAGE")
|
||||
|
||||
NTSTATUS CreateMiniportTopologyCMI(PUNKNOWN* Unknown, REFCLSID, PUNKNOWN UnknownOuter, POOL_TYPE PoolType)
|
||||
HRESULT NTAPI CreateMiniportTopologyCMI(PUNKNOWN* Unknown, REFCLSID, PUNKNOWN UnknownOuter, POOL_TYPE PoolType)
|
||||
{
|
||||
//PAGED_CODE();
|
||||
//ASSERT(Unknown);
|
||||
STD_CREATE_BODY_(CCMITopology,Unknown,UnknownOuter,PoolType,PMINIPORTTOPOLOGY);
|
||||
}
|
||||
|
||||
STDMETHODIMP CCMITopology::NonDelegatingQueryInterface(REFIID Interface, PVOID* Object)
|
||||
STDMETHODIMP CCMITopology::QueryInterface(REFIID Interface, PVOID* Object)
|
||||
{
|
||||
//PAGED_CODE();
|
||||
//ASSERT(Object);
|
||||
|
|
|
@ -31,8 +31,7 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|||
#include "common.hpp"
|
||||
#include "property.h"
|
||||
|
||||
class CCMITopology : public ICMITopology,
|
||||
public CUnknown
|
||||
class CCMITopology : public ICMITopology
|
||||
{
|
||||
private:
|
||||
PCMIADAPTER CMIAdapter; // Adapter common object.
|
||||
|
@ -45,8 +44,24 @@ private:
|
|||
|
||||
NTSTATUS ProcessResources(PRESOURCELIST ResourceList);
|
||||
public:
|
||||
DECLARE_STD_UNKNOWN();
|
||||
DEFINE_STD_CONSTRUCTOR(CCMITopology);
|
||||
STDMETHODIMP QueryInterface( REFIID InterfaceId, PVOID* Interface);
|
||||
STDMETHODIMP_(ULONG) AddRef()
|
||||
{
|
||||
InterlockedIncrement(&m_Ref);
|
||||
return m_Ref;
|
||||
}
|
||||
STDMETHODIMP_(ULONG) Release()
|
||||
{
|
||||
InterlockedDecrement(&m_Ref);
|
||||
|
||||
if (!m_Ref)
|
||||
{
|
||||
delete this;
|
||||
return 0;
|
||||
}
|
||||
return m_Ref;
|
||||
}
|
||||
CCMITopology(IUnknown * OuterUnknown){}
|
||||
~CCMITopology();
|
||||
STDMETHODIMP_(NTSTATUS) loadMixerSettingsFromRegistry();
|
||||
STDMETHODIMP_(NTSTATUS) storeMixerSettingsToRegistry();
|
||||
|
@ -88,6 +103,8 @@ public:
|
|||
friend NTSTATUS NTAPI PropertyHandler_Mux(PPCPROPERTY_REQUEST PropertyRequest);
|
||||
|
||||
static NTSTATUS NTAPI EventHandler(PPCEVENT_REQUEST EventRequest);
|
||||
|
||||
LONG m_Ref;
|
||||
};
|
||||
|
||||
#endif //_MINTOPO_HPP_
|
||||
|
|
|
@ -30,12 +30,14 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|||
|
||||
#include "mintopo.hpp"
|
||||
|
||||
#if 0
|
||||
#ifndef STATIC_KSDATAFORMAT_SUBTYPE_DOLBY_AC3_SPDIF
|
||||
#define STATIC_KSDATAFORMAT_SUBTYPE_DOLBY_AC3_SPDIF\
|
||||
DEFINE_WAVEFORMATEX_GUID(WAVE_FORMAT_DOLBY_AC3_SPDIF)
|
||||
DEFINE_GUIDSTRUCT("00000092-0000-0010-8000-00aa00389b71", KSDATAFORMAT_SUBTYPE_DOLBY_AC3_SPDIF);
|
||||
#define KSDATAFORMAT_SUBTYPE_DOLBY_AC3_SPDIF DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_DOLBY_AC3_SPDIF)
|
||||
#endif
|
||||
#endif
|
||||
|
||||
NTSTATUS NTAPI PropertyHandler_Level(PPCPROPERTY_REQUEST PropertyRequest);
|
||||
NTSTATUS NTAPI PropertyHandler_CpuResources(PPCPROPERTY_REQUEST PropertyRequest);
|
||||
|
@ -352,13 +354,13 @@ static PCPROPERTY_ITEM PropertiesFilter[] =
|
|||
(PCPFNPROPERTY_HANDLER)PropertyHandler_ComponentId
|
||||
},
|
||||
{
|
||||
&KSPROPSETID_CMI,
|
||||
&GUID_NULL,//&KSPROPSETID_CMI, //HACK
|
||||
KSPROPERTY_CMI_GET,
|
||||
KSPROPERTY_TYPE_GET,
|
||||
(PCPFNPROPERTY_HANDLER)PropertyHandler_Private
|
||||
},
|
||||
{
|
||||
&KSPROPSETID_CMI,
|
||||
&GUID_NULL,//&KSPROPSETID_CMI, //HACK
|
||||
KSPROPERTY_CMI_SET,
|
||||
KSPROPERTY_TYPE_SET,
|
||||
(PCPFNPROPERTY_HANDLER)PropertyHandler_Private
|
||||
|
|
|
@ -31,7 +31,7 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|||
|
||||
#pragma code_seg("PAGE")
|
||||
|
||||
NTSTATUS CreateMiniportWaveCMI(PUNKNOWN *Unknown, REFCLSID, PUNKNOWN UnknownOuter, POOL_TYPE PoolType)
|
||||
HRESULT NTAPI CreateMiniportWaveCMI(PUNKNOWN *Unknown, REFCLSID, PUNKNOWN UnknownOuter, POOL_TYPE PoolType)
|
||||
{
|
||||
//PAGED_CODE();
|
||||
//ASSERT(Unknown);
|
||||
|
@ -77,7 +77,7 @@ NTSTATUS CMiniportWaveCMI::newDMAChannel(PDMACHANNEL *dmaChannel, UInt32 bufferL
|
|||
#endif
|
||||
|
||||
//generic crap
|
||||
STDMETHODIMP CMiniportWaveCMI::NonDelegatingQueryInterface(REFIID Interface, PVOID *Object)
|
||||
STDMETHODIMP CMiniportWaveCMI::QueryInterface(REFIID Interface, PVOID *Object)
|
||||
{
|
||||
//PAGED_CODE();
|
||||
//ASSERT(Object);
|
||||
|
@ -482,7 +482,7 @@ STDMETHODIMP CMiniportWaveCMI::DataRangeIntersection(ULONG PinId, PKSDATARANGE C
|
|||
}
|
||||
|
||||
|
||||
if (!IsEqualGUIDAligned(ClientDataRange->SubFormat, KSDATAFORMAT_SUBTYPE_DOLBY_AC3_SPDIF)
|
||||
if (!IsEqualGUIDAligned(ClientDataRange->SubFormat, GUID_NULL)//KSDATAFORMAT_SUBTYPE_DOLBY_AC3_SPDIF) //HACK
|
||||
&& !IsEqualGUIDAligned(ClientDataRange->SubFormat, KSDATAFORMAT_SUBTYPE_WILDCARD)) {
|
||||
// check for Vista
|
||||
isAC3Pin = false;
|
||||
|
@ -1215,7 +1215,7 @@ CMiniportWaveStreamCMI::~CMiniportWaveStreamCMI(void)
|
|||
}
|
||||
}
|
||||
|
||||
STDMETHODIMP CMiniportWaveStreamCMI::NonDelegatingQueryInterface(REFIID Interface, PVOID *Object)
|
||||
STDMETHODIMP CMiniportWaveStreamCMI::QueryInterface(REFIID Interface, PVOID *Object)
|
||||
{
|
||||
//PAGED_CODE();
|
||||
//ASSERT(Object);
|
||||
|
|
|
@ -41,8 +41,7 @@ class CMiniportWaveCMI:
|
|||
#else
|
||||
public IMiniportWaveCyclic,
|
||||
#endif
|
||||
public IMiniportWaveCMI,
|
||||
public CUnknown
|
||||
public IMiniportWaveCMI
|
||||
{
|
||||
private:
|
||||
PCMIADAPTER CMIAdapter; // Adapter common object.
|
||||
|
@ -56,7 +55,7 @@ private:
|
|||
CMI8738Info *cm;
|
||||
UInt32 requestedChannelCount;
|
||||
UInt32 requestedChannelMask;
|
||||
|
||||
LONG m_Ref;
|
||||
|
||||
CMiniportWaveStreamCMI *stream[3];
|
||||
bool isStreamRunning[3];
|
||||
|
@ -72,8 +71,24 @@ private:
|
|||
NTSTATUS loadChannelConfigFromRegistry();
|
||||
NTSTATUS storeChannelConfigToRegistry();
|
||||
public:
|
||||
DECLARE_STD_UNKNOWN();
|
||||
DEFINE_STD_CONSTRUCTOR(CMiniportWaveCMI);
|
||||
STDMETHODIMP QueryInterface( REFIID InterfaceId, PVOID* Interface);
|
||||
STDMETHODIMP_(ULONG) AddRef()
|
||||
{
|
||||
InterlockedIncrement(&m_Ref);
|
||||
return m_Ref;
|
||||
}
|
||||
STDMETHODIMP_(ULONG) Release()
|
||||
{
|
||||
InterlockedDecrement(&m_Ref);
|
||||
|
||||
if (!m_Ref)
|
||||
{
|
||||
delete this;
|
||||
return 0;
|
||||
}
|
||||
return m_Ref;
|
||||
}
|
||||
CMiniportWaveCMI(IUnknown * OuterUnknown){}
|
||||
~CMiniportWaveCMI();
|
||||
#ifdef WAVERT
|
||||
IMP_IMiniportWaveRT;
|
||||
|
@ -96,8 +111,7 @@ class CMiniportWaveStreamCMI:
|
|||
#else
|
||||
public IMiniportWaveCyclicStream,
|
||||
#endif
|
||||
public IDrmAudioStream,
|
||||
public CUnknown
|
||||
public IDrmAudioStream
|
||||
{
|
||||
private:
|
||||
CMiniportWaveCMI *Miniport;
|
||||
|
@ -119,6 +133,7 @@ private:
|
|||
UInt32 dmaSize; // size of the DMA buffer in frames, NOT in bytes
|
||||
UInt32 currentChannelCount, currentSampleRate, currentResolution;
|
||||
bool enableAC3Passthru, enableSPDIF;
|
||||
LONG m_Ref;
|
||||
|
||||
NTSTATUS prepareStream();
|
||||
NTSTATUS setDACChannels();
|
||||
|
@ -126,8 +141,24 @@ private:
|
|||
NTSTATUS setupAC3Passthru();
|
||||
|
||||
public:
|
||||
DECLARE_STD_UNKNOWN();
|
||||
DEFINE_STD_CONSTRUCTOR(CMiniportWaveStreamCMI);
|
||||
STDMETHODIMP QueryInterface( REFIID InterfaceId, PVOID* Interface);
|
||||
STDMETHODIMP_(ULONG) AddRef()
|
||||
{
|
||||
InterlockedIncrement(&m_Ref);
|
||||
return m_Ref;
|
||||
}
|
||||
STDMETHODIMP_(ULONG) Release()
|
||||
{
|
||||
InterlockedDecrement(&m_Ref);
|
||||
|
||||
if (!m_Ref)
|
||||
{
|
||||
delete this;
|
||||
return 0;
|
||||
}
|
||||
return m_Ref;
|
||||
}
|
||||
CMiniportWaveStreamCMI(IUnknown * OuterUnknown){}
|
||||
~CMiniportWaveStreamCMI();
|
||||
#ifdef WAVERT
|
||||
IMP_IMiniportWaveRTStream;
|
||||
|
|
|
@ -65,7 +65,7 @@ static KSDATARANGE_AUDIO WavePinDataRangesAC3Stream[] =
|
|||
0,
|
||||
0,
|
||||
STATICGUIDOF(KSDATAFORMAT_TYPE_AUDIO),
|
||||
STATICGUIDOF(KSDATAFORMAT_SUBTYPE_DOLBY_AC3_SPDIF),
|
||||
STATICGUIDOF(KSDATAFORMAT_TYPE_AUDIO),//STATICGUIDOF(KSDATAFORMAT_SUBTYPE_DOLBY_AC3_SPDIF), //HACK
|
||||
STATICGUIDOF(KSDATAFORMAT_SPECIFIER_WAVEFORMATEX)
|
||||
},
|
||||
MAX_CHANNELS_AC3,
|
||||
|
|
|
@ -30,10 +30,12 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|||
|
||||
//GUID for the private property
|
||||
// {2B81CDBB-EE6C-4ECC-8AA5-9A188B023DFF}
|
||||
|
||||
#define STATIC_KSPROPSETID_CMI \
|
||||
0x2B81CDBB, 0xEE6C, 0x4ECC, 0x8A, 0xA5, 0x9A, 0x18, 0x8B, 0x02, 0x3D, 0xFF
|
||||
DEFINE_GUIDSTRUCT("2B81CDBB-EE6C-4ECC-8AA5-9A188B023DFF", _STATIC_KSPROPSETID_CMI);
|
||||
#define KSPROPSETID_CMI DEFINE_GUIDNAMED(_STATIC_KSPROPSETID_CMI)
|
||||
DEFINE_GUIDSTRUCT("2B81CDBB-EE6C-4ECC-8AA5-9A188B023DFF", KSPROPSETID_CMI);
|
||||
#define KSPROPSETID_CMI DEFINE_GUIDNAMED(KSPROPSETID_CMI)
|
||||
|
||||
|
||||
//methods
|
||||
#define KSPROPERTY_CMI_GET 1
|
||||
|
|
Loading…
Reference in a new issue