2011-04-19 42 views
0

每一個。我們知道COM服務器存在爲dll或ax。我們可以通過調用CoCreateInstance來使用C​​OM組件。你知道每個COM類都有一個CLSID。我們使用CLSID來創建一個對象。我想回答有多少COM類可以在一個DLL(COM服務器)中實現。只有一個COM有多少班?

+0

「沒有實際限制」 – 2011-04-19 06:29:45

回答

2

單個.dll文件(進程內COM服務器)可以充當COM類的任何理智的數量 - 我們有附帶實現像20種COM類的單個COM服務器的商業產品。

Windows註冊表將映射多個類ID到同一.dll文件的事實不是一個問題 - 每個進程內COM服務器中都有DllGetClassObject()函數傳遞所請求的類ID並檢索正確的類工廠。因此,單個進程內COM服務器凸輪服務於多個COM類。

+0

你的意思是說許多com類(CLSID)存儲在一個dll中。還有在註冊表中的兩個項目,如如下:CLSID_one編輯部地址d:/myCom.dll CLSID_two地址d:/myCom.dll – kenny 2011-04-19 08:49:36

+0

@kenny:是的,這是肯定可以的。這兩個類別ID映射到相同的.dll文件的事實是沒有問題的 - '的DllGetClassObject()'.dll文件內將檢索正確的類工廠。 – sharptooth 2011-04-19 08:53:32

+0

非常感謝。我完全看到了。 – kenny 2011-04-20 02:57:45