武漢-Error<errorcpp@qq.com> 16:37:38
嗯
討論一個VC的問題
武漢-Error<errorcpp@qq.com> 16:37:51
夸進(jìn)程的 WM_DATACOPY
武漢-Error<errorcpp@qq.com> 16:38:00
的內(nèi)存管理
武漢-Error<errorcpp@qq.com> 16:38:07
誰先發(fā)言?
南昌-貝貝(1125591) 16:38:29
進(jìn)程內(nèi)沒必要用這個
湖南-VC(215735031) 16:39:03
不知道把clicpsrv服務(wù)關(guān)掉,這個還會不會調(diào)用成功
武漢-Error<errorcpp@qq.com> 16:39:03

那內(nèi)存是那個牛管理的
南昌-貝貝(1125591) 16:39:20
共享內(nèi)存啊
武漢-不語(86990476) 16:39:22

武漢-Error<errorcpp@qq.com> 16:39:30
如果偶沒記錯
武漢-Error<errorcpp@qq.com> 16:39:54
網(wǎng)狐的代碼 是 在把棧上的一塊內(nèi)存的地址
武漢-Error<errorcpp@qq.com> 16:40:08
當(dāng)作copydata結(jié)構(gòu)體的指針域
湖南-VC(215735031) 16:40:16
error再搞網(wǎng)狐?
武漢-Error<errorcpp@qq.com> 16:40:17
sendmessage
武漢-Error<errorcpp@qq.com> 16:40:19
出去的
武漢-Error<errorcpp@qq.com> 16:40:31
這樣就說明
武漢-Error<errorcpp@qq.com> 16:40:43
系統(tǒng) 應(yīng)該接管了這塊內(nèi)存
武漢-Error<errorcpp@qq.com> 16:40:55
誰知道這其中是怎么管理的
湖南-VC(215735031) 16:41:04

武漢-Error<errorcpp@qq.com> 16:41:07
是的,看了好久了。
最近開始看客戶端了
武漢-Error<errorcpp@qq.com> 16:41:34

其實我只關(guān)系生命周期
武漢-Error<errorcpp@qq.com> 16:41:46
無所不能的貝貝神
武漢-Error<errorcpp@qq.com> 16:41:48

