CoCreateInstance具體內部實現

2021-06-19 13:49:55 字數 2761 閱讀 4125

[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具體內部實現

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

CoCreateInstance具體內部實現

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

CoCreateInstance具體內部實現

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