organic

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  66 随笔 :: 0 文章 :: 12 评论 :: 15万 阅读

在编写组件程序时,经常会使用CoCreateInstance直接取COM组件的接口,非常方便,那CoCreateInstance到底干了些什么事呢?1、CoCreateInstance取COM组件的接口的基本流程


//参数:rclsid = 组件CLSID
//参数:riid = 接口ID
WINOLEAPI   CoCreateInstance(REFCLSID rclsid, LPUNKNOWN pUnkOuter, 
                             DWORD dwClsContext, REFIID riid, LPVOID FAR* ppICOMInterface)
{
        //根据组件的CLSID从注册表中取Dll的地址,并加载
        char        pszCOMDllPath;
        SHGetValue(HKEY_CLASSES_ROOT, "CLSID+rclsid\InprocServer32", "默认", pszCOMDllPath);
        LoadLibrary(pszCOMDllPath);

        //调用DllGetClassObject,创建IID_IClassFactory总接口
        IClassFactory* pIFactory;
        DllGetClassObject(rclsid, IID_IClassFactory, &pIFactory);
        {
             IClassFactory* pITotalFactory = new IClassFactory;
             pITotalFactory->QueryInterface(IID_IClassFactory, &pIFactory);
        }
        
        //调用CreateInstance创建COM总接口对象
        pIFactory->CreateInstance(pUnkOuter, riid, ppICOMInterface);
        {
             ICOMInterface* pITotalCOMInterface = new ITotalCOMInterface;
        
             //根据接口IID取指定接口对象
            pITotalCOMInterface->QueryInterface(riid, ppICOMInterface);
    }
}



 

posted on   organic  阅读(542)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
点击右上角即可分享
微信分享提示