亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? component with ftm.cpp

?? 經驗交流,從網上下載的好東西望大家分享
?? CPP
字號:
// component.cpp
// This in-process component can be installed with the ThreadingModel value
// set to Apartment, Free, or Both. This can be adjusted in the last parameter
// of the RegisterServer function.

#include <iostream.h>  // For cout
#include "Component with FTM\component.h" // Generated by MIDL
#include "registry.h"  // For registry functions

HINSTANCE g_hInstance;
long g_cComponents = 0;
long g_cServerLocks = 0;

class CInsideCOM : public ISum
{
public:
	// IUnknown
	ULONG __stdcall AddRef();
	ULONG __stdcall Release();
	HRESULT __stdcall QueryInterface(REFIID riid, void** ppv);

	// ISum
	HRESULT __stdcall Sum(int x, int y, int* retval);

	CInsideCOM();
	~CInsideCOM();

private:
	long m_cRef;
	IUnknown* m_pUnknownFTM;
};

CInsideCOM::CInsideCOM() : m_cRef(1)
{
	InterlockedIncrement(&g_cComponents);
	CoCreateFreeThreadedMarshaler(this, &m_pUnknownFTM);
}

CInsideCOM::~CInsideCOM()
{
	InterlockedDecrement(&g_cComponents);
	m_pUnknownFTM->Release();
}

ULONG CInsideCOM::AddRef()
{
	cout << "Component: CInsideCOM::AddRef() m_cRef = " << m_cRef + 1 << endl;
	return InterlockedIncrement(&m_cRef);
}

ULONG CInsideCOM::Release()
{
	cout << "Component: CInsideCOM::Release() m_cRef = " << m_cRef - 1 << endl;
	ULONG cRef = InterlockedDecrement(&m_cRef);
	if(cRef != 0)
		return cRef;
	delete this;
	return 0;
}

HRESULT CInsideCOM::QueryInterface(REFIID riid, void** ppv)
{
	if(riid == IID_IUnknown)
	{
		cout << "Component: CInsideCOM::QueryInterface() for IUnknown returning " << this << endl;
		*ppv = (IUnknown*)this;
	}
	else if(riid == IID_ISum)
	{
		cout << "Component: CInsideCOM::QueryInterface() for ISum returning " << this << endl;
		*ppv = (ISum*)this;
	}
	else if(riid == IID_IMarshal)
	{
		cout << "Component: CInsideCOM::QueryInterface() for IMarshal" << endl;
		return m_pUnknownFTM->QueryInterface(riid, ppv);
	}
	else 
	{
		*ppv = NULL;
		return E_NOINTERFACE;
	}
	AddRef();
	return S_OK;
}

HRESULT CInsideCOM::Sum(int x, int y, int* retval)
{
//	cout << "Component: CInsideCOM::Sum() " << x << " + " << y << " = " << x + y << endl;
	*retval = x + y;
	return S_OK;
}

class CFactory : public IClassFactory
{
public:
	// IUnknown
	ULONG __stdcall AddRef();
	ULONG __stdcall Release();
	HRESULT __stdcall QueryInterface(REFIID riid, void** ppv);

	// IClassFactory
	HRESULT __stdcall CreateInstance(IUnknown *pUnknownOuter, REFIID riid, void** ppv);
	HRESULT __stdcall LockServer(BOOL bLock);

	CFactory() : m_cRef(1) { }
	~CFactory() { }

private:
	long m_cRef;
};

ULONG CFactory::AddRef()
{
	cout << "Component: CFactory::AddRef() m_cRef = " << m_cRef + 1 << endl;
	return InterlockedIncrement(&m_cRef);
}

ULONG CFactory::Release()
{
	cout << "Component: CFactory::Release() m_cRef = " << m_cRef - 1 << endl;
	ULONG cRef = InterlockedDecrement(&m_cRef);
	if(cRef != 0)
		return cRef;
	delete this;
	return 0;
}

HRESULT CFactory::QueryInterface(REFIID riid, void** ppv)
{
	if((riid == IID_IUnknown) || (riid == IID_IClassFactory))
	{
		cout << "Component: CFactory::QueryInteface() for IUnknown or IClassFactory " << this << endl;
		*ppv = (IClassFactory *)this;
	}
	else
	{
		*ppv = NULL;
		return E_NOINTERFACE;
	}
	AddRef();
	return S_OK;
}

