zoukankan      html  css  js  c++  java
  • COM学习系列(一)

    进程内组件 进程外组件
    直接指向组件程序的VTable
    extern "C" _declspec(dllexport) int _stdcall MyFunction(int n);


    可以按照函数的序号查找 在DEF文件中指名
    也可以根据函数的名称查找
    COM采用本地过程调用 和 远程过程调用
    LPC RPC
    LPC相当于RPC的一个优化实现
    进程内组件效率低 但跨进程调用安全
    全操作系统公用的信息仓库
    实现COM库时必须同时定义出注册表的结构

    HKEY_CLASSES_ROOT

    自注册组件程序 非注册组件程序

    只要进程内组件提供相应的入口函数
    则RegSvr32 就可以完成注册或注销工作
    支持自注册的进程外组件必须支持两个命令行参数 /RegServer 和 /UnregServer

    调用COM库的函数进行组件对象的创建工作
    CreateInstance
    COM的创建函数根据注册表的信息并调用组件程序的入口函数创建组件

    COM库在接到对象创建的指令后,它要调用进程内组件的DllGetClassObject函数
    由该函数创建类厂对象 并返回类厂指针。COM库一旦有类厂的接口指针,他们就可以
    通过类厂借口IClassFactory的成员函数CreateInstance创建相应的COM对象

    在COM库中 有三个API函数可用于对象的创建 他们分别是 COGetClassObject,
    CoCreateInstance,CoCreateInstanceEx 一般情况调用其中一个


    1.CoInitialize 通常 一个进程对COM库只进行一次初始化
    2.初始化完成 调用CoBuildVersion 获取COM库版本
    3.COM库的终止函数 CoUninitalize

    爱程序 不爱bug 爱生活 不爱黑眼圈 我和你们一样 我和你们不一样 我不是凡客 我要做geek
  • 相关阅读:
    第十周学习进度
    第九周学习进度
    冲刺阶段站立会议每日任务10
    冲刺阶段站立会议每日任务9
    冲刺阶段站立会议每日任务8
    冲刺阶段站立会议每日任务7
    第八周学习进度
    对输入法的评价
    冲刺阶段站立会议每日任务6
    冲刺阶段站立会议每日任务5
  • 原文地址:https://www.cnblogs.com/yifi/p/6442140.html
Copyright © 2011-2022 走看看