www.pudn.com > Aggregation.zip > ClientToInner2.cpp


#include  
#include  
 
#include "..\Agrregation\Client\Iface.h" 
 
void trace(const char* msg) { cout << "Client: \t" << msg << endl ;} 
 
// 
// Main Function 
// 
 
int main() 
{ 
	CoInitialize(NULL); 
	IY* pIUnknown = NULL; 
	trace("从Component2中获取IUnknown接口.") ; 
	HRESULT hr = ::CoCreateInstance(CLSID_Component2, 
	                                NULL,  
	                                CLSCTX_INPROC_SERVER, 
	                                IID_IUnknown,  
	                                (void**)&pIUnknown) ; 
	if (FAILED(hr)) 
	{ 
		cout<< "不能创建组件CLSID_Component2" << endl; 
		return -1; 
	} 
 
	 
	trace("从IUnknown获取IY接口!"); 
 
	IY* pIY = NULL; 
	hr = pIUnknown->QueryInterface(IID_IY, (void**)&pIY); 
	if (FAILED(hr)) 
	{ 
		cout<< "不能从IUnknown获取IY接口!" << endl; 
		return -1; 
	} 
 
	pIY->Fy(); 
 
	trace("从IY再次获取IY接口!"); 
	IY* pIY2 = NULL; 
	hr = pIY->QueryInterface(IID_IY,(void**)&pIY2); 
    if (FAILED(hr)) 
	{ 
		cout<< "不能从IY再次获取IY接口!" << endl; 
		return -1; 
	}  
 
	pIY2->Fy(); 
	 
	pIY2->Release(); 
 
	pIY->Release(); 
 
	pIUnknown->Release(); 
 
	CoUninitialize(); 
 
	return 1; 
 
}