DCOM简单示例(02)

本篇文章介绍了如何写一个简单的DCOM服务端(NT服务模式)。

1、VC新建工程,ATL->ATL Project(名称为ATLService)->类型选择Service(EXE)->Finish

2、工程视图,ATLService工程,右键->Add->Class->ATL->ATL Simple Object->类名为JustATestSvr,ProgID为ATLService.JustATestSvr

3、切换到类视图,ATLService项目下的IJustATestSvr接口上右键Add Method
名称:Add
参数1:[in]LONG a
参数2:[in]LONG b
参数3:[out,retval]LONG* c

4、类视图,ATLService项目下的IIJustATestSvr接口上右键Add Method
名称:SayHiTo
参数1:[in]BSTR someOne
参数2:[out,retval]BSTR* retValue

5、打开IJustATestSvr.cpp完成两个函数

STDMETHODIMP CJustATestSvr::Add(LONG a, LONG b, LONG* c)
{
	// TODO: Add your implementation code here
	*c = a+b;

	return S_OK;
}


STDMETHODIMP CJustATestSvr::SayHiTo(BSTR someOne, BSTR* retValue)
{
	// TODO: Add your implementation code here
	CComBSTR sResult("Hi ");
	CComBSTR sName(someOne);
	CComBSTR sMark("!");
	sResult.AppendBSTR(sName);
	sResult.AppendBSTR(sMark);
	*retValue = sResult.Copy();

	return S_OK;
}

6、编辑JustATestSvc.rgs,在TypeLib一行前,增加这样一行

val AppID = s '%APPID%'

这是MS的一个大bug,浪费了我好几个小时。

7、编译

8、注册

ATLService.exe /service

9、运行

net start ATLService

10、停止

net stop ATLService

11、反注册

ATLService.exe /unregserver

Leave a Reply

Your email address will not be published. Required fields are marked *

*