南昌-貝貝(1125591) 16:42:13
就是共享內(nèi)存呀
中山-瘋子(510776002) 16:42:03
貝神學(xué)的太快了
武漢-Error<errorcpp@qq.com> 16:42:42
嗯 假設(shè)他就是共享內(nèi)存
那是誰申請 誰釋放的呢?
南昌-貝貝(1125591) 16:42:57
發(fā)送者申請,發(fā)送者釋放
武漢-Error<errorcpp@qq.com> 16:43:56
嗯,假設(shè)是發(fā)送至申請 發(fā)送者釋放
那人家那里放的是一個指針地址,接受的時候咋成了共享內(nèi)存了
偶去看看接收代碼
南昌-貝貝(1125591) 16:44:57
進(jìn)程使用的內(nèi)存都是由系統(tǒng)在物理存儲里面調(diào)撥的....然后映射到這個進(jìn)程的...系統(tǒng)多映射一個進(jìn)程,有什么不可以的咧?
中山-瘋子(510776002) 16:44:55
仙路盡頭誰為峰,一見貝神道成空
武漢-Error<errorcpp@qq.com> 16:45:57
那就是說,發(fā)送的結(jié)構(gòu)體 和 接受的結(jié)構(gòu)體 的那個指針域
武漢-Error<errorcpp@qq.com> 16:46:06
可能不是一個值
武漢-Error<errorcpp@qq.com> 16:46:09
對吧?
南昌-貝貝(1125591) 16:46:18
什么東東
南昌-貝貝(1125591) 16:46:20
聽不懂
湖南-VC(215735031) 16:46:43
A進(jìn)程里發(fā)的數(shù)據(jù)的內(nèi)存地址 跟B接收的內(nèi)存地址
南昌-貝貝(1125591) 16:46:52
發(fā)送的時候把這個結(jié)構(gòu)體中指針指向的內(nèi)存塊(指定大小),映射到目標(biāo)進(jìn)程
中山-瘋子(510776002) 16:47:10
對了,問下如何追蹤到WM_COPYDATA的處理函數(shù),這個問題難了我好久,一直沒有解決
武漢-Error<errorcpp@qq.com> 16:48:11
嗯,貝貝說的原理。偶懂了,偶現(xiàn)在想確認(rèn)下這個現(xiàn)象,,,
比較懶,沒寫測試就直接問了,,,
見諒,,,
武漢-Error<errorcpp@qq.com> 16:48:20
typedef struct tagCOPYDATASTRUCT {
ULONG_PTR dwData;
DWORD cbData;
PVOID lpData;
} COPYDATASTRUCT, *PCOPYDATASTRUCT;
這個結(jié)構(gòu)體的 dwData
中山-瘋子(510776002) 16:48:21
應(yīng)為是在另一個進(jìn)程中,不知怎么辦
湖南-VC(215735031) 16:48:41
恩,你測試的時候順便測試下我那個疑問哈
南昌-貝貝(1125591) 16:48:47
dwData 就是傳一個數(shù)字
武漢-Error<errorcpp@qq.com> 16:48:46
在發(fā)送進(jìn)程的值 和 在另一進(jìn)程中 收到的值
武漢-Error<errorcpp@qq.com> 16:48:52
是不相同的
武漢-Error<errorcpp@qq.com> 16:49:13
湖南 是和我考慮的一個問題吧?
湖南-VC(215735031) 16:49:28
是的,
湖南-VC(215735031) 16:49:42
不過你觀察的是它們通信的過程
武漢-Error<errorcpp@qq.com> 16:49:51
嗯,我看的是現(xiàn)象
湖南-VC(215735031) 16:50:00
我還順帶觀察下這個過程是不是由剪貼板服務(wù)維護(hù)的
中山-瘋子(510776002) 16:50:01
就是另一個進(jìn)程處理WM_COPYDATA的函數(shù)
武漢-Error<errorcpp@qq.com> 16:50:21
還有資源釋放的過程
湖南-VC(215735031) 16:50:33
如果這個服務(wù)關(guān)掉了,還有沒有。
武漢-Error<errorcpp@qq.com> 16:50:38
按照貝貝說的來理解,我就懂了一點了
湖南-VC(215735031) 16:51:15
說到底,還是WINDOWS的內(nèi)存劃分不清晰啊。
湖南-VC(215735031) 16:51:27
共享內(nèi)存,內(nèi)存地址是多少
湖南-VC(215735031) 16:51:57
kernel32.dll 類似這種東東,系統(tǒng)都把它們映射到進(jìn)程的 0x800以上
武漢-Error<errorcpp@qq.com> 16:52:06
send的時候OS只是映射了一下
當(dāng)被映射的內(nèi)存釋放以后,自然數(shù)據(jù)就失效了
不過這還有一個沒解決的問題,數(shù)據(jù)失效了,映射又由誰清理
湖南-VC(215735031) 16:52:23
按貝貝說的說法,剪貼板內(nèi)容也應(yīng)該映射到某個地址。
南昌-貝貝(1125591) 16:52:24
kernel32.dll 類似這種東東,系統(tǒng)都把它們映射到進(jìn)程的 0x800以上
誰說的
湖南-VC(215735031) 16:52:36
默認(rèn)情況
南昌-貝貝(1125591) 16:52:50
0x80000000 以上就錯
武漢-Error<errorcpp@qq.com> 16:52:56

