C# 包装器和受保护内存的问题
所以我现在已经有了一个几乎可以正常工作的包装器。
关于我的包装问题的其他帖子是:
C# 包装器和回调 &
三指针数组的 C# 包装器
我使用包装器建立一个使用以下命令连接到 Dallmeier:
_dallmeier.SessionHandle = DallmeierSDK.dlm_connect(_handle, _ip, "", _pass, null, null, connectionCallback, pInPut)
这将返回会话处理程序。一段时间后,我收到有关尝试读取或写入受保护内存的 AccessVoilationException 异常。
我认为这与使用 Marshal.Read 和/或 Marshal.Copy (如上面的一篇文章所述)有关,但我不确定在哪里使用这些命令。
有人可以就此和/或示例向我提供建议吗?
So I've now progressed to having an almost functioning wrapper.
Other posts regarding my wrapper issues are:
C# wrapper and Callbacks &
C# wrapper for array of three pointers
I use the wrapper to establish a connection to the Dallmeier using the following:
_dallmeier.SessionHandle = DallmeierSDK.dlm_connect(_handle, _ip, "", _pass, null, null, connectionCallback, pInPut)
This returns the session handler. After awhile I get a AccessVoilationException about attempted to read or write protected memory.
I think this has something to do with using Marshal.Read and/or Marshal.Copy (as stated in one of the posts above) but I'm not sure where I use these commands.
Can some please advise me on this and/or examples?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
也许您可以尝试将代码包装在固定块中,以防止在内存中移动指针或被 GC 收集。
maybe you could try wrapping your code in a
fixed
block, to prevent moving the pointer in memory or being GC-collected.