re: bugfix:模板結構的跨平臺差異 tanchuhan 2010-01-09 21:14
沒必要用#pragma pack(1), 自己定義結構時記得對齊就是了,你看Windows里的絕大部分struct都是4字節對齊的(空位可以用reserved命名).
對齊肯定是有很多好處的,不然編譯器干嘛費心去對齊結構里的字段.
re: 安全密碼框的設計 tanchuhan 2009-12-22 21:52
good,樓主寫的很好。
挑點小錯誤:
其實這是跟操作系統有關的,在WIN98下所用的進程是共享一個4GB的虛擬內存的,那個就沒什么你的我的了,所有的都是大家共有的,所以一個進程對另一個進程發送一個WM_GETEXT消息,應為大家都是自己人所以密碼就告你了。但是到了NT后各個進程就鬧分家了,每個進程獨享4GB的虛擬內存,各個進程之間是互相隔離的,所以就沒人理你了。
---------------
Win95/98和NT都是一樣的進程有各自的4G尋址空間(其中前面的1G/2G被系統保留,用來裝載系統DLL什么的)
WM_GETTEXT可以跨進程獲取文本是微軟為了向后(win3x)兼容而作出特別處理的。照常理WM_GETTEXT的lParam非本進程指針,直接寫數據會崩潰。而微軟檢查到這條消息后特別處理,先在本進程new一段緩沖區,等WM_GETTEXT接收者寫完后,再復制回發送者進程的那段緩沖區。然后返回結果。
win9x和NT密碼框對WM_GETTEXT的不同反應是因為后者考慮了安全性,而特意禁止的。
所以這和虛擬內存是否共享無關。