敢在貝爺面前玩小聰明
南昌-貝貝(1125591) 16:53:07
剪貼版不一定是共享內(nèi)存
武漢-Error<errorcpp@qq.com> 16:53:22
貝貝 偶的問題還沒回答完畢呢
映射我理解了
湖南-VC(215735031) 16:53:32
你理解什么了。
武漢-Error<errorcpp@qq.com> 16:53:36
但是這個映射最終還是要被 取消
這一部咋弄
湖南-VC(215735031) 16:53:47
貝貝剛都說了,
QS)V89(9`XBUL_N4D.jpg)
武漢-Error<errorcpp@qq.com> 16:54:03
就是OS沒有拷貝send的數(shù)據(jù),只是把兩個進(jìn)程的地址映射了下
武漢-Error<errorcpp@qq.com> 16:54:26
偶不關(guān)系那個過程,我值關(guān)注數(shù)據(jù)傳遞的結(jié)果
湖南-VC(215735031) 16:54:36
每一個進(jìn)程都可以訪問剪貼板的數(shù)據(jù),
湖南-VC(215735031) 16:54:50
你A進(jìn)程發(fā)送的數(shù)據(jù)肯定也是進(jìn)了剪貼板的
武漢-Error<errorcpp@qq.com> 16:55:02
現(xiàn)在的結(jié)果:
1.沒有傳遞
2.是地址映射
3.系統(tǒng)完成的映射
4.我不知道神馬時候映射被取消
湖南-VC(215735031) 16:55:32
大哥,我們的疑問其實一樣
武漢-Error<errorcpp@qq.com> 16:55:56
否則我大量 發(fā)送DATACOPY 這樣兩個進(jìn)程的數(shù)據(jù)不是全部被映射了,,,
所以,偶要知道這個映射啥時候取消
湖南-VC(215735031) 16:56:15

湖南-VC(215735031) 16:56:22
A B 是進(jìn)程 C是剪貼板
南昌-貝貝(1125591) 16:56:31
QS)V89(9`XBUL_N4D.jpg)
我也不知道怎么解釋,可能我說的不準(zhǔn)確,是因為我要表達(dá)的是
如果你在記事本中復(fù)制一個字符串那是共享內(nèi)存(服務(wù)里面的)
如果你的程序會接收處理剪貼版消息,那會有另一種行為...大多數(shù)人都應(yīng)該見過,在WORD中復(fù)制表格.在詞本中粘貼是純文字 ,在QQ上粘貼是圖像
南昌-貝貝(1125591) 16:56:41
如果單純共享一次.那怎么做得到
湖南-VC(215735031) 16:57:17
我記得在VC中使用WM_COPYDATA 要顯示的指定
武漢-Error<errorcpp@qq.com> 16:57:21

還是沒有解釋 4.映射(共享)啥時候取消嘛
湖南-VC(215735031) 16:57:45
這可能說明了,

