MIDL_INTERFACE("00000001-0000-0000-C000-000000000046") IClassFactory : public IUnknown

转载 2012年03月30日 21:17:35
EXTERN_C const IID IID_IClassFactory;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("00000001-0000-0000-C000-000000000046")
    IClassFactory : public IUnknown
    {
    public:
        virtual /* [local] */ HRESULT STDMETHODCALLTYPE CreateInstance( 
            /* [unique][in] */ IUnknown __RPC_FAR *pUnkOuter,
            /* [in] */ REFIID riid,
            /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject) = 0;
        
        virtual /* [local] */ HRESULT STDMETHODCALLTYPE LockServer( 
            /* [in] */ BOOL fLock) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IClassFactoryVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )( 
            IClassFactory __RPC_FAR * This,
            /* [in] */ REFIID riid,
            /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
        
        ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )( 
            IClassFactory __RPC_FAR * This);
        
        ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )( 
            IClassFactory __RPC_FAR * This);
        
        /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *CreateInstance )( 
            IClassFactory __RPC_FAR * This,
            /* [unique][in] */ IUnknown __RPC_FAR *pUnkOuter,
            /* [in] */ REFIID riid,
            /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
        
        /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *LockServer )( 
            IClassFactory __RPC_FAR * This,
            /* [in] */ BOOL fLock);
        
        END_INTERFACE
    } IClassFactoryVtbl;

    interface IClassFactory
    {
        CONST_VTBL struct IClassFactoryVtbl __RPC_FAR *lpVtbl;
    };

MIDL语法详解 (译)

MIDL语法详解 (译) http://www.cnblogs.com/zhy2002/archive/2010/02/06/1665114.html 原文:http://blog.c...
  • dianfeng0344
  • dianfeng0344
  • 2017年01月06日 15:12
  • 737

MIDL示例

【示例1】 IDL是接口定义语言。MIDL是Microsoft的IDL编译器。在用IDL对接口和组件进行了描述后,可以用MIDL进行编译,生成相应的代理和存根DLL的C代码。import “unkno...
  • sunshine1314
  • sunshine1314
  • 2007年04月12日 17:12
  • 7752

基本类型库头文件

 基本类型库头文件由七个部分组成:1. 头部固定正文:由注释、COMDEF.H(定义用在头部的一些标准宏)的#include语句和其它繁杂的安装信息组成。2.前向引用和类型定义:由象struct IM...
  • lhy2199
  • lhy2199
  • 2009年11月11日 17:00
  • 1821

[COM]接口描述语言IDL

一、首先要清楚一点,使用IDL只是定义COM接口的一种方法(用C++也可以定义)。 IDL是一种语言,Microsoft Visual C++提供了MIDL工具,可以将IDL文件编译成C/C++...
  • u010251191
  • u010251191
  • 2016年01月09日 09:58
  • 435

MIDL语法详解 (译)

MIDL语法详解 (译) http://www.cnblogs.com/zhy2002/archive/2010/02/06/1665114.html 原文:http://blog.c...
  • dianfeng0344
  • dianfeng0344
  • 2017年01月06日 15:12
  • 737

通过ATL实现IUnknown接口

每个COM组件需要实现这三个功能 1. 实现IUnknown接口 (通过 CComObjectRootEx 实现) 2. 实现一个类工厂,支持组件的创建 (通过 CComCoClass 实现) ...
  • wishfly
  • wishfly
  • 2013年09月27日 10:10
  • 820

COM教程(0-序章)

COM(Component Object Model,组件对象模型(0)从dll到com问题是,不同语言,不同编译器产生的二进制代码如何交互?还有dll升级问题。一个程序更新版本更改了dll的版本,另...
  • define_us
  • define_us
  • 2015年11月30日 16:12
  • 496

COM主题五--实现IClassFactory接口

Prerequisite:C++ 编程者,熟悉windows编程,熟悉Win32 Dll,了解windows注册表。 作者:收割者...
  • xinzhiyounizhiyouni
  • xinzhiyounizhiyouni
  • 2014年05月13日 08:50
  • 935

COM组件中的 IUnknown接口(1)

COM组件的一个主要优势是:便于升级。要实现这个优势需要满足两个条件: 1>为了更好的突出DLL的优势,还需要信息隐藏,即封装性。 2>运行时客户程序可动态加载和卸载,采用DLL技术可以实现。 ...
  • CNHK1225
  • CNHK1225
  • 2015年05月20日 11:23
  • 545
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:MIDL_INTERFACE("00000001-0000-0000-C000-000000000046") IClassFactory : public IUnknown
举报原因:
原因补充:

(最多只允许输入30个字)