#include "cmireg.hpp"
class CCMIAdapter : public ICMIAdapter,
- public IAdapterPowerManagement,
- public CUnknown
+ public IAdapterPowerManagement
{
private:
PDEVICE_OBJECT DeviceObject;
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;
STDMETHODIMP_(void) resetMixer();
- static NTSTATUS InterruptServiceRoutine(PINTERRUPTSYNC InterruptSync, PVOID StaticContext);
+ static NTSTATUS NTAPI InterruptServiceRoutine(PINTERRUPTSYNC InterruptSync, PVOID StaticContext);
STDMETHODIMP_(PCMI8738Info) getCMI8738Info(void)
{
};
friend NTSTATUS NewCCMIAdapter(PCMIADAPTER* OutCMIAdapter, PRESOURCELIST ResourceList);
+
+ LONG m_Ref;
+
};
NTSTATUS NewCMIAdapter(PUNKNOWN* Unknown, REFCLSID, PUNKNOWN UnknownOuter, POOL_TYPE PoolType);