Re: [問題] Media Foundation of COM

看板C_and_CPP (C/C++)作者 (卡馬請出來面對!!)時間13年前 (2012/10/08 09:33), 編輯推噓1(107)
留言8則, 2人參與, 最新討論串2/2 (看更多)
※ 引述《ThomasHuang (命賤如草)》之銘言: : 1.這個專案會產生一個COM元件包在DLL檔裡,還是會是一個單純的DLL檔。 : 我觀察這個專案架構,發現裡面有很多DLL開頭的函式, : 其中包含了DllRegisterserver & DllUnregisterserver, : 並且也有GUID的宣告,所以應該是個COM元件。 : 但是COM元件不是都應該有介面嗎?我找了很久, : 都沒有看到CClassFactory & CGrayscale兩個類別的介面宣告, : 所以這個專案到底是COM元件還是單純的DLL? COM, but it's based on DLL (in-process server) not EXE(out-process server) : 2.Dll開頭的函式,到底是做甚麼用的。 : 一般單純的DLL只會有DllMain,但是這個專案中有很多Dll開頭的函式, : 不知道高手們可不可以為小弟解釋一下,需要這些函式的原因, : 與這些函式的功用。 COM in-process server 需要實作四個 entry DLLRegisterserver, DLLUnregsiterserver DllGetClassObject - real entry DllCanUnloadNow 前兩個會在 type libery 內註冊 com 的 version, directory 等 當 call by name 時, 可以由typelibery找到元件的位置. : 3.這個專案是怎麼開出來的。 : 小弟使用VS2010分別開啟新的DLL專案與ATL專案, : 想藉由觀察全新的專案來判斷這個專案屬於哪一種, : 但是開出來的都與這個專案不同,這讓我非常的疑惑, : 到底這個專案是怎麼做出來的,還是說是需要自己刻出來, : 無法使用專案範本? vs2010 ATL template 自己產生對應的 function : 4.這樣的專案要怎麼除錯 : 這不是一般常見的專案,為了方便除錯經常會用到單步執行功能, : 想請問一下這種專案要怎麼單步執行以除錯呢? 要自己 create 一個 host, in-process server 是由 host 啟動而非 自己啟動. 故要有一個 host 作 debug 宿主 REF: http://msdn.microsoft.com/en-us/library/f1tkezh9(v=vs.71).aspx -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 42.72.131.130

10/08 11:52, , 1F
還想請問 DllAddRef & DllRelease 又是做什麼的呢
10/08 11:52, 1F

10/08 11:52, , 2F
ATL專案範本中沒有這兩個函式
10/08 11:52, 2F

10/08 14:19, , 3F
非標準 in-process server method. 內部用來避免二次進入
10/08 14:19, 3F

10/08 14:19, , 4F
他自己內部的method,怕兩次呼叫 DLL 會有問題.
10/08 14:19, 4F

10/08 16:09, , 5F
想再請教一下 我開新的ATL專案 加入一個ATL Simple
10/08 16:09, 5F

10/08 16:09, , 6F
Object 但是並沒有地方可以設定Clsaa繼承的介面
10/08 16:09, 6F

10/08 16:10, , 7F
所以在ATL專案要新增一個Object並繼承特定介面
10/08 16:10, 7F

10/08 16:10, , 8F
要在哪裡設定呢
10/08 16:10, 8F
文章代碼(AID): #1GSYr_fN (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1GSYr_fN (C_and_CPP)