将 dll 与 node-ffi 一起使用

2023-12-26

我正在使用 node-ffi 访问我购买的自定义硬件提供的 dll,该 dll 使用设备驱动程序来执行操作,他们不提供 dll 文档,但他们有一个 c# 中的示例应用程序,该 dll 在 c# 中使用像这样:

[DllImport("POS_CIDR.dll", CharSet = CharSet.Unicode)]
private static extern IntPtr CIDR_Info();
...
result = Marshal.PtrToStringUni(CIDR.CIDR_Info());
...

现在我尝试访问CIDR_Info具有以下节点代码的dll函数:

var ffi = require('ffi')
var ref = require('ref')
var int = ref.types.int;
    var libprime = ffi.Library('POS_CIDR.dll', {
  'CIDR_Info': [ int ,[]],
});
console.log(libprime.CIDR_Info()); // 73402156

现在根据我的理解,该函数返回一个包含字符串地址的整数,我如何将该整数取消引用到节点中的字符串? 我找不到任何方法来设置节点中缓冲区的地址。

update

好的,我找到了如何使用以下代码读取该字符串:

var ffi = require('ffi')
var ref = require('ref')
var stringPtr = ref.refType(ref.types.CString);
var int = ref.types.int
var libprime = ffi.Library('POS_CIDR.dll', {
      'CIDR_Info': [ stringPtr ,[]],      
    });
buf = new Buffer(255);
buf=libprime.CIDR_Info();
console.log(ref.readCString(buf, 0));

