作成した別のプロセスに構造体へのポインターを渡そうとしています... ポインターを送信しているプロセスで無効なポインターエラーしか得られません... これは.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)
LParam でメッセージを受信するために、2 番目のプロセスで WinProc をオーバーライドしています。
EngineSettings = CType(Marshal.PtrToStructure(ptr, GetType(SettingsStruct)), SettingsStruct)
' Free the unmanaged memory.
Marshal.FreeHGlobal(ptr)
ポインターは両方のプロセス間で同じ値です。2 番目のプロセスのエラーは次のとおりです。
エラー コードは 0xc0000005 です。このエラーは、CLR のバグ、またはユーザー コードの安全でない部分または検証不可能な部分のバグである可能性があります。このバグの一般的な原因には、COM 相互運用機能または PInvoke のユーザー マーシャリング エラーが含まれ、スタックが破損する可能性があります。