微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

CoCreateInstance在.NET中精确匹配?

我有进程(DLL)的COM服务器,但我解决了作为DllSurrogate运行,由于这个原因从非托pipe代码(delphi)我有

function TComWrapper.GetServer: IUnkNown; begin OleCheck(CoCreateInstance(ServerData^.ClassId,nil,CLSCTX_LOCAL_SERVER,IUnkNown,Result)); end;

从C#使用现在:

[DllImport("ole32.dll",EntryPoint = "CoCreateInstance",CallingConvention = CallingConvention.StdCall)] static extern UInt32 CoCreateInstance([In,MarshalAs(UnmanagedType.LPStruct)] Guid rclsid,IntPtr pUnkOuter,UInt32 dwClsContext,[In,MarshalAs(UnmanagedType.LPStruct)] Guid riid,[MarshalAs(UnmanagedType.IUnkNown)] out object rReturnedComObject);

UInt32 dwRes = CoCreateInstance(ClassIdGuid,IntPtr.Zero,(uint)(CLSCTX.CLSCTX_LOCAL_SERVER),//if OR with CLSCTX_INPROC_SERVER then INPROC Server will be created,because of DLL COM Server IUnkNownGuid,out instance);

上面的代码是不安全的。 CoCreateInstance上面是否存在安全版本? 看来, Activator.CreateInstance不帮助我。 我必须显式设置运行上下文(第三个参数)

从.Net的angular度来看windows服务的体系结构

什么是阻止我的.NET 2.0应用程序在64位平台上运行?

为什么在WinForms(.NET)中隐藏一个拥有的窗口切换应用程序?

如果外部命令的输出是废话,最好抛出exception?

语言栏在c#.NET中改变语言

如何从一个句子获取网站的URL?

如何在C#中的文本文件中设置string

如何创build无法正常终止或停止的Windows服务

GUI故障:checkBox文本在Windows 8中显示不完整

find用户networking服务的临时文件夹?

你也可以这样做:

[ComImport] [Guid(YourGuidGoesHere)] private class MyClass { }

并像这样创建一个COM对象的实例:

IYourInterface myClass = (IYourInterface)(new MyClass());

不使用p / invoke。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