討論區快速選單
知識庫快速選單
網路投保旅行平安險 軟體開發過程中有哪些資安漏洞? 掌握Salesforce雲端管理秘訣
[ 回上頁 ] [ 討論區發言規則 ]
相同的使用空間?
更改我的閱讀文章字型大小
作者 : lantin(HeroADA)
[ 貼文 14 | 人氣 1066 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2002/5/16 下午 02:10:33
Dear sir,

我用ATL寫了一個in-process server (DLL) 控制硬體裝置,
而我想讓每一個正在工作的DLL使用相同的位址空間,
如此便可以得到相同的變數值.

因為它的規格標明第一個被建立的DLL必須宣告使用權後, 方可使用硬體,
而若有第二個DLL被建立而欲使用, 也必須宣告使用權,
若此時第一個DLL尚未釋放使用權則無法使用,
此時回傳錯誤, 或繼續等待, 直到第一個DLL釋放使用權.

請問這樣的功能我該用什麼技巧來實作較好呢?  謝謝!
作者 : lantin(HeroADA)
[ 貼文 14 | 人氣 1066 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2002/5/18 下午 01:56:36
自問自答, 真是不好意思!

目前使用ShareMemory及Mutex解決了目前的問題,
不過還是感謝各位囉!
如果有另外較好的方法, 還是希望指點一下.
作者 : good(估得)
[ 貼文 146 | 人氣 225 | 評價 480 | 評價/貼文 3.29 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2002/5/18 下午 10:59:08

>Dear sir,
>
>我用ATL寫了一個in-process server (DLL) 控制硬體裝置,
>而我想讓每一個正在工作的DLL使用相同的位址空間,
>如此便可以得到相同的變數值.
>
>因為它的規格標明第一個被建立的DLL必須宣告使用權後, 方可使用硬體,
>而若有第二個DLL被建立而欲使用, 也必須宣告使用權,
>若此時第一個DLL尚未釋放使用權則無法使用,
>此時回傳錯誤, 或繼續等待, 直到第一個DLL釋放使用權.
>
>請問這樣的功能我該用什麼技巧來實作較好呢?  謝謝!

你是想要共享資源,為什麼不考慮用exe或是service來包裝這項資源?

作者 : lantin(HeroADA)
[ 貼文 14 | 人氣 1066 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2002/5/21 下午 05:50:38
可否描述一下為何Exe或Service可以達到同樣的功能?
因為才剛上手沒多久!

而且執行Exe時, 它自己不也是擁有獨立的記憶體空間,
那如果有許多的Exe同時被執行, 它如何得知同一個變數值?

那Service又有何不同啊? 這個就不太了解了.

幾個問題還煩請幫忙一下, 謝謝!
作者 : good(估得)
[ 貼文 146 | 人氣 225 | 評價 480 | 評價/貼文 3.29 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2002/5/21 下午 09:58:43

>可否描述一下為何Exe或Service可以達到同樣的功能?
>因為才剛上手沒多久!
>
>而且執行Exe時, 它自己不也是擁有獨立的記憶體空間,
>那如果有許多的Exe同時被執行, 它如何得知同一個變數值?
>
>那Service又有何不同啊? 這個就不太了解了.
>
>幾個問題還煩請幫忙一下, 謝謝!

com物件的執行檔有兩種形式,一種是dll,一種是exe,對於client來說,使用com物件的方式沒有什麼不一樣

如果你使用dll的形式,任何有使用到你這個物件的應用程式就會將com物件的dll包含進來,連帶的也會讓deiver的dll包含進來,這時候driver就不一定能正常的工作

如果你使用exe的形式,而你的物件就只會在這個exe檔裡面執行,所以driver的dll也只會在這個exe檔裡面被含入,也就不會有相衝突的問題,只是你必須自己做資源的管理

如果很不幸的有人在你執行這個exe之前就先使用這driver的dll,為了避免這種狀況,這時候你可以考慮將exe包裝成服務程式,一開機的時候就會執行這個exe,然後你就可以將driver的資源霸佔起來

其實還有一種com物件的包裝,就是sct檔,有興趣的話可以查一查msdn
作者 : lantin(HeroADA)
[ 貼文 14 | 人氣 1066 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2002/5/22 上午 11:06:55
非常感謝您的解答, 獲益良多!

前些天去買了一本"COM本質論", 要開始研究一下COM的精神了!
 板主 : 徵求中
 > COM/DCOM - 討論區
 - 最近熱門問答精華集
 - 全部歷史問答精華集
 - COM/DCOM - 知識庫
  ■ 全站最新Post列表
  ■ 我的文章收藏
  ■ 我最愛的作者
  ■ 全站文章收藏排行榜
  ■ 全站最愛作者排行榜
  ■  月熱門主題
  ■  季熱門主題
  ■  熱門主題Top 20
  ■  本區Post排行榜
  ■  本區評價排行榜
  ■  全站專家名人榜
  ■  全站Post排行榜
  ■  全站評價排行榜
  ■  全站人氣排行榜
 請輸入關鍵字 
  開始搜尋
 
Top 10
評價排行
COM/DCOM
1 估得 490 
2 nick 120 
3 PLAYER 110 
4 天雲 100 
5 Raynor 80 
6 青衫 60 
7 60 
8 Peter.huang 50 
9 酷小毅 50 
10 Giant 50 
COM/DCOM
  專家等級 評價  
  一代宗師 10000  
  曠世奇才 5000  
  頂尖高手 3000  
  卓越專家 1500  
  優秀好手 750  
Microsoft Internet Explorer 6.0. Screen 1024x768 pixel. High Color (16 bit).
2000-2019 程式設計俱樂部 http://www.programmer-club.com.tw/
0.078125