2008-11-12 20 views
0

根據MSDN的SendMessage API在64位

返回值指定結果的消息處理的 ;它取決於發送的消息 。

我知道它被定義爲

typedef LONG_PTR LRESULT; 

,也就是說它會在64位計算機上的8個字節,但它不會!

有誰知道假設只使用較低的4字節並將其存儲爲INT(例如)是否安全。

回答

4

不,它不安全,因爲返回值是由發送的消息和處理程序定義的。

如果你控制處理程序和消息,那麼它是可能的,這在一般情況下是不安全的。

James

1

不,它一般不安全。不要認爲沮喪。另外,有用的是用/ RTCc編譯你的代碼,這可以確保無意的強制轉換在運行時被聲明。

1

絕對不安全。如果消息返回確實是一個指針,指針的第33位就很可能被設置 - 特別是在內存大於4GB的機器上。

+0

由於內存虛擬化,這可能也會發生在小於4GB的情況下。 – efotinis 2008-11-18 10:10:51