我想一个指针传递给一个结构来我创造...我得到什么,但无效指针错误,在这个过程中我送指针太另一个进程......这甚至可能在.NET?指针传递到另一个进程
我给发送进程的代码:
' Initialize unmanged memory to hold the struct.
Dim ptrSettings As IntPtr = Marshal.AllocHGlobal(Marshal.SizeOf(EngineSettings))
' Copy the struct to unmanaged memory.
Marshal.StructureToPtr(EngineSettings, ptrSettings, False)
SendMessage(HWND, MSG_SETTINGS_STRUCT, 0, ptrSettings)
我重写Winproc传在第二过程中接收在Lparam型的信息:
EngineSettings = CType(Marshal.PtrToStructure(ptr, GetType(SettingsStruct)), SettingsStruct)
' Free the unmanaged memory.
Marshal.FreeHGlobal(ptr)
指针是两个过程之间的相同值,这里是在第二过程中的误差:
错误代码是0000005。此错误可能是CLR中的错误,也可能是用户代码中不安全或不可验证的部分。此错误的常见来源包括COM-interop或PInvoke的用户编组错误,这可能会破坏堆栈。
我猜你会碰到内存保护,这意味着,你将不得不寻找另一种方式与其他进程通信。除了你的想法本身似乎是一个非常糟糕的主意。 – 2012-08-16 15:41:26
如果你认为这是一个可怜的想法,而不是为什么不建议另一种方法? – devHead 2012-08-16 15:43:21