TLB文件是一个说明文件,通过TLB文件,用户可以得知你的DLL文件中的COM接口
以及常量等的信息,这样一来用户才知道你的DLL中有什么接口与常量等,用户才
能用你的接口,当然了,如果你的COM接口只想自己使用,你可以不做TLB文件告诉
其他人这些信息了。

在使用#import引入一个com组件的时候,会自动生成.tlh和.tli两个文件,这个两个文件是对com类的封装,tlh是标准头文件,里面为每个组件类定义了一个_com_ptr_t类型的智能指针,tli里面是代码文件,里面是对COM组件类的成员的封装,具体可以自己import一个msado15.dll看一下。

TLB常常会包含以下这个功能:
智慧型指標宣告:樣板類別 _com_ptr_t 屬於一個智慧型指標,該類別封裝了介面指標並排除呼叫 AddRef, Release, QueryInterface 等繁瑣的步驟。另外也隱藏了 CoCreateInstance 建立一個新的 COM 物件的呼叫。這個部分使用 _COM_SMARTPTR_TYPEDEF 來產生特異化(Specialization)版本的 _com_ptr_t 類別。例如:
 _COM_SMARTPTR_TYPEDEF(IMyInterface, __uuidof(IMyInterface));
 編譯器會將上述的程式擴展成
 typedef _com_ptr_t<_com_IIID<IMyInterface, __uuidof(IMyInterface)> > IMyInterfacePtr;

上面是在介绍.tlb包含的内容时说到的一点,会自想的时候动添加一个智能指针,以后创建COM对象的时候就可以不用CoCreateInstance了。
比如引入msado15.dll这个库后,会在msado15.tlh文件中有这样一句
_COM_SMARTPTR_TYPEDEF(_Connection, __uuidof(_Connection));
这句会被编译器扩展成
typedef _com_ptr_t<_com_IIID<_Connection,0x0> > _ConnectionPtr
然后就可以使用这个智能指针_ConnectionPtr了,创建COM对象时也只是

    _ConnectionPtr pMyConnect = NULL;
    HRESULT hr = pMyConnect.CreateInstance(__uuidof(Connection));

那个__uuidof(Connection)中的Connection是个结构体,实际上是这样的

struct /**//* coclass */ Connection;

定义在msado15.tlh文件中。

其他的诸如_RecordsetPtr,_CommandPtr都一样,都是com_ptr_t类型的。

转载于:https://www.cnblogs.com/coderlee/archive/2008/02/18/1071755.html

补一点COM的知识,有关_com_ptr_t相关推荐

  1. 这篇文章来自我的微信朋友圈,并不特别好玩,但能够给创业者补点財务知识...

    来自我公布在微信朋友圈的文章和图片. 就是这两天的事情. 我直接从朋友圈屏幕截图过来转到这里.来自我的真实事情.我认为值得分享,增长一点財务知识. 我上研究生时已经上过財务课程,但如今遇到这个问题还得 ...

  2. 狂补呼叫中心相关知识,将收集的资料贴于此

    狂补呼叫中心相关知识,将收集的资料贴于此: H.323的协议体系 根据1998年H.323第二版,H.323制定了无QoS(服务质量)保证的分组网络 PBN(packet Based Networks ...

  3. 【Java】每日一点Java小知识 --- day6

    每日一点Java基础小知识 - day6 欢迎来到叮当猫学编程的Java基础小知识系列~在这里,你将会看到叮当猫每日关于Java的基础知识总结,欢迎大家的点赞关注喔 方法重载: 被重载的方法必须改变参 ...

  4. 大专生程序员找工作的一点小建议 知识分享 经验分享

    最近呢有人在私信我 就问我说我呢是一个大专生 大专毕业 学历呢也不是很好 我但是我学的是这个计算机 这样一个专业 然后呢现在找工作找不到 就这样的一个要求 让我们呢给一些建议 当然就是私底下在网上聊吗 ...

  5. 妈耶我需要好好补一下计算机网络的知识了QAQ

    妈耶哭瞎 仔细复习了几天的C++还有游戏架构.游戏引擎等知识 今天突然接到了某面试,前面都答出来了 结果问了好多计算机网络的题目,暴风哭泣QAQ 我上班不怎么遇到都快忘光了 不要放弃,再来恶补一下网络 ...

  6. “知识图谱补全”术语:知识图谱补全、三元组分类、链接预测

    基本简介: 知识图谱补全通常定义为"三元组分类"或"链接预测"任务.首先,一条知识在知识图谱中通常由三元组表示:"头实体,关系,尾实体".三 ...

  7. 程序员需要了解的一点组织行为学知识

    程序员由于天天和逻辑打交道,所以在世故的人眼里往往显得过于简单. 近来看组织行为学,发现其中一节列了很多特别的技能. 考虑到也许他们对程序员群体很有启示意义,就追加了一点说明,把它放在博客里. 相信这 ...

  8. v兔无痕补单是什么,无痕补单搭配运营知识怎样玩,无痕补单的意义,哪里可以找到无痕补单

    使用无痕补单后的效果 1.无痕补单的作用是为了做数据,增加权重获取更多流量,是为了做运营布局,将流量转化为订单,具体的无痕补单就是直接越过浏览过程,直接下单,生意参谋后台数据只显示成交关键词,成交来源 ...

  9. 恶补CSS的布局知识

    光有CSS的基础是不够的,需要应用到网页的设计中. 先贴两个链接,好好学习下. 学习CSS布局:http://zh.learnlayout.com/display.html 英文原帖:http://w ...

最新文章

  1. [css] 检测sass中错误的指令是哪个?
  2. zabbix内网安装部署_zabbix2.4.8升级3.0.31操作部署记录
  3. CS224N NLP
  4. 产品申请UL标志包括以下几个步骤
  5. vue项目实现权限控制的几种思路
  6. Word章节自动编号+公式编号
  7. 使用vue-admin-template搭建简单增删改查导入导出项目及CentOs服务器部署
  8. 蛋白和肽测序仪销量、收入、价格、毛利率及市场份额
  9. 语义web一些简单示例
  10. 2023最新SSM计算机毕业设计选题大全(附源码+LW)之java校园新闻发布管理系统574ec
  11. Spark生态系统和运行架构
  12. (转)Python数学函数
  13. js打开服务器缓存文件夹路径,浅谈微信页面入口文件被缓存解决方案
  14. redis未授权访问
  15. 微信小程序底部菜单详解
  16. Hexo + Butterfly 自定义页脚
  17. 2011年全球手机市场十大事件
  18. 华为鸿蒙HarmonyOS,华为鸿蒙HarmonyOS 2.0
  19. 重学 Java 设计模式:实战组合模式(营销差异化人群发券,决策树引擎搭建场景)
  20. 做好异常处理,防止无故翻车

热门文章

  1. JAVA8的LocalDateTime使用心得和工具类
  2. flash,sdram 和 cpu 是 T形连接(类似于争的板子上flash和sdram的拓扑结构) --- FLASH搭上SDRAM,并不是你想象的那样不用布等长!...
  3. fdisk -l 找不到分区怎么办?想办法找到隐藏分区。
  4. 前端的一些常用DOM和事件归纳
  5. INADDR_ANY的理解
  6. OpenGL相关网站
  7. Fragment中使用viewLifecycleOwner/getActivity/this
  8. 第四周项目一-求两个数的最大公约数
  9. 第三周项目一-个人所得税计算器
  10. 名片DIY官方认证代码_【教程】DIYQQ动态名片