南昌-貝貝(1125591) 16:57:47
我知道水神主要的疑問就是 WM_COPYDATA 何時取消映射
只需要回答你(PostMessage->WM_COPYDATA是永不會成功的)
武漢-Error<errorcpp@qq.com> 16:58:20
send返回的時候么
列個是同步的?
武漢-Error<errorcpp@qq.com> 16:58:29
ok我的問題差不多解決了
湖南-VC(215735031) 16:58:31
估計每個進(jìn)程訪問到的剪貼板內(nèi)存都是系統(tǒng)分配的一個”映像“
武漢-Error<errorcpp@qq.com> 16:58:52
VC的 和 ole對象神馬相關(guān) 還有com模型,,,這個話題老大了,,,
南昌-貝貝(1125591) 16:59:13
COM我也是笨蛋, 太久遠(yuǎn)了
湖南-VC(215735031) 16:59:49
我的疑問是,系統(tǒng)給每個進(jìn)程都留了一個后門,可以訪問一塊共同的內(nèi)存?
武漢-Error<errorcpp@qq.com> 17:00:04
ole模型好像是這樣
湖南-VC(215735031) 17:00:23
還是進(jìn)程需要訪問“剪貼板”的時候,顯示的給它映射一個
中山-瘋子(510776002) 17:00:34
追蹤WM_COPYDATA
18U93ZOWB.gif)
武漢-Error<errorcpp@qq.com> 17:01:05
中山-瘋子(510776002) 17:00:34
追蹤WM_COPYDATA
18U93ZOWB.gif)
自己打log
湖南-VC(215735031) 17:01:11
如果是后門,水神你那個A發(fā)起,B收到的就是同一個地址才對
武漢-Error<errorcpp@qq.com> 17:01:13
或者用windbg
武漢-Error<errorcpp@qq.com> 17:01:26
是映射
武漢-Error<errorcpp@qq.com> 17:01:31
不同的進(jìn)程
武漢-Error<errorcpp@qq.com> 17:01:39
地址空間不同
湖南-VC(215735031) 17:01:43
如果是誰用到,給誰映射,那A發(fā)起的被映射到系統(tǒng),再被映射到B進(jìn)程
武漢-Error<errorcpp@qq.com> 17:01:49
是的
武漢-Error<errorcpp@qq.com> 17:01:54
誰send
武漢-Error<errorcpp@qq.com> 17:01:59
歲映射
湖南-VC(215735031) 17:02:18
我現(xiàn)在不好寫測試, 你A發(fā)起的, 剪貼板能看到不
武漢-Error<errorcpp@qq.com> 17:02:34
不然生命周期不好控制
以上是貝神語錄心得
我現(xiàn)在也沒環(huán)境測試,,,
湖南-VC(215735031) 17:03:04
我晚上測試下
湖南-VC(215735031) 17:03:16
如果第三方剪貼板能讀到這部分?jǐn)?shù)據(jù)的話,
武漢-Error<errorcpp@qq.com> 17:03:39
映射是系統(tǒng)控制的,這個不好說
吉林-小伙? 17:03:47
不可能是剪貼板的
湖南-VC(215735031) 17:04:05
小伙想說SendMesaage指定了HWND?
吉林-小伙? 17:04:07
進(jìn)程間通信 有管道 有消息 有剪貼板 有socket 等等
吉林-小伙? 17:04:23
都把消息和剪貼板分開來說了
吉林-小伙? 17:04:48
還有 用SendMessage WM_COPYDATA 數(shù)據(jù)量大會死鎖
吉林-小伙? 17:05:59
WM_COPYDATA就是內(nèi)存映射實現(xiàn)的
中山-瘋子(510776002) 17:06:52
進(jìn)程通信比較好的話就是本機網(wǎng)絡(luò)通信127.0.0.1
成都-祁愿(130048) 17:07:23
命名管道。
武漢-Error<errorcpp@qq.com> 17:07:36
這樣有開銷
武漢-Error<errorcpp@qq.com> 17:07:44
映射是開銷最小的
湖南-VC(215735031) 17:08:06
WM_COPYDATA要指定目標(biāo)HWND
湖南-VC(215735031) 17:08:22
跟所有進(jìn)程都能訪問到的剪貼板方式不一樣
中山-瘋子(510776002) 17:08:23
大數(shù)據(jù)就在磁盤建立個文件,并通過WM_COPYDATA通知對方
南昌-貝貝(1125591) 17:08:54
管道的內(nèi)部實現(xiàn)就是共享內(nèi)存
南昌-貝貝(1125591) 17:09:08
本機管道
武漢-Error<errorcpp@qq.com> 17:09:27
嗯 本地回環(huán)soket呢?
武漢-Error<errorcpp@qq.com> 17:09:35

