首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

COM学习(三)——COM跨语言

COM是基于二进制组件模块,从设计之初就以支持所有语言作为它一个目标,这篇文章主要探讨COM跨语言部分。...idl文件 一般COM接口实现肯定是以某一具体语言来实现,比如说使用VC++语言,这就造成了一个问题,不同语言对于接口定义,各个变量定义各不相同,如何让使用vc++或者说Java等其他语言定义接口能被别的语言识别...一般来说,一个文件有下面几个部分说明 接口定义 组件库定义 实现类定义 而各个部分又包括他们属性定义,以及函数成员定义 属性: 属性是在接口定义上方,使用“[]”符号包裹,一般在属性中使用下面几个关键字...DllCanUnloadNow:函数用来询问是否可以卸载对应dll,一般在COM中有两个全局引用计数,用来记录当前内存中有多少个模块中类,以及当前有多少个线程在使用它,如果当前没有线程使用或者存在对象数为...至此从结构上说明了为了实现跨语言COM组件内部做了哪些工作,当然只有这些工作是肯定不够,后面会继续说明它所做另一块工作——提供一堆通用变量类型。

1.7K40

COM学习(二)——COM注册和卸载

COM组件是跨语言,组件被注册到注册表中,在加载时由加载函数在注册表中查找到对应模块路径并进行相关加载。它存储规则如下: 1....在注册表HKEY_CLASSES_ROOT中以模块名方式保存着COM模块GUID,比如HKEY_CLASSES_ROOT\ADODB.Error\CLSID键中保存着模块ADODB.ErrorGUID...在HKEY_CLASSES_ROOT\CLSID中以GUID为项名保存着对应组件详细信息,比如之前{00000541-0000-0010-8000-00AA006D2EA4}这个GUID在注册表中位置为...%\System\ado\msado15.dll 一般COM模块都是使用regsvr32程序注册到注册表中,该程序在注册时会在模块中查找DllRegisterServer函数,卸载时调用模块中提供...所以*g_regTab自然就是这个一维数组首地址,第二个sizeof就是这个一维数组大小,两个相除得到就是一维数组个数。

2.6K20
您找到你想要的搜索结果了吗?
是的
没有找到

COM组件原理_Com组件

COM中,接口就是一个抽象类,每个接口有一个接口ID(uuid)。一个COM组件通常是连续继承下来类,比如 IUNknow ->IDispath->IXX->CXX。...这就形成了一个COM组件,当然组件一般是一个钻石继承样子,这里为了简化原理把他们当成一个串形继承下来。...每个COM组件都有一个CLSID(uuid),这个CLSID是注册时候写进注册表,可以把这个CLSID理解为这个组件最终可以实例化子类一个ID。...这样就可以通过查询注册表中CLSID来找到COM组件所在dll名称。然后调用时候。...有时候我们不需要太多其它功能。就会对这个框架精简一些(如windows登录机制里CP)。但原理还是一样。所以遇到COM组件时候不要一根筋,非要纠结这个与标准COM不同之处。

1.5K20

COM编程_第一讲_深入COM框架以及实现简单COM

二丶什么是COM COM是微软公司为了计算机工业软件生产更加符合人类行为方式开发一种新软件开发技术。...COM是开发软件组件一种方法。组件实际上是一些小二进制可执行程序,它们可以给应用程序,操作系统以及其他组件提供服务。开发自定义COM组件就如同开发动态,面向对象API。...好,这是百度答案,很多人看了懵逼,简单来说 总结:   1.COM是一种框架,我们可以利用这个框架,实现跨平台开发,比如你开发了一个COM,那么别的程序一样使用   2.COM其实是二进制下可执行程序...COM设计....如有问题QQ:2510908331 论坛:www.w1x8.com 如果说有错误,请指出,如果你有更好建议,请评论说明,因为COM组件很老,很多人会用,但是不懂,因为我们是逆向工程,所以需要熟悉COM

3.2K01

COM学习(一)——COM基础思想