现在控制台输出p这是字符串的第一个字符,如果我将偏移量设置为 2,它会给出o这是第二个字符,我认为编码存在问题,readCString 在每个字符后面看到一个空字符。 知道如何解决这个问题吗?


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 dll 与 node-ffi 一起使用 的相关文章

  • Firebase 模拟器无法促进/运行新功能

    我有三个云功能 其中两个已部署到我的 firebase 项目中 其中一个是我刚刚添加的 我希望在部署之前在本地测试新的功能 但是当我尝试使用它时却无法使用 并且只有两个已部署的功能可用 Firebase 模拟器在端口上运行良好5001 像往
  • webrtc - 获取网络摄像头的宽高比

    我正在尝试学习如何开发 webRTC 应用程序 我想知道是否可以获得相机的宽高比 我不知道它是否有帮助 但我正在使用 webrtc io 但是 if更好 我可以停止使用它 From MDN https developer mozilla o
  • 确定用户是否在shadow dom之外单击

    我正在尝试实现一个下拉菜单 您可以单击外部将其关闭 下拉列表是自定义日期输入的一部分 并且封装在输入的影子 DOM 内 我想写一些类似的东西 window addEventListener mousedown function evt if
  • 如何在没有数据库的情况下创建AJAX分页?

    是否可以在没有 MySQL 帮助的情况下获取 AJAX 分页页面 难道我不能只添加一个包含我需要显示的文本和标记的 PHP 文件 然后通过单击页码将该内容提供给用户吗 那么可以用纯 jQuery 和 PHP 来实现吗 您会使用什么代码方法来
  • 递归链接 Promise

    我正在开发一个简单的 Windows 8 应用程序 我需要在其中从网站获取一组数据 我正在使用 WinJS xhr 来检索此数据 它返回一个 Promise 然后 我将回调传递到此 Promise 的 then 方法中 该方法为我的回调提供
  • 找不到模块:无法解析 @google-cloud/storage 上的“fs”

    得到Module not found Can t resolve fs 尝试从 GCP Storage 列出存储桶时出错 import Storage from google cloud storage const googleCloud
  • 如何使用 ui-router 中的 ui-sref 将参数传递给控制器

    我需要传递和接收两个参数到我想要转换到的状态ui srefui router 的 例如使用下面的链接将状态转换为home with foo and bar参数 a Go to home state with foo and bar para
  • 有效地获取下拉列表中的选定选项(XHTML Select 元素)

    背景 使用 XHTML Select 元素的下拉列表中有大量选项 数十个 我需要使用 JavaScript 检索所选选项 Problem 目前我正在使用 jQuery selectedCSS 选择器并且它按预期工作 但这种方法效率不高 因为
  • 可点击的进度条

    我正在使用 Angular 并在 JavaScript 的帮助下开发了一个可点击的进度条 这是我能做到的最好的 有没有办法将滑块放置在进度条内但不干扰进度可视化 堆栈闪电战 https stackblitz com edit angular
  • 输入和文本区域可以拖动吗?

    MDN 规范以及我能通过 Google 找到的每个网站都说所有 HTML 元素都可以拖动 然而 在实践中 我发现我无法拖动文本输入或文本区域 即使它们已被禁用 例如 使用以下代码 img src http www placehold it
  • 在流星收集加载时显示加载程序

    我有一个模板 task list 看起来像这样 each tasks gt task each Template task list tasks返回一个集合 在用户界面中 加载似乎需要一些时间 当集合正在加载时 我想显示一个加载指示器 关于
  • 从数据库中给定时间起经过的时间

    我有一个 HTML 表 其中包含从数据库中提取的记录 我正在使用 PHP MySQL 我的表中名为 Timer 的列未从数据库中检索 我需要在此处显示经过的时间 从数据库中的特定时间开始 例如 假设现在的时间是2013年2月21日下午6点2
  • 字符串化 JavaScript 对象

    我正在寻找字符串化一个对象 我想要这样的输出 1 valeur dalebrun usager experttasp date 2013 08 20 16 41 50 2 valeur test usager experttasp date
  • 节点项目的 Azure git 部署失败

    我正在尝试将我的项目部署到azure 它正在失败 这些是我采取的步骤 git init git config core longpaths true git add git commit m initial commit 所有这些都有效 我
  • 通过ajax POST提交两次表单

    插入到mysql using php通过文件调用AJAX 前insert语句php代码执行select查询到查找重复记录并继续insert statement Issue 从ajax调用php文件时 它执行了两次并得到作为重复记录的响应 好
  • 如何使用 javascript 迭代文件系统目录和文件?

    我正在使用 Javascript 编写一个应用程序 该应用程序将与 Phonegap 一起使用来制作 Android 应用程序 我正在使用 Phonegap File API 来读取目录和文件 相关代码如下所示 document addEv
  • 谷歌浏览器不显示一个网站的alert()弹出窗口

    我正在开发一个 javascript 循环 该循环会随着循环的进行而提醒每个键值 为了加快速度 我选中了 阻止此页面创建其他对话框 框 通常这只会抑制一个例程的弹出窗口 但它们还没有回来 在 Google Chrome 中 alert 消息
  • 关于 Node.js Promise then 和 return?

    我对承诺感到困惑 I use 那么就答应没有返回像这样 new Promise resolve reject gt resolve 1 then v1 gt console log v1 new Promise resolve reject
  • 您最喜欢的 JS/CSS 下拉菜单是什么? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 希望在网站上实现一个 只是好奇其他人都使用过什么以及他们有过什么样的体验 EDIT我也不是一个超级粉丝
  • d3.js 更新视觉效果

    我有一个与 d3 js 放在一起的树形图 我通过 getJSON 填充数据 效果很好 但是 我在 setInterval 方法中具有此功能 并且它似乎并没有刷新自身 var treemap d3 layout treemap padding

