问题标签 [marshalling]
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# 有类似 JAX-B 的东西吗?
我们正在寻找一个支持编组和解组的库,如 Java 中的 JAX-B,是否有任何最先进的库可供使用?
c# - 如何获取自定义属性?
我已经使用 2.0 框架尝试了以下代码并且我得到了一个属性,但是当我在紧凑框架上尝试这个时,它总是返回一个空数组。MSDN 文档说它支持,我做错了吗?
.net - 在 VB6 和 .net 之间编组出用户定义类型的数组
我正在创建一个 COM 可调用 .net 程序集,现在尝试从旧版 COM 客户端(在我的情况下为 VB6 客户端)使用它。
程序集应该公开 API 样式接口,因此典型的函数声明如下所示:
问题是当我尝试使用声明为的函数时:
在 VB6 中,这转换为将数组作为参数传递的函数,当我使用“无效的过程调用或参数”调用它时失败。
实际调用如下:
进一步调查后,我尝试了几种不同的方法来使用 MarshalAs 属性标记我的库。从我的角度来看,问题在于参数必须是要传入的数组,另一方面是要返回给 VB 代码的变体。
经过几次实验,我得到了以下工作(1):
(在客户端将 items() 声明为 Object)。
但我必须完全使用我的初始签名(2),
这不适用于 Object 或客户端的 ItemData 数组类型声明。
所以,问题是:
- 为什么(1)有效而(2)无效。我应该在属性声明或客户端中更改什么以使用我的实际签名类型(它也公开了一个已导出到 tlb 的接口,所以这里似乎一切都应该没问题)
- 推荐的定义 sug 的方法[out] 参数数组
- 也许我缺乏一些必要的阅读材料,我会很感激链接......我仍然需要在一两天内让样本工作。
提前致谢。
c# - 序列化/编组/逆向工程未知结构
当您首先不知道该结构是什么时,有没有办法反序列化或编组或以某种方式将字节数组解析回结构?该结构可能来自 C++。
一些背景知识:我有一个 R/C 飞机的飞行模拟器,我正试图弄清楚我是否可以自动化它。没有 API。我知道如何自动化输入。我正在尝试获取程序的输出。(飞机的飞行动力学等)
该模拟器具有多人功能,因此我知道它必须通过网络传递我正在寻找的确切信息。它基于 DirectX 9 构建,并使用 DirectPlay(已弃用的游戏网络协议)进行多人通信。我的猜测是模拟器本身是用 C++ 编写的。
所以,我实际上可以连接到程序并收到一条 13 个字节的消息。伟大的。怎么办。
一般来说,一个逆向工程会如何做这样的事情?
c# - 如果我使用 [MarshalAs(UnmanagedType.LPStr)] 封送空指针会发生什么
如果我尝试编组一个实际上是 NULL 指针的字符串,会发生什么?
vb.net - 在.NET中将结构转换为字节数组
我希望使用 My.Computer.FileSystem.WriteAllBytes 等将由固定长度字符串组成的结构写入文件。
我正在使用已转换为 VB.Net 的固定长度字符串的 VB6 项目。
在 C# 中编组仍然是新手,但我如何将此结构转换为字节数组以写入文件。有一些编组技巧还是我必须编写自定义方法?
.net - C++ .NET 将 System::String 转换为 std::string
如何在 C++ .NET 中将 System::String 转换为 std::string?
ruby-on-rails - Ruby On Rails 中的编组与 ActiveRecord 序列化
Marshalling 和 ActiveRecord 序列化有什么区别?
是否有任何特定情况下最好使用一个而不是另一个将对象保存到数据库中?
c# - 在 C# 中将 CodeElements 编组到 IntPtr
我正在编写一个 Visual Studio 插件,需要将托管 CodeElements 对象编组为非托管形式。我只需要内存中的指针,因为我可以强制转换它并将其视为非托管端的 CodeElement。
我知道如何处理 XML,并且我在 C# 中有一个工作版本。我创建了非托管 DLL,因为在最低级别的递归调用所有各种成员变量会降低程序的速度。我只需要知道如何使用 System.Runtime.Interop.Marshal 将 CodeElements 对象转换为指向内存中 COM 对象的指针。
谢谢。
.net - .NET Marshaler:好的文档?
我目前正在处理一些调用自定义、本机 dll 的 C# 代码。将数据封送回 C# 时,我需要明确对齐用于封送处理的类/结构的字段。由于对 marshaler 及其规则的不完全理解,我遇到了许多问题。例如,我最近通过一个 SO 问题发现封送拆收器要求数组是 DWORD 对齐的。如果我早点知道这一点,它会省去我的一些头痛。
我的问题有两个:
1) 提供此类信息的编组器是否有任何好的文档?
2) 我应该注意哪些其他类似的限制?(例如,是否所有 DWORD 大小的字段都必须是 DWORD 对齐的)?