怎样在DotNet Framework中实现对象安全接口(IObjectSafety)

Mittermeyer 2003-10-14 02:41:37
在我实现的模块中,需要采用C#包装一个ActiveX Control,并且通过IE在客户端脚本中调用。由于IE安全策略的设置,必须实现IObjectSafety接口在能够保证正确运行。
在.Net Framework中没有IObjectSafe的定义,我的方案是按照IObjectSafety的形式自己定义该接口,并且在需要支持的控件中实现。
IObjectSafety的定义如下:
[Guid("CB5BDC81-93C1-11cf-8F20-00805F2CD064")]
public interface IObjectSafety
{
// methods
unsafe void GetInterfacceSafyOptions(
System.Int32 riid,
System.Int32* pdwSupportedOptions,
System.Int32* pdwEnabledOptions);
void SetInterfaceSafetyOptions(
System.Int32 riid,
System.Int32 dwOptionsSetMask,
System.Int32 dwEnabledOptions);
}
在控件中继承该接口,并且实现其中的两个方法。但是在IE中调用,装载页面时会产生严重的错误,关闭应用程序。

请教各位原因何在,有没有更好的解决方法。
谢谢先。
...全文
104 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
超人汪 2003-12-11
  • 打赏
  • 举报
回复
你的帖子构思新颖,题材独具匠心,段落清晰,情节诡异,跌宕起伏,主线分明,引人入胜,平淡中显示出不平凡的文学功底,可谓是字字珠玑,句句经典,是我辈应当学习之典范。
ajex 2003-12-11
  • 打赏
  • 举报
回复
好文章,求源码!alexajex@etang.com
atlove 2003-10-31
  • 打赏
  • 举报
回复
-
scbeans 2003-10-30
  • 打赏
  • 举报
回复
mark
Mittermeyer 2003-10-16
  • 打赏
  • 举报
回复
问题解决了,把解决过程整理如下:
http://www.csdn.net/develop/read_article.asp?id=21583
希望大家指正。

另外我建议每个帖子的发起者,进一下楼主的义务,如果问题解决得话,那么把最终解决得方案整理一下,或者把自己的验证结果描述一下,有总结有记录大家才有提高。对个人,对这个社区都有好处:)

响应回复者有分!!
Mittermeyer 2003-10-15
  • 打赏
  • 举报
回复
我改写了定义,除去了Unsafe的代码,但是还存在同样的问题--控件加载的时候非法的内存访问非法的内存访问。
[Guid("CB5BDC81-93C1-11CF-8F20-00805F2CD064")]
public interface IObjectSafety
{
// methods
void GetInterfacceSafyOptions(
System.Int32 riid,
out System.Int32 pdwSupportedOptions,
out System.Int32 pdwEnabledOptions);
void SetInterfaceSafetyOptions(
System.Int32 riid,
System.Int32 dwOptionsSetMask,
System.Int32 dwEnabledOptions);
}
此时类型库中的申明如下:
[
odl,
uuid(CB5BDC81-93C1-11CF-8F20-00805F2CD064),
version(1.0),
dual,
oleautomation,
custom({0F21F359-AB84-41E8-9A78-36D110E6D2F9}, "LsDehs.IObjectSafety")

]
interface IObjectSafety : IDispatch {
[id(0x60020000)]
HRESULT GetInterfacceSafyOptions(
[in] long riid,
[out] long* pdwSupportedOptions,
[out] long* pdwEnabledOptions);
[id(0x60020001)]
HRESULT SetInterfaceSafetyOptions(
[in] long riid,
[in] long dwOptionsSetMask,
[in] long dwEnabledOptions);
};
ruanyuping 2003-10-15
  • 打赏
  • 举报
回复
up

111,098

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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