随机推荐

  • GetHashCode() 在不同的服务器上给出不同的结果?

    我像这样声明了 C 代码行 int hashcode apple GetHashCode 在我的计算机 工作计算机和朋友的计算机上 结果是 1657858284 在开发服务器上 结果是 1548091822 有没有办法让我告诉项目始终使 G
  • 如何使用 Spring Data JPA + Spring Web MVC 避免 JSON 序列化中的延迟获取?

    我有一个在 Spring Web MVC 中使用 Spring Data JPA 和 REST 控制器的解决方案 持久性提供者是 Hibernate 持久层是使用 Spring 存储库构建的 并且在 REST 控制器和存储库之间存在一个服务
  • 从 Sidekiq 作业中获取错误消息

    我想从 sidekiq 作业中获取异常错误消息 当我将 back trace 选项设置为 true 时 它 会重试我的工作 但我想在出现错误时退出工作并获取错误消息 如果我发现该过程成功或失败就足够了 def perform text be
  • XmlReader ReadStartElement 导致 XmlException

    我正在 Silverlight 项目中使用 XmlReader 编写文件读取器 但是 我遇到了一些错误 特别是在 XmlReader ReadStartElement 方法周围 这让我相信我误解了如何在某个地方使用它 基本上 这是我正在使用
  • 超出地理编码 API 的使用限制

    当访问以下链接时 http maps googleapis com maps api geocode json http maps googleapis com maps api geocode json 我得到回应 error messa
  • 检查对象是否类似于数组

    有没有办法检查一个对象是否是 类似数组 就像这些类型的对象一样 数组 废话 类型化数组 Uint8Array 等 当Array isArray is used 参数对象 节点列表 还有一些我一时想不起来的 我想你可以检查是否存在 lengt
  • php - 将数组提取到全局变量中

    提取 手册 http php net manual en function extract php显示您可以提取一个数组 如下所示 extract array one gt 1 two gt 2 变成 一 二 但 extract 函数不返回
  • URLDownloadToCacheFile 失败,HRESULT '-2146697208'

    我在安装 ClickOnce vb net Windows 窗体应用程序时遇到问题 我尝试了本网站上建议的一些解决方案 但没有一个有帮助 我的应用程序是使用 VS2010 NET 4 0 Framework 构建的 并部署到我的开发计算机上
  • Android:解析 HTML 代码块

    我有以下 HTML 代码 我需要对其进行解析以检索玩家姓名和他得分的得分 在本例中为 Ross Taylor 和 9 解析此信息的最佳方法是什么 不想使用 HTML 解析器 REGEX 是最好的方法吗 我知道人们强烈反对这一点 但我只想要这
  • 如何在 C/C++ 中以编程方式查找“Saved Games”文件夹?

    我正在写一个游戏 我计划将保存存储在 保存的游戏 目录中 如何以编程方式查找 已保存游戏 文件夹的位置 它需要在非英语 Windows 上运行 黑客喜欢 USERPROFILE Saved Games不是一个选择 保存的游戏目录可以通过SH
  • 如何有效地随机选择数组项而不重复?

    我知道这个问题有很多形式 但我一直无法找到与我的具体效率问题相关的答案 我有下面的代码 效果很好 我有一个包含 10 个项目的数组 我从中随机选择一个项目 按 Enter 键时 该代码保留了一个由 5 个最近选择组成的数组 这些选择不能随机
  • 在 IE7 中,parent.document.getElementById("...") 为 null 或不是对象

    我做了一些研究 但作为一个 JavaScript 新手 我似乎无法为我的具体情况找到任何有用的东西 我的页面中有一个 iframe 在该 iframe 的文档中 我有以下代码 function fun var slideTitle api
  • 如何使用Jquery获取按钮的id值?

    我有一个带有动态创建的编辑按钮的表格 按钮的 ID 是一个字符串 附加有表内容 ID IE
  • PowerShell 脚本返回意外输出(随机数)

    Problem我正在 PowerShell 中编写一个脚本 将文件上传到 http 服务器 上传成功完成 但执行时在控制台中返回一堆数字 远远超过下面显示的数字 Output 这是我正在运行的脚本 Param Parameter Manda
  • 在 Prolog 中解决文本逻辑难题 - 查找生日和月份

    我正在阅读 7天7种语言 一书 并且已经读到了Prolog章节 作为学习练习 我试图解决一些文本逻辑难题 谜题如下 五姐妹的生日都在不同的月份 并且各自在一周的不同日期 使用下面的线索 确定每个姐妹的生日是在月份和星期几 宝拉出生于三月 但
  • JS:如何检查按钮是否被禁用?

    我想检查按下或未按下的按钮 我怎样才能做到呢 我已经尝试过这样做 但它不起作用 这是我的代码
  • 现在允许重新定义 constexpr 静态数据成员吗? (但不是内联常量)?

    以下代码在 c 14 中的 gcc 和 clang 下均无法编译 但在 c 1z 中编译成功 struct Cls static constexpr int N 0 constexpr int Cls N constexpr int Cls
  • 您将如何在这里使用敏捷? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我是敏捷的大力支持者 但我的一个朋友 他还不知道敏捷 他是管理类型 问我如何规划和开发一个复杂的分布式项目 其中包含数据库层 通信层层 接口以及
  • 使用 Go 获取 Python 版本

    我正在尝试使用 Go 获取我的 Python 版本 import log os exec strings func verifyPythonVersion err exec LookPath python if err nil log Fa
  • 将 dll 与 node-ffi 一起使用

    我正在使用 node ffi 访问我购买的自定义硬件提供的 dll 该 dll 使用设备驱动程序来执行操作 他们不提供 dll 文档 但他们有一个 c 中的示例应用程序 该 dll 在 c 中使用像这样 DllImport POS CIDR