⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 factory.h

📁 语音开发中的重要算法
💻 H
字号:
#if !defined(AFX_DEMO_H__9DEBDCD4_4592_4D30_9E32_CE26148DB12C__INCLUDED_)
#define AFX_DEMO_H__9DEBDCD4_4592_4D30_9E32_CE26148DB12C__INCLUDED_

#include <winsock2.h>
#include <windows.h>


#ifdef __SELF_REGISTER_H__
#define CLSID_MYCLSID CLSID_VAEC
extern const CLSID CLSID_VAEC;
const char g_szFriendlyName[] = "VAEC component";
const char g_szVerIndProgID[] = "VAEC";
const char g_szProgID[] = "VAEC.1";
#endif

#ifndef USE_LIB
class CFactory : public IClassFactory

{
public:
	virtual HRESULT __stdcall QueryInterface(const IID& iid, void** ppv)
	{    
		if ((iid == IID_IUnknown) || (iid == IID_IClassFactory))
		{
			*ppv = static_cast<IClassFactory*>(this) ; 
		}
		else
		{
			*ppv = NULL ;
			return E_NOINTERFACE ;
		}
		reinterpret_cast<IUnknown*>(*ppv)->AddRef() ;
		return S_OK ;
	}

	virtual ULONG   __stdcall AddRef()
	{	
		return InterlockedIncrement(&m_cRef) ;
	}
	virtual ULONG   __stdcall Release()
	{
		if (InterlockedDecrement(&m_cRef) == 0)
			delete this ;
		return m_cRef ;
	}

	virtual HRESULT __stdcall CreateInstance(IUnknown* pUnknownOuter,
	                                         const IID& iid,
	                                         void** ppv);
	virtual HRESULT __stdcall LockServer(BOOL bLock)
	{	
		return E_NOTIMPL;
	}

	CFactory() 
	{
		m_cRef=0;
	}
	
	~CFactory() 
	{
	
	}
	static HRESULT CanUnloadNow()
	{
		if (m_nComObjsInUse== 0)
			return S_OK;
		else
			return S_FALSE;
	}

#ifdef __SELF_REGISTER_H__
	static HRESULT UnRegister() { return UnregisterServer(CLSID_MYCLSID,g_szVerIndProgID,g_szProgID); }
	static HRESULT Register() { HRESULT hr;	hr=RegisterServer(m_hModule, CLSID_MYCLSID, g_szFriendlyName,g_szVerIndProgID,g_szProgID); return hr;}
#else
	static HRESULT UnRegister()
	{
		return E_FAIL;
	}

	static HRESULT Register()
	{
		return E_FAIL;

	}
#endif//__SELF_REGISTER_H__
	static CloseServer()
	{

	}
	static HRESULT GetClassObject(const CLSID& clsid,const IID& iid,void** ppv)
	{
		HRESULT hRes;
		//if (clsid == CLSID_MYCLSID)
		//{

			CFactory *pFact = new CFactory;
			if (pFact == NULL)
				return E_OUTOFMEMORY;
			else
			{
				hRes = pFact->QueryInterface(iid , ppv);
				return hRes;
			}
		//}
		return CLASS_E_CLASSNOTAVAILABLE;
	}
	static void AddObjInUse()
	{
		InterlockedIncrement(&CFactory::m_nComObjsInUse);
	}
	static void ReleaseObjInUse()
	{
		InterlockedDecrement(&CFactory::m_nComObjsInUse);
		if(CFactory::m_nComObjsInUse<=0)
		{
			CFactory::CloseServer();
		}
	}
	static HMODULE m_hModule;
	static long m_nComObjsInUse;
private:
	long m_cRef ;
} ;

#endif

#endif 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -