我有作为从的wParam一个32位C#应用程序传递一个指针的内容问题沿途被改变为64位的C ++程序。
有两个进程32.exe(在C#)和64.exe(在C ++)。 64.exe开始为32.exe的一个子进程。 对于64.exe 32.exe交窗口消息,其中之一具有的wParam是一个指针,指向RECT结构的阵列。 无论64.exe和32.exe有一个共同的DLL(用C ++编写,但编为不同的平台,当然),称为32.DLL和64.dll。
期待一个RECT *在32.DLL函数直接从32.exe具有相同RECT *稍后发布的调用,这个效果很好。 此后,它发布消息给64.exe,它调用相同的功能和注塑的wParam到RECT *:
else if (WM_SetDisabledAreas == message)
{
SetDisabledAreas((RECT*)wParam, (UINT)lParam);
}
的消息发布如下:
if (Is64Bit() && SubProcess64 != null)
{
Win32.PostMessage(SubProcess64.MainWindowHandle, WindowMessages.SetDisabledAreas,
(uint)pointer.ToInt32(), length);
}
MessageBox.Show(pointer.ToString());
DLL32.SetDisabledAreas(pointer, length);
通过调试我已经证实,收到消息,但是wParam参数的地址是不一样的,因为它以前。 这并不令人意外,但记忆的内容,现在指向是不确定的(并试图看看还有什么,当我得到一个访问冲突)。
这是怎么回事吗?