zoukankan      html  css  js  c++  java
  • COM编程 笔记1

    COM库提供的API 函数产生GUID:

    HRESULT CoCreateGuid(GUID *pguid);

    IUnknown的定义(IDL接口描述语言)

    interface IUnknown

    {

      HRESULT QueryInterface([in] REFIID iid,[out] void * *ppv);

      ULONG AddRef(void);

      ULONG Release(void);

    }

    对QueryInterface的返回信息:

    S_OK,查到指定接口

    E_NOINTERFACE ,对象不支持的接口

    E_UNEXPECTED,发生意外错误

    COM采用了本地过程调用(LPC)和远过程调用(RPC)的方法进行进程间的通信。

    接口IClassFactory定义(C++)

    class IClassFactory : public IUnknown

    {

      virtual HRESULT _stdcall CreateInstance(IUnknown *pUnknownOuter,const IID&iid,void * *ppv) = 0;

      virtual HRESULT _stdcall LockServer(BOOL bLock) = 0;

    };

    在COM库中有三个API函数可以用于对象的创建,它们分别是CoGetClassObject、CoCreateInstance、CoCreateInstanceEx.

    COM库的初始化HRESULT CoInitialize(IMalloc *pMalloc); 如返回S_OK表明初始化成功,如返回S_FALSE表情初始化虽然成功,但不是第一次初始化。

    如返回E_UNEXPECTED表明初始化中出现错误。pMalloc设为NULL,COM库将使用缺省提供的内存分配器。

    COM库的终止函数void CoUninitialize(void)

    COM的可重用性包括:包容和聚合

    包容:其实就是一个COM对象作为客户程序,另外一个COM对象作为服务程序,在客户程序中使用服务程序。

    聚合:其实就是一个COM对象引出另外一个COM对象的接口。

    下接COM编程 笔记2

  • 相关阅读:
    #Leetcode# 90. Subsets II
    Linux——网段的划分,子网掩码,ABC类地址的表示法
    Linux——文件目录管理(结构)
    Caffe入门与应用 by GX
    1、概述
    6、多态性-4、抽象类
    6、多态性-3、虚函数
    第二课2、ROS
    第一课1、ROS
    6、多态性-2、运算符重载
  • 原文地址:https://www.cnblogs.com/pbreak/p/1754523.html
Copyright © 2011-2022 走看看