我正在尝试将指向结构的指针传递给我创建的另一个进程……我在发送指针的进程中除了无效指针错误什么也没有得到……这在.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)
指针在两个进程之间是相同的值,这里是第二个进程中的错误:
错误代码为 0xc0000005。此错误可能是 CLR 中的错误或用户代码的不安全或不可验证部分中的错误。此错误的常见来源包括 COM 互操作或 PInvoke 的用户封送错误,这可能会损坏堆栈。