簡體   English   中英

在沒有regsvr32的情況下從文件創建COM對象

[英]Create COM object from file without regsvr32

是否可以僅使用dll而不使用regsvr32創建COM對象的實例?

我的主要目標是創建一個directshow過濾器的實例並將其插入到我的圖形中 - 但我不想讓regsvr32注冊過濾器。 過濾器將在一個dll / ax中,將與我的應用程序一起分發,並將出現在我的路徑中。 我也會知道CLSID。

所以我基本上只需要一個方法來創建一個類型的實例,同時只有dll / ax和CLSID。 這可能在C#中嗎?

聽起來你想使用免注冊COM

有可能,LoadLibrary()和GetProcAddress獲取DllGetClassObject()入口點。 您繞過了一堆旨在讓您陷入成功陷阱的COM管道代碼。 特別是那些照顧ThreadingModel的東西。 或者你可以用來制作32位代碼的技巧在64位進程中運行,對於視頻而言往往很重要。

使用帶有清單的無reg COM可以讓你重新回到那個坑。

當您創建COM實例時,Windows會在注冊表中查找,找出要加載的dll,如何加載它,然后加載dll並找到您要查找的類。 如果你想跳過這個查找算法,那么你必須實現它,我不認為這很容易。 但肯定可行。

更新:尋找CoLoadLibrary功能,也許它畢竟不是那么難。 我認為COM服務器在加載時調用CoRegisterClassObject,這就是Windows找到它們的方式,你可以調用CoGetClassObject。 不過,我仍然處於黑暗中,所以請繼續閱讀MSDN。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM