问题标签 [unmanaged]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 使用 C# 将非托管结构编组为托管代码
当我从外部应用程序获取时,我需要处理 bytes[] 。外部应用程序也是用 C# 完成的,它们通过 UDP 发送字节。他们正在发送从 struct 转换而来的字节,如下所述:
所以,当我得到字节时,我需要取出里面的 char[],然后从那个 char[] 中取出字符串。
我是这种非托管编码的新手。
c# - 如何找到父非托管win32应用程序的孩子
基本上,我正在寻找一种在 C# 中调用的 win32 方法,以将焦点设置为非托管应用程序的子级。
但首先我需要找到问题所在的子控件的句柄。任何有用的win32函数来解决这个问题?
c# - 从非托管 c++ 代码调用托管 c# 组件,我如何定义配置
我想从非托管 C++ 服务调用 C# 组件。我需要设置 C# 组件期望的配置项。应该配置什么名称以及它应该位于哪里。
例如。父文件夹\cplusplusservice.exe
另一个文件夹\csharp.dll
我需要 csharp.dll.config 或它的等价物。
谢谢,
vb.net - 我可以在不需要引用每个资源的情况下处置这些非托管资源吗?
我有一个类 bMainframe,它管理与 4 个不同大型机的连接。它允许以特定方式打开相同的底层非托管库,并且一次可以连接多个大型机。每个库都有自己的非托管大型机连接资源的处置代码。包装器还具有调用各个大型机连接的处理代码的代码。
如果某人的项目没有使用所有 4 个大型机,而是调用包装器上的处置,这会导致错误。(FileLoadException 无法加载 4 个托管大型机的程序集 X)因为该处置代码检查 4 个中的哪一个不是空的/空的。即使没有任何内容/null,这也会导致 .net 尝试加载程序集并崩溃。
外包装中的处理代码是否有用或必要?有没有办法检查一个类型的程序集是否已加载,但不会触发.net 加载类型/程序集?
我修改了下面的代码以阻止 fileloadexception,但我不认为这是最好的方法。
.net - 如何从 Windows 中的非托管 C++ 代码调用托管 .NET 代码,反之亦然?
我有一个使用 VC 6.0 开发的纯 C++ 应用程序。我希望这个应用程序能够使用用 C# 开发的库。如何从我的本机可执行文件调用 C# 库中的方法?我不想将我的非托管 C++ 本机应用程序转换为托管代码。同样,我该如何做相反的事情?PInvoke 是唯一的选择吗?我将不胜感激任何相同的参考或指针。
c# - 如何检查我的解决方案是否有非托管代码?
我们有很多人在做一个项目。如果它有任何非托管代码或非类型安全代码,是否有任何工具可以扫描并检查我的整个解决方案?
目标是使用完全托管的代码托管整个解决方案,找到漏洞并将其修复为类型安全和托管的代码。
我需要考虑和处理哪些常见漏洞?
谢谢。
windows - Howto:多个版本的 msvcrt9 作为私有 SxS 程序集?
我有一个包含预构建 Dll 模块的项目,该模块是在过去一段时间内使用 Visual Studio 9 构建的。
现在使用 Visual Studio 9 的 SP1 构建项目的 EXE。
当我们部署 EXE 时,我们不希望需要管理访问权限,因此 C-Runtime 已捆绑到应用程序的根目录中。Dll:MSVCRT90.DLL 及其清单:Microsoft.VC90.CRT.manifest
现在,运行时清单的 EXE 和最新版本都一致了 - 应用程序清单要求 msvcrt.dll 的 9.0.30729.1,crt-manifest 包含确认 msvcrt90.dll 版本为 9.0.30729.1 的条目
现在,一个问题。我们的应用程序使用的第 3 方 DLL 库与原始 msvcrt90.dll 版本 9.0.21022.8 相关联,并且具有此效果的内部清单。
在我们安装了两个版本的 VS9 CRuntime 的开发 PC 上,该应用程序可以正常工作。在我们首次安装应用程序的“新”PC 上 - DLL 无法加载。
现在,我可以做一些作弊 - 一个是将应用程序恢复到 9.0.2 - 从原始源媒体中获取 9.0.2 DLL。这是不可取的,因为 9.0.3 更可取。或者我非常努力地重建第 3 方库。
我还非常确定,在我们的开发 PC 上,当第 3 方库请求旧 dll 时,它会被重定向到新 dll - 它们是二进制兼容的。
应用程序清单和程序集旨在将我们所有人从这种垃圾中拯救出来。必须可以编辑程序集清单文件,以便 exe 和 dll 都可以加载。
c# - 佳能 EDSDK 内存流图像
我一直在与佳能 EDSDK 斗争一段时间。我可以成功地让库将文件直接保存到磁盘,但是,我无法在内存中保存图像字节 []。每当我尝试将 EDSDK Stream Marshal.Copy() 复制到字节 [] 时,我总是收到以下错误:
AccessViolationException:试图读取或写入受保护的内存。这通常表明其他内存已损坏。
以下是我用来尝试获取流的代码变体之一:
断点显示(通过 EdsDirectoryItemInfo 对象)图像确实存在,我只是不知道为什么我会得到我的例外。我一直在玩弄接受失败的想法,只是从磁盘读取结果图像,它很容易通过 CreateFileStream 方法写入,但我真的应该能够在内存中操作图像。
有任何想法吗?
更新:我在 2.5 和 2.6 版本中都看到了这种行为。
c# - C# 中 Marshal.Copy 中的 NUL 字符
我定义了以下方法:
在此方法中,将提供的字符串 (recordInformation) 传递给用 C 编写的方法 (UnmanagedMethod)。根据我对此方法的文档,bufferSize 设置正确;但是, Marshal.Copy 会创建一个大小为 recordInformation.Length 的数组。当我将光线分配给 outputRecord 变量时,字符串的内容就是 bufferSize 的长度;但是,有许多 NUL (Char 0) 来填充字符串的其余部分,直到它到达 recordInformation.Length 字段。如果我将 UnmanagedMethod 参数列表中的最后一个参数更改为 bufferSize,则输出字符串将变为 NUL 字符。
我是在做错误的封送处理,还是在从字节数组创建字符串后有办法删除 NUL 字符?
谢谢
c# - 用不使用 System.Runtime.InteropServices 的东西替换 [StructLayout]?
我没有低级编程经验,我需要这段代码不使用 [StructLayout(LayoutKind.Explicit)]。我的网站在共享主机上运行并处于中等信任状态。因此,如果此代码在那里,它将不会运行。
更新: 我在八叉树中使用它来量化 png 文件。
有谁知道解决方法?
在此处更新 新问题 =>有什么方法可以安全地进行图像量化且无需编组?