[ros-diffs] [janderwald] 44113: - Fix building of cmidriver - Required a few hacks, which were documented as //HACK

janderwald at svn.reactos.org janderwald at svn.reactos.org
Wed Nov 11 21:43:58 CET 2009


Author: janderwald
Date: Wed Nov 11 21:43:58 2009
New Revision: 44113

URL: http://svn.reactos.org/svn/reactos?rev=44113&view=rev
Log:
- Fix building of cmidriver 
- Required a few hacks, which were documented as //HACK

Modified:
    trunk/reactos/drivers/wdm/audio/drivers/CMIDriver/adapter.cpp
    trunk/reactos/drivers/wdm/audio/drivers/CMIDriver/adapter.hpp
    trunk/reactos/drivers/wdm/audio/drivers/CMIDriver/cmidriver.rbuild
    trunk/reactos/drivers/wdm/audio/drivers/CMIDriver/common.cpp
    trunk/reactos/drivers/wdm/audio/drivers/CMIDriver/common.hpp
    trunk/reactos/drivers/wdm/audio/drivers/CMIDriver/mintopo.cpp
    trunk/reactos/drivers/wdm/audio/drivers/CMIDriver/mintopo.hpp
    trunk/reactos/drivers/wdm/audio/drivers/CMIDriver/mintopotables.hpp
    trunk/reactos/drivers/wdm/audio/drivers/CMIDriver/minwave.cpp
    trunk/reactos/drivers/wdm/audio/drivers/CMIDriver/minwave.hpp
    trunk/reactos/drivers/wdm/audio/drivers/CMIDriver/minwavetables.hpp
    trunk/reactos/drivers/wdm/audio/drivers/CMIDriver/property.h

Modified: trunk/reactos/drivers/wdm/audio/drivers/CMIDriver/adapter.cpp
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/wdm/audio/drivers/CMIDriver/adapter.cpp?rev=44113&r1=44112&r2=44113&view=diff
==============================================================================
--- trunk/reactos/drivers/wdm/audio/drivers/CMIDriver/adapter.cpp [iso-8859-1] (original)
+++ trunk/reactos/drivers/wdm/audio/drivers/CMIDriver/adapter.cpp [iso-8859-1] Wed Nov 11 21:43:58 2009
@@ -30,6 +30,84 @@
 #include "adapter.hpp"
 
 //#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(
@@ -451,8 +529,24 @@
     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

Modified: trunk/reactos/drivers/wdm/audio/drivers/CMIDriver/adapter.hpp
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/wdm/audio/drivers/CMIDriver/adapter.hpp?rev=44113&r1=44112&r2=44113&view=diff
==============================================================================
--- trunk/reactos/drivers/wdm/audio/drivers/CMIDriver/adapter.hpp [iso-8859-1] (original)
+++ trunk/reactos/drivers/wdm/audio/drivers/CMIDriver/adapter.hpp [iso-8859-1] Wed Nov 11 21:43:58 2009
@@ -38,7 +38,7 @@
 const ULONG MAX_MINIPORTS = 2;
 #endif
 
-extern NTSTATUS CreateMiniportWaveCMI
+extern HRESULT NTAPI CreateMiniportWaveCMI
 (
     OUT     PUNKNOWN *  Unknown,
     IN      REFCLSID,
@@ -46,7 +46,7 @@
     IN      POOL_TYPE   PoolType
 );
 
-extern NTSTATUS CreateMiniportTopologyCMI
+extern HRESULT NTAPI CreateMiniportTopologyCMI
 (
     OUT     PUNKNOWN *  Unknown,
     IN      REFCLSID,

Modified: trunk/reactos/drivers/wdm/audio/drivers/CMIDriver/cmidriver.rbuild
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/wdm/audio/drivers/CMIDriver/cmidriver.rbuild?rev=44113&r1=44112&r2=44113&view=diff
==============================================================================
--- trunk/reactos/drivers/wdm/audio/drivers/CMIDriver/cmidriver.rbuild [iso-8859-1] (original)
+++ trunk/reactos/drivers/wdm/audio/drivers/CMIDriver/cmidriver.rbuild [iso-8859-1] Wed Nov 11 21:43:58 2009
@@ -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>

Modified: trunk/reactos/drivers/wdm/audio/drivers/CMIDriver/common.cpp
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/wdm/audio/drivers/CMIDriver/common.cpp?rev=44113&r1=44112&r2=44113&view=diff
==============================================================================
--- trunk/reactos/drivers/wdm/audio/drivers/CMIDriver/common.cpp [iso-8859-1] (original)
+++ trunk/reactos/drivers/wdm/audio/drivers/CMIDriver/common.cpp [iso-8859-1] Wed Nov 11 21:43:58 2009
@@ -36,10 +36,10 @@
     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 @@
 	}
 }
 
