gpt4 book ai didi

c++ - 什么是 Win32 消息编码?

转载 作者:可可西里 更新时间:2023-11-01 10:53:59 28 4
gpt4 key购买 nike

如果我阅读 PostMessage 的描述API,它有这样一句话:

The system only does marshalling for system messages (those in the range 0 to (WM_USER-1)). To send other messages (those >= WM_USER) to another process, you must do custom marshalling.

我很好奇“消息编码”是什么?

最佳答案

消息有时会在其参数中传递指向内存缓冲区的指针。如果您按原样从一个进程向另一个进程发送内存地址,则该地址在接收进程中将具有不同的含义。

对于系统消息,例如 WM_SETTEXTWM_COPYDATA,操作系统知道如何使用这些消息的内存缓冲区。当跨进程发送这样的消息时,操作系统会自动在接收进程中分配一个合适的内存缓冲区,并用原始数据的拷贝填充它。在将消息传递给目标消息处理程序之前,消息参数将相应地调整为指向新的内存地址。

对于包含指针的自定义消息,操作系统无法自动为您编码数据,因此您必须执行自己的自定义编码。

这就是消息编码的意义所在。以一种安全的方式将外部引用的数据从一个进程复制到另一个进程,以便消息中的任何指针在接收进程的地址空间内都有意义。

关于c++ - 什么是 Win32 消息编码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24196524/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com