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

  • 相关阅读:
    微服务2:微服务全景架构
    SystemVerilog语言简介
    Slip打包与解包及MATLAB程序
    恶性卷积码
    通信原理之调制解调(2)QPSK
    FPGA仿真只适合开发定制IP的设计师?
    用CCS开发DSP应用程序的代码结构、加电装载及在线编程
    符号能量问题
    该如何选择?
    无线通信距离的计算
  • 原文地址:https://www.cnblogs.com/pbreak/p/1754523.html
Copyright © 2011-2022 走看看