2008-11-12 61 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