概述 学习微软技术COM是绕不开一道坎,最近做项目的时候发现有许多功能需要用到COM内容,虽然只是简单使用COM中封装好内容,但是许多代码仍然只知其然,不知其所以然,所以我决定从头开始好好学习一下...COM是基于组件化编程思想,在COM中每一个组件成为一个模块,它可以是动态链接库或者可执行文件,一个组件程序可以包含一个或者多个组件对象,COM对象不同于OOP(面向对象)中对象,COM对象是定义在二进制机器代码基础之上...而OOP中对象是建立在语言之上。脱离了语言对象也就不复存在.COM是独立在编程语言之上,是语言无关COM这一特性使得不同语言开发组件之间互相交互成为可能。...COM对象和接口 COM对象类似于C++中对象,对象是某个类中实例。而类则是一组相关数据和功能组合在一起一个定义。使用对象应用(或另一个对象)称为客户,有时也称为对象用户。...实际上,客户成功地创建对象后,它得到是一个指向对象某个接口指针,因为 COM 对象至少实现一个接口(没有接口 COM 对象是没有意义),所以客户就可以调用该接口提供所有服务。

1.4K30

虚拟串口工具_com0com

虽然 Serial port 己经从大家面前消失得八八九九,但其实它在很多地方都仍然存在,更多是用虚拟形式 (Virtual COM port) 出现,例如现在应该每个人都知道 3G modem...我真怀疑这些古老文物到底有没有消失一天。 com0com是windows内核模式下虚拟串口驱动程序。可以创建虚拟串口对来连接两个COM端口。...或2.命令行方式: 安装后开始菜单下会有com0com/setup command prompt 可以启动一个命令行: 输入help获得帮助信息 比如说要连接COM3和COM4 可以输入命令:...install PortName=COM3 PortName=COM4 这样串口3发送数据就会被串口4接收。...反过来也是一样。 没有实际串口电脑也可以调试串口程序了,只要你在一个串口端虚拟一个自己需要数据源就可以对你串口程序进行调试了。

5K61

COM聚合技术中QueryInterface

大家好,又见面了,我是你们朋友全栈君。 最近在看COM聚合技术时遇到一个关于QueryInterface问题。...在《COM技术内幕》和《COM原理与应用》中都是寥寥数句带过,看起来很易理解,我却看了许久才有所领悟。...在《COM技术内幕》中还有这样一段话“COM并不关心接口名字是什么,而只关心vtbl结构。”这回是不是突然感觉好像明白了什么?...,派生类中对于基类中虚函数表和各成员排列顺序与继承顺序一致,最后才是派生类自己成员: 由于这样数据结构,在进行强制转换时,实际上是将虚函数表指针传出,故转换后指针值发生了变化。...还有一个遗留小问题:虽然我们获取了NondelegatingUnknown指针,可是函数名不同为什么依然可以调用?还记得书中那句话么:“COM并不关心接口名字是什么,而只关心vtbl结构。”

84820

无招胜有招: 看我如何通过劫持COM服务器绕过AMSI

幸运是,COM服务器易于劫持,因为COM服务在处理 流程上默认在查找HKCR/HKLM之前会去先搜索当前用户注册表配置单元(HKCU) ,以用于COM服务器来正常处理。...: 通过以上分析最终我们可以发现,AMSI扫描恶意程序功能似乎是通过自己COM服务器来实现,该功能在COM服务器被实例化时被导出。...由于amsi.dll也是AMSICOM服务器,因此将这两个DLL分开似乎是一个很好修复方法。...该函数解析完成后(部分通过注册表CLSID查找)以及定位到COM服务器后,服务器导出函数“DllGetClassObject()”将被调用。...如您所见,现在正在查询注册表以查找AMSICOM服务器: 使用易受攻击AMSI DLL,从图中可以看出我们现在可以执行COM服务器劫持: 总结: 尽管微软在补丁#16232中对该漏洞进行了修复,但仍然可以通过使用旧

2.7K70

.Net调用Office Com组件原理及问题:检索com类工厂组件检索 COM 类工厂中 CLSID 为 {XXX} 组件失败

文章1链接:http://www.cnblogs.com/xuxin-1989/p/3941056.html 文章2链接:http://www.cnblogs.com/yumianhu/p/3710733...最开始想到原因,我服务器有好几个虚机,其中有好使,这个不好使难道是因为Excel和ppt是单独安装,office装不全,组件没注册上?...在网上(http://support.microsoft.com/kb/828550/zh-cn)查到CLSID 为{91493441-5A91-11CF-8700-00AA0060263B}组件是office.../200810/6270283a.shtml)找到原因可能是在Windows Server 2008 X64中通过.NET程序调用32位com组件问题,按照其说,在Visual Studio中,将编译目标平台...幻灯片】啊,原来服务器是64位了,没有加载32位组件,运行中敲入mmc -32,在控制台中‘文件’‘添加/删除管理单元’选择‘组件服务’添加,就会出现【Microsoft Office PowerPoint

4.7K20

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券