javascript - 使用 js-ctypes,如何从 Windows ReadFile 检索输出?

标签 javascript firefox jsctypes

我正在使用(虽然不太确定 lpBuffer -> char.ptr)

  let readFile = kernel32.declare(
    "ReadFile",
    ctypes.winapi_abi,
    ctypes.int32_t,     //bool  // return type: 1 indicates success, 0 failure
    ctypes.voidptr_t,   // in: hObject
    ctypes.char.ptr,  // out: lpBuffer
    ctypes.uint32_t,    // in: lpNumberOfBytesRead
    ctypes.uint32_t.ptr,    // out: lpNumberOfBytesWritten
    ctypes.voidptr_t.ptr    // inout: lpOverlapped
  );

对于

BOOL WINAPI ReadFile(
  _In_        HANDLE       hFile,
  _Out_       LPVOID       lpBuffer,
  _In_        DWORD        nNumberOfBytesToRead,
  _Out_opt_   LPDWORD      lpNumberOfBytesRead,
  _Inout_opt_ LPOVERLAPPED lpOverlapped
);

但是,当我尝试

  let output = ctypes.char.array(1024);
  let isRead = readFile(hFile, output, 1024, bytesWritten.address())

我明白了

JPM [error] Message: TypeError: can't pass ctypes.char.array(1024) to argument 2 of int32_t ReadFile(void*, char*, uint32_t, void**)

更多尝试。

  let output = ctypes.char.array(1024);
  let isRead = readFile(hFile, output.ptr, 1024, bytesWritten.address())

JPM [error] Message: TypeError: can't pass ctypes.char.array(1024).ptr to argument 2 of int32_t ReadFile(void*, char*, uint32_t, void**

  let output = ctypes.char.array(1024);
  let isRead = readFile(hFile, output.address(), 1024, bytesWritten.address())

JPM [error] Message: TypeError: output.address is not a function

  let output = ctypes.char.ptr;
  let isRead = readFile(hFile, output, 1024, bytesWritten.address())

JPM [error] Message: TypeError: can't pass ctypes.char.ptr to argument 2 of int32_t ReadFile(void*, char*, uint32_t, v oid**)

最佳答案

这样就可以了

  let outputType = ctypes.char.array(1024);
  let output = outputType();
  let isRead = readFile(hFile, output, 1024, bytesWritten.address(), null);

关于javascript - 使用 js-ctypes,如何从 Windows ReadFile 检索输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36031573/

相关文章:

javascript - 如何获得一致的数字排序结果?

c - 尝试从 js-ctypes 调用 pam_start 时出现 undefined symbol

javascript - 如何从 firefox-addon/js-ctypes 调用 C++ 类实例?

javascript - 使用 ControllerAs 语法的 Firebase 3 向数据绑定(bind)

c# - 如何在 Internet Explorer 的网页上从 javascript 调用 .Net 控件或类库?

javascript - 为什么 CRM 显示已定义为隐藏的部分?

javascript - 解开包装在 voidptr_t 中的 UInt64

javascript - 使用 Knockout.js 提交后在页面上输出动态表单内容

javascript - 本地存储 Firefox 3.6

html - 变换比例不适用于嵌套在按钮中的元素