【问题标题】:How to save pointer in JavaScript and retrieve further如何在 JavaScript 中保存指针并进一步检索
【发布时间】:2019-05-12 05:54:38
【问题描述】:

我在服务器端使用dll 进行一些计算。我使用ffi 模块从nodeJS 调用dll,所以在中间的某个地方我需要保存C pointer 的地址并进一步使用它,但我不知道如何保存它以便我可以在一段时间后将其传递给dll,以便在同一地址上执行操作。

有没有人知道如何做到这一点。

【问题讨论】:

  • 我不确定尝试向节点发送地址是个好主意。
  • @nm_tp 存储句柄的位置,即地址
  • 如果您无法回答问题,请不要给它负面评价。如果你给它负面评价,那么请给出你给这个问题负面评价的正确理由。
  • 您被投了反对票,因为您的问题提供的信息很少。你也没有Minimal working example。关于你在cmets中的问题,我回答了,但由于某种原因被删除了。总而言之,尝试将指针(地址)存储在 dll 本身中。
  • @nm_tp 所以这个理由不足以反对投票,我认为你没有任何工作经验 electronJS 'FFI 模块' 如果你有那么你不会这样说话最好先阅读此主题,然后尝试回答此类问题。祝你好运

标签: c node.js electron ffi ref


【解决方案1】:

经过大量搜索并尝试不同的 2 个场景后,我终于找到了一个解决方案,即如何存储地址并在将来检索以进行进一步操作:-

(注意:- 这里我使用refffi 模块) 所以为了存储指针,创建一个可以保存指针类型的缓冲区,如下所示

     const ref = require('ref');        
     const  ffi = require('ffi');

     var buf = ref.alloc('pointer');
     ref.writePointer(buf, 0, pointer);  // pointer or memory address

所以在这里你将内存地址存储在缓冲区中,你可以从缓冲区中检索它,如下所示:-

     memory_pointer = ref.readPointer(buf,0);   // buf is buffer which we created above, 0 for offset 

现在您获得了memory_pointer,因此您可以使用ffi 模块将其传递给您的函数调用。

【讨论】:

  • 为什么不能直接存储pointer 变量(在块1中)?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-02
相关资源
最近更新 更多