gpt4 book ai didi

javascript - 如何将 OVERLAPPED 结构转换为 js-ctypes?

转载 作者:行者123 更新时间:2023-11-28 06:14:12 25 4
gpt4 key购买 nike

我试图让 ReadFileEx 在 js-ctypes 中工作,但在将 OVERLAPPED 结构转换为 js-ctypes 时遇到了一些障碍。任何有关翻译的提示将不胜感激:

typedef struct _OVERLAPPED {
ULONG_PTR Internal;
ULONG_PTR InternalHigh;
union {
struct {
DWORD Offset;
DWORD OffsetHigh;
};
PVOID Pointer;
};
HANDLE hEvent;
} OVERLAPPED, *LPOVERLAPPED;

这是不对的,但我是从

开始的
const struct_overlapped = new ctypes.StructType("overlapped",
[ {"Internal": ctypes.uint64_t.ptr},
{"InternalHigh": ctypes.uint64_t.ptr},
[ [ {"Offset": ctypes.uint32_t},
{"OffsetHigh": ctypes.uint32_t} ],
{"Pointer": ctypes.voidptr_t} ],
{"hEvent": ctypes.voidptr_t} ]);

但我不确定如何处理“union”和第二个结构。

更新。也许是这样的?

const struct_offset = new ctypes.StructType("offsetStruct",
[ {"Offset": ctypes.uint32_t},
{"OffsetHigh": ctypes.uint32_t} ]);

const struct_overlapped = new ctypes.StructType("overlapped",
[ {"Internal": ctypes.uint64_t.ptr},
{"InternalHigh": ctypes.uint64_t.ptr},
[ {"offsetStruct": ctypes.struct_offset},
{"Pointer": ctypes.voidptr_t} ],
{"hEvent": ctypes.voidptr_t} ]);

但我收到错误

Message: Error: struct field descriptors must contain one property

更新 2。也许第一次尝试会成功?

最佳答案

在进入重叠结构和完成例程之前,这些同步阻塞 API(例如 WinAPI、COM、Objective-C、GTK、XCB、X11 等)的解决方案是使用 Works。

请注意,GTK、ObjC 和 X11 中的一些回调必须位于主线程上。由于无法修复的错误,无法使用dispatch_queue在工作线程的主线程上设置回调。

Windows 充满乐趣, worker 们不费吹灰之力。

我个人很喜欢 PromiseWorkers - https://developer.mozilla.org/en-US/docs/Web/API/PromiseWorker - 我对它进行了修改,这样我就可以从 PromiseWorker 的主线程调用函数(你可能不需要这个,所以我不建议从我的插件中复制 PromiseWorker 样板)

关于javascript - 如何将 OVERLAPPED 结构转换为 js-ctypes?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36113106/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com