-STDMETHODIMP_(NTSTATUS) CCMIAdapter::NonDelegatingQueryInterface(REFIID Interface, PVOID* Object)
+STDMETHODIMP_(NTSTATUS) CCMIAdapter::QueryInterface(REFIID Interface, PVOID* Object)
 {
     //PAGED_CODE();
 
@@ -449,7 +449,7 @@
 	writeMixer(index, readMixer(index) & ~flag);
 }
 
-NTSTATUS CCMIAdapter::InterruptServiceRoutine(PINTERRUPTSYNC InterruptSync, PVOID DynamicContext)
+NTSTATUS NTAPI CCMIAdapter::InterruptServiceRoutine(PINTERRUPTSYNC InterruptSync, PVOID DynamicContext)
 {
 	UInt32 status, mask = 0;
 

Modified: trunk/reactos/drivers/wdm/audio/drivers/CMIDriver/common.hpp
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/wdm/audio/drivers/CMIDriver/common.hpp?rev=44113&r1=44112&r2=44113&view=diff
==============================================================================
--- trunk/reactos/drivers/wdm/audio/drivers/CMIDriver/common.hpp [iso-8859-1] (original)
+++ trunk/reactos/drivers/wdm/audio/drivers/CMIDriver/common.hpp [iso-8859-1] Wed Nov 11 21:43:58 2009
@@ -41,8 +41,7 @@
 #include "cmireg.hpp"
 
 class CCMIAdapter : public ICMIAdapter,
-                    public IAdapterPowerManagement,
-                    public CUnknown
+                    public IAdapterPowerManagement
 {
 private:
     PDEVICE_OBJECT		DeviceObject;
@@ -56,8 +55,25 @@
     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 @@
 
     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 @@
     };
 
     friend NTSTATUS NewCCMIAdapter(PCMIADAPTER* OutCMIAdapter, PRESOURCELIST ResourceList);
+
+    LONG m_Ref;
+
 };
 
 NTSTATUS NewCMIAdapter(PUNKNOWN* Unknown, REFCLSID, PUNKNOWN UnknownOuter, POOL_TYPE PoolType);

Modified: trunk/reactos/drivers/wdm/audio/drivers/CMIDriver/mintopo.cpp
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/wdm/audio/drivers/CMIDriver/mintopo.cpp?rev=44113&r1=44112&r2=44113&view=diff
==============================================================================
--- trunk/reactos/drivers/wdm/audio/drivers/CMIDriver/mintopo.cpp [iso-8859-1] (original)
+++ trunk/reactos/drivers/wdm/audio/drivers/CMIDriver/mintopo.cpp [iso-8859-1] Wed Nov 11 21:43:58 2009
@@ -33,14 +33,14 @@
 
 #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);

Modified: trunk/reactos/drivers/wdm/audio/drivers/CMIDriver/mintopo.hpp
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/wdm/audio/drivers/CMIDriver/mintopo.hpp?rev=44113&r1=44112&r2=44113&view=diff
==============================================================================
--- trunk/reactos/drivers/wdm/audio/drivers/CMIDriver/mintopo.hpp [iso-8859-1] (original)
+++ trunk/reactos/drivers/wdm/audio/drivers/CMIDriver/mintopo.hpp [iso-8859-1] Wed Nov 11 21:43:58 2009
@@ -31,8 +31,7 @@
 #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 @@
 
     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 @@
     friend NTSTATUS NTAPI PropertyHandler_Mux(PPCPROPERTY_REQUEST PropertyRequest);
 
     static NTSTATUS NTAPI EventHandler(PPCEVENT_REQUEST EventRequest);
+
+    LONG m_Ref;
 };
 
 #endif //_MINTOPO_HPP_

