CoCreateInstance具體內部實現

2021-09-01 21:23:48 字數 2702 閱讀 1901

[cpp]view plain

copy

print?

cocreateinstance(....)

cocreateinstance(....) 

這段話的意思就是先得到類廠物件,再通過類廠建立元件從而得到iunknown指標。繼續深入一步,看看cogetclassobject的內部偽碼:

[cpp]view plain

copy

print?

cogetclassobject(.....)

/// dllgetclassobject是幹什麼的,它是用來獲得類廠物件的。只有先得到類廠才能去建立元件.

/// 下面是dllgetclassobject的偽碼:

dllgetclassobject(...)

/// cogetclassobject的流程已經到此為止,現在返回cocreateinstance,看看createinstance的偽碼:

cfactory::createinstance(.....)

cogetclassobject(.....) 

/// dllgetclassobject是幹什麼的,它是用來獲得類廠物件的。只有先得到類廠才能去建立元件.

/// 下面是dllgetclassobject的偽碼:

dllgetclassobject(...)

/// cogetclassobject的流程已經到此為止,現在返回cocreateinstance,看看createinstance的偽碼:

這部分我們將構造乙個建立com元件的最小框架結構,然後看一看其內部處理流程是怎樣的

[cpp]view plain

copy

print?

iunknown*punk=null;

iobject*pobject=null;

coinitialize(null);

cocreateinstance(clsid_object,clsctx_inproc_server,null,iid_iunknown,(void**)&punk);

punk->queryinte***ce(iid_iojbect,(void**)&pobject);

punk->release();

pobject->func();

pobject->release();

couninitialize();

iunknown *punk=null;

iobject *pobject=null;

coinitialize(null);

cocreateinstance(clsid_object, clsctx_inproc_server, null, iid_iunknown, (void**)&punk);

punk->queryinte***ce(iid_iojbect, (void**)&pobject);

punk->release();

pobject->func();

pobject->release();

couninitialize();

[cpp]view plain

copy

print?

cocreateinstance(....)

cocreateinstance(....)

這就是乙個典型的建立com元件的框架,不過我的興趣在cocreateinstance身上,讓我們來看看它內部做了一些什麼事情。以下是它內部實現的乙個偽**:

[cpp]view plain

copy

print?

cogetclassobject(.....)

dllgetclassobject是幹什麼的,它是用來獲得類廠物件的。只有先得到類廠才能去建立元件.

下面是dllgetclassobject的偽碼:

dllgetclassobject(...)

cogetclassobject的流程已經到此為止,現在返回cocreateinstance,看看createinstance的偽碼:

cfactory::createinstance(.....)

cogetclassobject(.....)

dllgetclassobject是幹什麼的,它是用來獲得類廠物件的。只有先得到類廠才能去建立元件.

下面是dllgetclassobject的偽碼:

dllgetclassobject(...)

cogetclassobject的流程已經到此為止,現在返回cocreateinstance,看看createinstance的偽碼:

cfactory::createinstance(.....)

這段話的意思就是先得到類廠物件,再通過類廠建立元件從而得到iunknown指標。繼續深入一步,看看cogetclassobject的內部偽碼:

CoCreateInstance具體內部實現

cpp view plain copy print?cocreateinstance cocreateinstance 這段話的意思就是先得到類廠物件,再通過類廠建立元件從而得到iunknown指標。繼續深入一步,看看cogetclassobject的內部偽碼 cpp view plain copy...

CoCreateInstance具體內部實現

原文出處 cocreateinstance 這段話的意思就是先得到類廠物件,再通過類廠建立元件從而得到iunknown指標。繼續深入一步,看看cogetclassobject的內部偽碼 cpp view plain copy print?cogetclassobject dllgetclassobj...

CoCreateInstance具體內部實現

cocreateinstance 這段話的意思就是先得到類廠物件,再通過類廠建立元件從而得到iunknown指標。繼續深入一步,看看cogetclassobject的內部偽碼 cogetclassobject dllgetclassobject是幹什麼的,它是用來獲得類廠物件的。只有先得到類廠才能去...