私はjs-ctypesで動作する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} ]);
で始めたが、私は「労働組合」と第二の構造体を処理するかどうかはわかりません。 多分このような何か?
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.たぶん、最初の試みは動作しますか?
(あなたは私が私のアドオンからPromiseWorkerボイラープレートのコピーをお勧めしませんので、これを必要としない場合があります)PromiseWorkerからmainthreadから関数を呼び出すことができ、それをハッキングhttps://developer.mozilla.org/en-US/docs/Web/API/ChromeWorkerでこのメモが心配です。この機能は標準ではなく、標準化されていません。ウェブに直面している制作サイトでは使用しないでください。実装間に大きな非互換性があり、今後この動作が変わる可能性があります。 – tofutim
ChromeWorkerを使用すると、アドオンが承認されますか? – tofutim
@tofutim、その警告はWeb開発者向けです。 ChromeWorkerはアドオンに強く推奨されています。これは、すべてのスレッドをメインスレッドから外すためです。将来的にはすべてがChromeWorkerからのものになります。これが計画です。まあ、彼らは、彼らは私がChromeWorkerだと思うメインスレッドからすべてを望んでいると言いました。 – Noitidart