Modified: trunk/reactos/drivers/wdm/audio/drivers/CMIDriver/mintopotables.hpp
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/wdm/audio/drivers/CMIDriver/mintopotables.hpp?rev=44113&r1=44112&r2=44113&view=diff
==============================================================================
--- trunk/reactos/drivers/wdm/audio/drivers/CMIDriver/mintopotables.hpp [iso-8859-1] (original)
+++ trunk/reactos/drivers/wdm/audio/drivers/CMIDriver/mintopotables.hpp [iso-8859-1] Wed Nov 11 21:43:58 2009
@@ -30,11 +30,13 @@
 
 #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);
@@ -352,13 +354,13 @@
     (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

Modified: trunk/reactos/drivers/wdm/audio/drivers/CMIDriver/minwave.cpp
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/wdm/audio/drivers/CMIDriver/minwave.cpp?rev=44113&r1=44112&r2=44113&view=diff
==============================================================================
--- trunk/reactos/drivers/wdm/audio/drivers/CMIDriver/minwave.cpp [iso-8859-1] (original)
+++ trunk/reactos/drivers/wdm/audio/drivers/CMIDriver/minwave.cpp [iso-8859-1] Wed Nov 11 21:43:58 2009
@@ -31,7 +31,7 @@
 
 #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 @@
 #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 @@
 		}
 
 
-		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 @@
     }
 }
 
-STDMETHODIMP CMiniportWaveStreamCMI::NonDelegatingQueryInterface(REFIID Interface, PVOID *Object)
+STDMETHODIMP CMiniportWaveStreamCMI::QueryInterface(REFIID Interface, PVOID *Object)
 {
 	//PAGED_CODE();
 	//ASSERT(Object);

Modified: trunk/reactos/drivers/wdm/audio/drivers/CMIDriver/minwave.hpp
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/wdm/audio/drivers/CMIDriver/minwave.hpp?rev=44113&r1=44112&r2=44113&view=diff
==============================================================================
--- trunk/reactos/drivers/wdm/audio/drivers/CMIDriver/minwave.hpp [iso-8859-1] (original)
+++ trunk/reactos/drivers/wdm/audio/drivers/CMIDriver/minwave.hpp [iso-8859-1] Wed Nov 11 21:43:58 2009
@@ -41,8 +41,7 @@
 #else
                                 public IMiniportWaveCyclic,
 #endif
-                                public IMiniportWaveCMI,
-                                public CUnknown
+                                public IMiniportWaveCMI
 {
 private:
     PCMIADAPTER             CMIAdapter;                 // Adapter common object.
@@ -56,7 +55,7 @@
     CMI8738Info             *cm;
 	UInt32                  requestedChannelCount;
 	UInt32                  requestedChannelMask;
-
+    LONG m_Ref;
 
     CMiniportWaveStreamCMI  *stream[3];
     bool                    isStreamRunning[3];
@@ -72,8 +71,24 @@
     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 @@
 #else
                                       public IMiniportWaveCyclicStream,
 #endif
-                                      public IDrmAudioStream,
-                                      public CUnknown
+                                      public IDrmAudioStream
 {
 private:
     CMiniportWaveCMI  *Miniport;
@@ -119,6 +133,7 @@
     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 @@
     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;

Modified: trunk/reactos/drivers/wdm/audio/drivers/CMIDriver/minwavetables.hpp
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/wdm/audio/drivers/CMIDriver/minwavetables.hpp?rev=44113&r1=44112&r2=44113&view=diff
==============================================================================
--- trunk/reactos/drivers/wdm/audio/drivers/CMIDriver/minwavetables.hpp [iso-8859-1] (original)
+++ trunk/reactos/drivers/wdm/audio/drivers/CMIDriver/minwavetables.hpp [iso-8859-1] Wed Nov 11 21:43:58 2009
@@ -65,7 +65,7 @@
             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,

Modified: trunk/reactos/drivers/wdm/audio/drivers/CMIDriver/property.h
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/wdm/audio/drivers/CMIDriver/property.h?rev=44113&r1=44112&r2=44113&view=diff
==============================================================================
--- trunk/reactos/drivers/wdm/audio/drivers/CMIDriver/property.h [iso-8859-1] (original)
+++ trunk/reactos/drivers/wdm/audio/drivers/CMIDriver/property.h [iso-8859-1] Wed Nov 11 21:43:58 2009
@@ -30,10 +30,12 @@
 
 //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




More information about the Ros-diffs mailing list