如果我阅读了PostMessage API的说明,则有以下句子:
系统仅编组系统消息(0到(WM_USER-1)范围内的消息)。要将其他消息(那些> = WM_USER)发送到另一个进程,必须进行自定义编组。
我很好奇,“信息编组”是什么?
消息有时在其参数中传递指向内存缓冲区的指针。如果您将内存地址从一个进程原样发送到另一个进程,则该地址在接收进程中的含义将不同。
对于系统消息,如WM_SETTEXT
和WM_COPYDATA
例如,操作系统知道如何与这些邮件的内存缓冲区的工作。在跨进程发送此类消息时,操作系统会在接收进程中自动分配一个适当的内存缓冲区,并用原始数据的副本填充它。然后,在将消息传递到目标消息处理程序之前,将消息参数调整为指向新的内存地址。
对于包含指针的自定义消息,操作系统无法自动为您封送数据,因此您必须执行自己的自定义封送处理。
这就是信息封送处理的目的。以一种安全的方式将外部引用的数据从一个进程复制到另一个进程,以便消息中的任何指针在接收进程的地址空间内都有意义。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句