关于Midas 使用WebConnection 客户端调用服务端的问题

yunshiyu 2005-08-22 11:05:52
服务端的代码如下:
STDMETHODIMP TNetDiskRDMImpl::Demo(BSTR* s)
{
WideString Info = "Succeeded";
*s = Info.Detach();
return S_OK;
}

客户端的代码如下:
WideString Info;
WebConnection->Connected = true;
IDispatch* disp = (IDispatch*)(WebConnection->AppServer);
INetDiskRDMDisp dispServer((INetDiskRDM*)disp);
HRESULT hr = dispServer.Demo(&Info);
WebConnection->Connected = false;
------------------------------------------------------------
客户端调用服务端想获取信息,现在信息可以获取来,能够正确获取“Succeeded”,但是每次调用的时

候在BCB中总是跳出一个CPU的调试窗口。另外我还写了一个DLL,对客户端进行了简单的包装,但是在VC

中调用时总是出现“用户断点异常”的对话框。我想一定是什么地方出现问题,希望高人指点一下。
我的环境是:BCB6.0+SP4 、Windows2000 + SP4、IIS 5.0
...全文
83 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
yunshiyu 2005-08-22
  • 打赏
  • 举报
回复
roscoe(草上飞) :

还是不好使啊!一调用的时候还是出现一个CPU的调试窗口~~~~~
roscoe 2005-08-22
  • 打赏
  • 举报
回复
WideString Info;
dispServer.Demo(&Info);
=============================================
在SDK中,BSTR可以强制类型CONST WCHAR*,
但WCHAR* 不应该转为BSTR.
---------------------------------------------
你直接用BSTR试试
yunshiyu 2005-08-22
  • 打赏
  • 举报
回复
roscoe(草上飞) :
试过了上面的方法,还是不好使,但谢谢你的回帖!
roscoe 2005-08-22
  • 打赏
  • 举报
回复
这么试试.
STDMETHODIMP TNetDiskRDMImpl::Demo(BSTR* s)
{
// WideString Info = "";
*s = SysAllocString( "Succeeded" );//Info.Detach();
return S_OK;
}
roscoe 2005-08-22
  • 打赏
  • 举报
回复
VCL我不熟悉代码,WideString.Detach 是不是等价于::SysAllocString()
另外查询接口,特别是DCOM中,强制转换好象不太好吧?,因为接口的对象聚合与离散,在COM中是通过
IUnknown::QueryInterface的本地版与远程版协同实现的.
roscoe 2005-08-22
  • 打赏
  • 举报
回复
HRESULT hr = dispServer.Demo(&Info);
先把这一行注释掉,是不是还会出现

3,248

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