读书人

CoCreateInstance的dwClsContext参数感

发布时间: 2013-09-25 11:02:59 作者: rapoo

CoCreateInstance的dwClsContext参数感觉没有什么意义啊
我们在制作一个com组件的时候,要么是dll的,要么是exe的。当我CoCreateInstance的时候,注册表里面的信息就已经包含了该com服务器是一个dll文件还是一个exe文件,路径都有了。

那么为什么CoCreateInstance的第三个参数仍然可以去指定是进程内的(dll)还是进程外的(exe)?

msdn的解释是:


dwClsContext
[in] Context in which the code that manages the newly created object will run. The values are taken from the enumeration CLSCTX.

typedef enum tagCLSCTX {
CLSCTX_INPROC_SERVER = 0x1,
CLSCTX_INPROC_HANDLER = 0x2,
CLSCTX_LOCAL_SERVER = 0x4,
CLSCTX_INPROC_SERVER16 = 0x8,
CLSCTX_REMOTE_SERVER = 0x10,
CLSCTX_INPROC_HANDLER16 = 0x20,
CLSCTX_RESERVED1 = 0x40,
CLSCTX_RESERVED2 = 0x80,
CLSCTX_RESERVED3 = 0x100,
CLSCTX_RESERVED4 = 0x200,
CLSCTX_NO_CODE_DOWNLOAD = 0x400,
CLSCTX_RESERVED5 = 0x800,
CLSCTX_NO_CUSTOM_MARSHAL = 0x1000,
CLSCTX_ENABLE_CODE_DOWNLOAD = 0x2000,
CLSCTX_NO_FAILURE_LOG = 0x4000,
CLSCTX_DISABLE_AAA = 0x8000,
CLSCTX_ENABLE_AAA = 0x10000,
CLSCTX_FROM_DEFAULT_CONTEXT = 0x20000,
CLSCTX_ACTIVATE_32_BIT_SERVER = 0x40000,
CLSCTX_ACTIVATE_64_BIT_SERVER = 0x80000
} CLSCTX;

问题是加载这个com组件文件的时候系统就已经能知道它是dll还是exe了啊。那这个参数到底什么时候有用呢?

分享到:
[解决办法]

引用:
Quote: 引用:

进程内外,只是靠dll或者exe来确定的吗?


我初学,目前是这样理解的。错在哪里呢? dll是要被进程加载的就是进程内? exe因为是另一个进程,所以算是进程外?

还请大侠斧正!非常困惑的一个问题。

还有DCOM方式,可以去看看

读书人网 >VC/MFC

热点推荐