南昌-貝貝(1125591) 17:09:51
回環(huán)好像也是共享內(nèi)存
南昌-貝貝(1125591) 17:10:03
回環(huán)Socket 連TDI層好像都沒到
吉林-小伙? 17:10:15
TDI?
南昌-貝貝(1125591) 17:10:37
NDIS層一定沒到
南昌-貝貝(1125591) 17:10:46
TDI層不記得...
湖南-VC(215735031) 17:11:19
貝貝,Kner.dll不是映射800地址,那是哪
南昌-貝貝(1125591) 17:11:29
你是說800?
湖南-VC(215735031) 17:11:35
XP是7c8以上
南昌-貝貝(1125591) 17:11:49
我以為你是說 0x80000000
湖南-VC(215735031) 17:11:52
我也說的大概,大概那個段
武漢-Error<errorcpp@qq.com> 17:12:01
好
今天的會議我已經(jīng)做了記錄
武漢-Error<errorcpp@qq.com> 17:12:07
并且發(fā)布到網(wǎng)絡(luò)上了
吉林-小伙 (694129464) 17:12:09
元謀人啊 TDI是什么的縮寫啊?
湖南-VC(215735031) 17:12:14
那剛這個進(jìn)程間的映射話,一般會映射到哪個段
武漢-Error<errorcpp@qq.com> 17:12:14
大家出名了以后不要意外
吉林-小伙 (694129464) 17:12:19
貝貝 TDI是什么的縮寫啊
武漢-Error<errorcpp@qq.com> 17:12:21
可恥的準(zhǔn)備下班了
湖南-VC(215735031) 17:12:27
.data ?
成都-祁愿(130048) 17:12:45
Trandport Driver Interface
南昌-貝貝(1125591) 17:12:50
Transport Driver
南昌-貝貝(1125591) 17:12:54
Interface
武漢-Error<errorcpp@qq.com> 17:13:06
傳輸層
南昌-貝貝(1125591) 17:13:10
網(wǎng)絡(luò)傳輸層接口
吉林-小伙 (694129464) 17:13:14
哦
南昌-貝貝(1125591) 17:13:56
Vista以后不建議關(guān)注它.本來是要取消它的.后來為兼容性沒取消
武漢-Error<errorcpp@qq.com> 17:14:10
傳輸層還是要的吧
啥?
映射還是 copydata
吉林-小伙 (694129464) 17:14:14
以后搞驅(qū)動不行啦
吉林-小伙 (694129464) 17:14:26
麻痹的 還得改成調(diào)試模式才能加載
吉林-小伙 (694129464) 17:14:36
要不就得簽名
吉林-小伙 (694129464) 17:14:41

武漢-Error<errorcpp@qq.com> 17:15:20
物理 鏈路 網(wǎng)絡(luò) 傳輸 會話 應(yīng)用
武漢-Error<errorcpp@qq.com> 17:15:25
還差個神馬?
南昌-貝貝(1125591) 17:15:38
Vista 以后的操作系統(tǒng)微軟提供了 NDIS Filter 接口.嘿嘿.過濾就方便了
吉林-小伙 (694129464) 17:15:38
表示
吉林-小伙 (694129464) 17:15:44
]9PGF.gif)
武漢-Error<errorcpp@qq.com> 17:15:57
物理 鏈路 網(wǎng)絡(luò) 傳輸 會話 表示 應(yīng)用
武漢-Error<errorcpp@qq.com> 17:16:01
嗯 這樣就對了
吉林-小伙 (694129464) 17:16:16
恩
湖南-VC(215735031) 17:16:18
大哥 你搞科研啊
武漢-Error<errorcpp@qq.com> 17:16:24
這個東西還是有用的
南昌-貝貝(1125591) 17:16:32
嘿嘿.這幾個詞,我面試別人的時候,還考別人呢...
(其實自己也答不來)
武漢-Error<errorcpp@qq.com> 17:16:31
比如 本地回環(huán)
武漢-Error<errorcpp@qq.com> 17:16:42
只有端口號其作用
湖南-VC(215735031) 17:16:54
貌似現(xiàn)在WINDOWS通用SOCKET編程簡化了好幾層
武漢-Error<errorcpp@qq.com> 17:16:57
端口號 主要是在應(yīng)用層
武漢-Error<errorcpp@qq.com> 17:17:11
ip地址是網(wǎng)絡(luò)和傳輸層
武漢-Error<errorcpp@qq.com> 17:17:21
學(xué)通了,還是有用的
武漢-不語(86990476) 17:17:22
有很多人就死在這個問題尚
武漢-不語(86990476) 17:17:24
上
武漢-Error<errorcpp@qq.com> 17:17:24
不是完全沒用
吉林-小伙 (694129464) 17:24:49
就沒有我的 哈哈
吉林-小伙 (694129464) 17:24:58
我的是問號 太NB了