HRESULT CFactory::CreateInstance(IUnknown *pUnknownOuter, REFIID riid, void** ppv)
{
	if(pUnknownOuter != NULL)
		return CLASS_E_NOAGGREGATION;

	CInsideCOM *pInsideCOM = new CInsideCOM;
	cout << "Component: CFactory::CreateInstance() " << pInsideCOM << endl;

	if(pInsideCOM == NULL)
		return E_OUTOFMEMORY;

	// QueryInterface probably for IID_IUNKNOWN
	HRESULT hr = pInsideCOM->QueryInterface(riid, ppv);
	pInsideCOM->Release();
	return hr;
}

HRESULT CFactory::LockServer(BOOL bLock)
{
	if(bLock)
		InterlockedIncrement(&g_cServerLocks);
	else
		InterlockedDecrement(&g_cServerLocks);
	return S_OK;
}

HRESULT __stdcall DllCanUnloadNow()
{
	cout << "Component: DllCanUnloadNow() " << (g_cServerLocks == 0 && g_cComponents == 0 ? "Yes" : "No") << endl;
	if(g_cServerLocks == 0 && g_cComponents == 0)
		return S_OK;
	else
		return S_FALSE;
}

HRESULT __stdcall DllGetClassObject(REFCLSID clsid, REFIID riid, void** ppv)
{
	cout << "Component: DllGetClassObject" << endl;
	
	if(clsid != CLSID_InsideCOM)
		return CLASS_E_CLASSNOTAVAILABLE;

	CFactory* pFactory = new CFactory;
	if(pFactory == NULL)
		return E_OUTOFMEMORY;

	// QueryInterface probably for IClassFactory
	HRESULT hr = pFactory->QueryInterface(riid, ppv);
	pFactory->Release();
	return hr;
}

HRESULT __stdcall DllRegisterServer()
{
	char DllPath[256];
	OLECHAR wDllPath[256];
	GetModuleFileName(g_hInstance, DllPath, 256);
	mbstowcs(wDllPath, DllPath, 256);
	ITypeLib* pTypeLib;
	HRESULT hr = LoadTypeLibEx(wDllPath, REGKIND_REGISTER, &pTypeLib);
	if(FAILED(hr))
		return hr;
	pTypeLib->Release();

	// Adjust the threading model here
	return RegisterServer("Component with FTM.dll", CLSID_InsideCOM, "Inside COM+ Sample", "Component.InsideCOM", "Component.InsideCOM.1", "Apartment");
}

HRESULT __stdcall DllUnregisterServer()
{
	HRESULT hr = UnRegisterTypeLib(LIBID_Component, 1, 0, LANG_NEUTRAL, SYS_WIN32);
	if(FAILED(hr))
		return hr;
	return UnregisterServer(CLSID_InsideCOM, "Component.InsideCOM", "Component.InsideCOM.1");
}

BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD dwReason, void* pv)
{
	g_hInstance = hInstance;
	return TRUE;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久综合狠狠综合久久激情| 美腿丝袜亚洲色图| 高清av一区二区| 久久久精品蜜桃| 麻豆精品视频在线观看| 日本黄色一区二区| 日本一区二区久久| 国产成人综合网站| 国产日韩欧美激情| 国模一区二区三区白浆| 中文字幕在线观看不卡视频| 男男成人高潮片免费网站| 欧美夫妻性生活| 六月丁香婷婷久久| 欧美成人国产一区二区| 国产在线观看一区二区| 国产精品色噜噜| 在线亚洲精品福利网址导航| 日韩一区国产二区欧美三区| 麻豆freexxxx性91精品| 国产欧美日韩精品a在线观看| 成人午夜精品一区二区三区| 中文字幕日本乱码精品影院| 91国产免费观看| 蜜桃视频第一区免费观看| 亚洲精品一区二区三区四区高清| 国产精品一二三| 亚洲综合成人网| 日韩欧美激情四射| 成人免费观看男女羞羞视频| 亚洲精品成人精品456| 欧美一区二区三区四区五区| 国产乱人伦精品一区二区在线观看 | 欧美精品自拍偷拍动漫精品| 国内精品视频666| 亚洲综合久久av| 久久精品夜色噜噜亚洲aⅴ| 色综合网色综合| 国产一区日韩二区欧美三区| 亚洲午夜在线电影| 日本一区二区视频在线观看| 欧美色综合天天久久综合精品| 91日韩一区二区三区| 日韩精品一卡二卡三卡四卡无卡| 欧美日韩黄色一区二区| 成人激情免费电影网址| 奇米精品一区二区三区四区| 中文字幕一区视频| 精品捆绑美女sm三区| 欧美日韩在线播放一区| 91免费观看国产| 国产ts人妖一区二区| 蜜臂av日日欢夜夜爽一区| 亚洲国产欧美日韩另类综合| 1000部国产精品成人观看| 国产欧美一区二区三区鸳鸯浴| 69久久99精品久久久久婷婷| 在线观看不卡一区| 色婷婷综合久久| 色综合一区二区三区| 成人黄色电影在线 | 日韩精品成人一区二区在线| 亚洲一区二区三区四区在线观看| 国产精品视频看| 中文字幕精品在线不卡| 亚洲国产电影在线观看| 久久久久久久久一| 久久这里只精品最新地址| 欧美xxxxx裸体时装秀| 精品久久国产97色综合| 久久久精品中文字幕麻豆发布| 久久影院午夜论| 亚洲少妇30p| 亚洲成人一区二区在线观看| 五月天婷婷综合| 日本va欧美va精品发布| 不卡一二三区首页| 日本高清不卡一区| 欧美日韩国产综合久久| 欧美一区二区在线视频| 精品区一区二区| 国产欧美精品国产国产专区 | 免费在线观看日韩欧美| 国产精品自拍毛片| 91丝袜国产在线播放| 欧美日韩久久久一区| 精品国产网站在线观看| 国产精品不卡在线观看| 亚洲综合在线免费观看| 免费在线欧美视频| 成人免费视频一区| 欧美精品在线一区二区| 亚洲精品在线观| 一区二区三区91| 国产露脸91国语对白| 91福利视频久久久久| 26uuuu精品一区二区| 亚洲黄色小说网站| 国产成人精品影院| 亚洲亚洲精品在线观看| 国产v日产∨综合v精品视频| 欧美日韩成人在线一区| 国产精品久久久久久久久晋中| 五月天欧美精品| 色域天天综合网| 国产喷白浆一区二区三区| 久久99最新地址| 欧美嫩在线观看| 一区二区三区免费| av综合在线播放| 理论电影国产精品| 在线不卡中文字幕| 亚洲电影一区二区三区| 不卡av在线网| 国产欧美一二三区| 精品午夜一区二区三区在线观看| 欧美三电影在线| 成人激情文学综合网| 欧美—级在线免费片| 黄页网站大全一区二区| 五月婷婷久久综合| 91麻豆精品国产91久久久久 | 国产ts人妖一区二区| 久久精品在线观看| 国产成人免费视频精品含羞草妖精| 精品国产欧美一区二区| 久久99国产精品成人| 日韩你懂的在线观看| 久久精品72免费观看| 欧美sm美女调教| 国产一区二区电影| 中文字幕第一区二区| 一本色道综合亚洲| 天天影视网天天综合色在线播放| 在线不卡中文字幕播放| 美女网站在线免费欧美精品| 亚洲精品在线一区二区| 国产不卡一区视频| 亚洲免费大片在线观看| 欧美午夜精品一区二区蜜桃| 亚洲成人动漫在线免费观看| 日韩免费在线观看| 成人午夜在线播放| 亚洲成人av一区二区三区| wwwwww.欧美系列| 色综合咪咪久久| 麻豆国产欧美日韩综合精品二区 | 久久一区二区三区四区| jiyouzz国产精品久久| 亚洲高清在线视频| 国产偷v国产偷v亚洲高清| 日本韩国精品在线| 国产综合一区二区| 亚洲午夜免费电影| 欧美韩国日本不卡| 这里是久久伊人| 日本电影欧美片| 国产91精品久久久久久久网曝门 | 欧美天堂一区二区三区| 国产麻豆欧美日韩一区| 日韩电影免费一区| 中文字幕亚洲欧美在线不卡| 欧美一区二区成人6969| 色噜噜狠狠成人中文综合| 久久99精品久久久| 亚洲影院在线观看| 国产精品私房写真福利视频| 日韩一区二区三区在线视频| 欧美做爰猛烈大尺度电影无法无天| 精品一区二区三区的国产在线播放| 亚洲综合丝袜美腿| 国产精品久久久久一区| 国产午夜精品美女毛片视频| 日韩美女在线视频| 欧美日韩电影在线播放| 欧美在线免费观看亚洲| 成人av在线电影| 成人a区在线观看| 国产成人午夜电影网| 国产在线乱码一区二区三区| 久久99日本精品| 激情小说亚洲一区| 精品中文av资源站在线观看| 日韩国产欧美视频| 日韩电影免费在线看| 美女视频黄免费的久久 | 亚洲乱码日产精品bd| 亚洲乱码国产乱码精品精的特点 | 精品国产污网站| 久久久99精品免费观看| 国产精品私房写真福利视频| 国产精品国产三级国产普通话99| 亚洲丝袜精品丝袜在线| 一区二区三区在线播放| 肉色丝袜一区二区| 国内成人精品2018免费看| 成人综合婷婷国产精品久久蜜臀 | 国产亚洲综合性久久久影院| 亚洲国产精品ⅴa在线观看| 亚洲欧美激情在线|