我想让ReadFileEx在js-ctypes中工作,并遇到了将OVERLAPPED结构转换为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} ]);
,但我不知道如何处理的“联盟”,第二结构。
更新。也许这样?
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也许第一次尝试将工作?
在https://developer.mozilla.org/en-US/docs/Web/API/ChromeWorker上担心此注意事项 - 此功能不标准,不在标准轨道上。不要在面向Web的生产站点上使用它:它不适用于每个用户。实现之间也可能存在很大的不兼容性,并且行为在未来可能会发生变化。 – tofutim
将使用ChromeWorker允许我的加载项被批准吗? – tofutim
@ tofutim,该警告是为web开发人员。 ChromeWorkers强烈推荐用于插件,因为它将所有内容都放在主线程中。在未来,一切都将来自ChromeWorker,这就是计划。那么他们表示,他们希望所有的主线程,我想这是一个ChromeWorker。 – Noitidart