quickwin 3.0.0 → 3.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.en.md +3 -0
- package/README.md +2 -0
- package/lib/abort.d.ts +21 -0
- package/lib/assert.d.ts +2 -0
- package/lib/bitmap.d.ts +7 -0
- package/lib/cache-utils.d.ts +6 -0
- package/lib/certs.d.ts +1 -0
- package/lib/dpi.d.ts +9 -0
- package/lib/dumpRects.d.ts +2 -0
- package/lib/exec-log.d.ts +23 -0
- package/lib/fetch.d.ts +4 -0
- package/lib/ffi/bind.d.ts +70 -0
- package/lib/ffi/ctype.d.ts +117 -0
- package/lib/ffi/index.d.ts +2 -0
- package/lib/ffi/struct.d.ts +174 -0
- package/lib/http-common.d.ts +143 -0
- package/lib/http-server.d.ts +59 -0
- package/lib/polyfill.d.ts +22 -0
- package/lib/react-qw/components/Button.d.ts +9 -0
- package/lib/react-qw/components/CheckBox.d.ts +11 -0
- package/lib/react-qw/components/ComboBox.d.ts +11 -0
- package/lib/react-qw/components/DateTimePicker.d.ts +15 -0
- package/lib/react-qw/components/Input.d.ts +15 -0
- package/lib/react-qw/components/Link.d.ts +12 -0
- package/lib/react-qw/components/ListBox.d.ts +13 -0
- package/lib/react-qw/components/ListView.d.ts +37 -0
- package/lib/react-qw/components/PathPicker.d.ts +23 -0
- package/lib/react-qw/components/ProgressBar.d.ts +9 -0
- package/lib/react-qw/components/RadioButton.d.ts +11 -0
- package/lib/react-qw/components/ScrollView.d.ts +9 -0
- package/lib/react-qw/components/Slider.d.ts +12 -0
- package/lib/react-qw/components/Tab.d.ts +14 -0
- package/lib/react-qw/components/Tooltip.d.ts +7 -0
- package/lib/react-qw/components/TreeView.d.ts +18 -0
- package/lib/react-qw/components/index.d.ts +16 -0
- package/lib/react-qw/index.d.ts +24 -0
- package/lib/react-qw/layout.d.ts +29 -0
- package/lib/react-qw/nmhdr.d.ts +1 -0
- package/lib/react-qw/props.d.ts +2 -0
- package/lib/react-qw/reconciler.d.ts +21 -0
- package/lib/stream.d.ts +20 -0
- package/lib/text-codec.d.ts +39 -0
- package/lib/text-measure.d.ts +14 -0
- package/lib/url.d.ts +54 -0
- package/lib/websocket.d.ts +73 -0
- package/lib/windows/{advapi32.ts → advapi32.d.ts} +6 -21
- package/lib/windows/comctl32.d.ts +14 -0
- package/lib/windows/comdlg32.d.ts +4 -0
- package/lib/windows/{gdi32.ts → gdi32.d.ts} +161 -98
- package/lib/windows/{kernel32.ts → kernel32.d.ts} +138 -115
- package/lib/windows/{msimg32.ts → msimg32.d.ts} +11 -14
- package/lib/windows/ntdll.d.ts +5 -0
- package/lib/windows/ole32.d.ts +3 -0
- package/lib/windows/{psapi.ts → psapi.d.ts} +9 -18
- package/lib/windows/{shell32.ts → shell32.d.ts} +25 -24
- package/lib/windows/structs.d.ts +3141 -0
- package/lib/windows/{user32.ts → user32.d.ts} +196 -193
- package/lib/windows/version.d.ts +27 -0
- package/lib/windows/{winspool.ts → winspool.d.ts} +18 -32
- package/package.json +15 -8
- package/qwin-nowasm-x86.exe +0 -0
- package/qwin-nowasm.exe +0 -0
- package/qwin-x86.exe +0 -0
- package/qwin.exe +0 -0
- package/examples/PdfCanvas.js +0 -38
- package/examples/PdfCanvas.tsx +0 -54
- package/examples/execd/main.js +0 -23379
- package/examples/execd/tray.js +0 -192
- package/examples/execd/worker.js +0 -122
- package/examples/pdf_preview2.js +0 -398
- package/examples/pdf_preview2.ts +0 -353
- package/examples/pdf_viewer.js +0 -22515
- package/examples/pdf_viewer.tsx +0 -228
- package/examples/test_gallery.js +0 -18692
- package/examples/test_gallery.tsx +0 -291
- package/examples/test_react_lazy.js +0 -18560
- package/examples/test_react_lazy.tsx +0 -65
- package/examples/test_react_listbox.js +0 -18562
- package/examples/test_react_listbox.tsx +0 -73
- package/examples/test_root_window.js +0 -18532
- package/examples/test_root_window.tsx +0 -41
- package/examples/test_tab.js +0 -18563
- package/examples/test_tab.tsx +0 -77
- package/examples/tray_demo.js +0 -86
- package/examples/tray_demo.tsx +0 -89
- package/lib/abort.ts +0 -69
- package/lib/assert.ts +0 -7
- package/lib/bitmap.ts +0 -39
- package/lib/cache-utils.ts +0 -40
- package/lib/certs.ts +0 -258
- package/lib/dpi.ts +0 -31
- package/lib/dumpRects.ts +0 -34
- package/lib/exec-log.ts +0 -30
- package/lib/fetch.ts +0 -589
- package/lib/ffi/bind.ts +0 -540
- package/lib/ffi/ctype.ts +0 -371
- package/lib/ffi/index.ts +0 -6
- package/lib/ffi/struct.ts +0 -780
- package/lib/http-common.ts +0 -441
- package/lib/http-server.ts +0 -604
- package/lib/polyfill.ts +0 -171
- package/lib/react-qw/components/index.ts +0 -17
- package/lib/react-qw/index.ts +0 -96
- package/lib/react-qw/layout.ts +0 -111
- package/lib/react-qw/nmhdr.ts +0 -7
- package/lib/react-qw/props.ts +0 -41
- package/lib/react-qw/reconciler.ts +0 -379
- package/lib/stream.ts +0 -22
- package/lib/text-codec.ts +0 -171
- package/lib/text-measure.ts +0 -44
- package/lib/url.ts +0 -201
- package/lib/websocket.ts +0 -600
- package/lib/windows/comctl32.ts +0 -20
- package/lib/windows/comdlg32.ts +0 -10
- package/lib/windows/ntdll.ts +0 -11
- package/lib/windows/ole32.ts +0 -9
- package/lib/windows/structs.ts +0 -807
- package/lib/windows/version.ts +0 -35
- package/test/add.wasm +0 -0
- package/test/bench_ffi_callraw.js +0 -235
- package/test/bench_ffi_callraw.ts +0 -235
- package/test/bench_ffi_overhead.js +0 -139
- package/test/bench_ffi_overhead.ts +0 -141
- package/test/bench_sendmessage.js +0 -104
- package/test/bench_sendmessage.ts +0 -100
- package/test/bench_sendmessage_nonnull.js +0 -187
- package/test/bench_sendmessage_nonnull.ts +0 -188
- package/test/complex.wasm +0 -0
- package/test/complex_imports.wasm +0 -0
- package/test/debug/http_server_e2e.js +0 -31
- package/test/debug/minwasm.js +0 -52
- package/test/debug/mupdf_debug.js +0 -86
- package/test/debug/wasm.js +0 -122
- package/test/debug/wasm_export_debug.js +0 -54
- package/test/debug/wasm_names.js +0 -36
- package/test/example.pdf +0 -0
- package/test/global_imports.wasm +0 -0
- package/test/import_func.wasm +0 -0
- package/test/imports.wasm +0 -0
- package/test/mupdf-cdn.js +0 -40
- package/test/mupdf-cdn.ts +0 -43
- package/test/run.js +0 -111
- package/test/run.ts +0 -116
- package/test/sjlj.wasm +0 -0
- package/test/test_basic.js +0 -7
- package/test/test_basic.ts +0 -9
- package/test/test_basic_fetch.js +0 -63
- package/test/test_basic_fetch.ts +0 -59
- package/test/test_brotli.js +0 -48
- package/test/test_brotli.ts +0 -52
- package/test/test_fetch_cache.js +0 -169
- package/test/test_fetch_cache.ts +0 -187
- package/test/test_ffi.js +0 -157
- package/test/test_ffi.ts +0 -170
- package/test/test_ffi_abi.js +0 -290
- package/test/test_ffi_abi.ts +0 -274
- package/test/test_ffi_array.js +0 -116
- package/test/test_ffi_array.ts +0 -141
- package/test/test_ffi_bind.js +0 -656
- package/test/test_ffi_bind.ts +0 -670
- package/test/test_ffi_struct.js +0 -779
- package/test/test_ffi_struct.ts +0 -828
- package/test/test_ffi_struct_layout.js +0 -495
- package/test/test_ffi_struct_layout.ts +0 -543
- package/test/test_ffi_user32.js +0 -103
- package/test/test_ffi_user32.ts +0 -113
- package/test/test_ffi_windows.js +0 -172
- package/test/test_ffi_windows.ts +0 -187
- package/test/test_files.js +0 -102
- package/test/test_files.ts +0 -121
- package/test/test_frame_encoding.js +0 -128
- package/test/test_frame_encoding.ts +0 -132
- package/test/test_gdi_draw.js +0 -681
- package/test/test_gdi_draw.ts +0 -725
- package/test/test_helper.js +0 -91
- package/test/test_helper.ts +0 -88
- package/test/test_http_import.js +0 -96
- package/test/test_http_import.ts +0 -93
- package/test/test_http_server.js +0 -214
- package/test/test_http_server.ts +0 -211
- package/test/test_import_dir.js +0 -4
- package/test/test_import_dir.ts +0 -5
- package/test/test_ipv6.js +0 -134
- package/test/test_ipv6.ts +0 -130
- package/test/test_jsx.js +0 -1314
- package/test/test_meta_url.js +0 -3
- package/test/test_meta_url.ts +0 -4
- package/test/test_mupdf_render.js +0 -51
- package/test/test_mupdf_render.ts +0 -55
- package/test/test_mupdf_twice.js +0 -62
- package/test/test_mupdf_twice.ts +0 -65
- package/test/test_mupdf_wasm.js +0 -39
- package/test/test_mupdf_wasm.ts +0 -32
- package/test/test_net_event.js +0 -57
- package/test/test_net_event.ts +0 -56
- package/test/test_net_fetch.js +0 -384
- package/test/test_net_fetch.ts +0 -373
- package/test/test_net_websocket.js +0 -180
- package/test/test_net_websocket.ts +0 -164
- package/test/test_polyfill.js +0 -144
- package/test/test_polyfill.ts +0 -159
- package/test/test_printer.js +0 -137
- package/test/test_printer.ts +0 -148
- package/test/test_proc.js +0 -141
- package/test/test_proc.ts +0 -163
- package/test/test_react_complex.js +0 -18678
- package/test/test_react_counter.js +0 -18555
- package/test/test_react_flex.js +0 -18871
- package/test/test_react_hidden.js +0 -18560
- package/test/test_react_listview_link.js +0 -18590
- package/test/test_react_notify.js +0 -18797
- package/test/test_react_render.js +0 -18550
- package/test/test_registry.js +0 -74
- package/test/test_registry.ts +0 -95
- package/test/test_sysinfo.js +0 -122
- package/test/test_sysinfo.ts +0 -141
- package/test/test_url.js +0 -173
- package/test/test_url.ts +0 -183
- package/test/test_wasm_basic.js +0 -85
- package/test/test_wasm_basic.ts +0 -73
- package/test/test_wasm_import_global.js +0 -41
- package/test/test_wasm_import_global.ts +0 -45
- package/test/test_wasm_sjlj.js +0 -145
- package/test/test_wasm_sjlj.ts +0 -125
- package/test/test_wasm_types.js +0 -97
- package/test/test_wasm_types.ts +0 -124
- package/test/test_wolfssl_read.js +0 -203
- package/test/test_wolfssl_read.ts +0 -184
- package/test/test_worker.js +0 -21
- package/test/test_worker.ts +0 -24
- package/test/test_worker_concurrent.js +0 -45
- package/test/test_worker_concurrent.ts +0 -56
- package/test/test_worker_data_url.js +0 -46
- package/test/test_worker_data_url.ts +0 -51
- package/test/test_worker_fetch.js +0 -26
- package/test/test_worker_fetch.ts +0 -27
- package/test/test_worker_net.js +0 -69
- package/test/test_worker_net.ts +0 -66
- package/test/test_worker_wasm_concurrent.js +0 -44
- package/test/test_worker_wasm_concurrent.ts +0 -45
- package/test/types.wasm +0 -0
- package/test/worker_fetch.js +0 -13
- package/test/worker_fetch.ts +0 -13
- package/test/worker_helper.js +0 -1
- package/test/worker_helper.ts +0 -1
- package/test/worker_http.js +0 -18
- package/test/worker_http.ts +0 -20
- package/test/worker_import_lib.js +0 -12
- package/test/worker_import_lib.ts +0 -13
- package/test/worker_module.js +0 -16
- package/test/worker_module.ts +0 -17
- package/test/worker_wasm_concurrent.js +0 -22
- package/test/worker_wasm_concurrent.ts +0 -22
|
@@ -1,39 +1,18 @@
|
|
|
1
|
-
// kernel32.dll 绑定(进程 / 管道 / 系统信息子集;品牌约定见 lib/windows/user32.ts 头注释):
|
|
2
|
-
// - 内核对象句柄按用途分品牌:管道/文件 <HFILE>ptr、进程 <HPROCESS>ptr、线程
|
|
3
|
-
// <HTHREAD>ptr、toolhelp 快照 <HSNAPSHOT>ptr(CloseHandle 收宽位直通,与 Process32/
|
|
4
|
-
// Module32 专用消费位自产自收,对齐 <HFIND>ptr/FindClose 先例;CreatePipe 的 HANDLE*
|
|
5
|
-
// 出参槽是缓冲地址非句柄值,仍 <>ptr);
|
|
6
|
-
// CloseHandle/WaitForSingleObject 全家族位保持 <>ptr 收宽(品牌 number 子类型可
|
|
7
|
-
// 直传),异种对象深层互传由运行时句柄有效性判定兜底
|
|
8
|
-
// - 结构位按方向分流(结构定义见 ./structs.ts,布局随进程位宽,struct 按 os.arch 推):
|
|
9
|
-
// STARTUPINFOW 纯入参位注册 encoder → DeepPartial 对象直传;
|
|
10
|
-
// PROCESS_INFORMATION 出参位不注册 → 只收 def 分配的 .ptr,读回走 decode
|
|
11
|
-
// - 缓冲区 / DWORD 出参位用 <BYTE>ptr 直接收 PtrArrayBuffer(DataView / TypedArray 原地读回)
|
|
12
|
-
// - 空指针位(lpApplicationName / lpProcessAttributes 等)传 NULL(来自 ../ffi/ctype.js);
|
|
13
|
-
// 传 JS null/undefined 会在参数槽 fail-loud
|
|
14
|
-
// - 返回值 0 保真(C→JS 不做 0→null);BOOL 型返回 i32,成功 → 非 0,失败 → 0(原因见 GetLastError)
|
|
15
|
-
import { bind, type CodecMap } from '../ffi/bind.js'
|
|
16
|
-
import { STARTUPINFOW } from './structs.js'
|
|
17
|
-
|
|
18
|
-
// dll 名部分应用(工厂转调保泛型 infer,见 lib/windows/user32.ts 头注释)
|
|
19
|
-
const b = <const S extends string, const LE extends CodecMap = {}>(name: string, sig: S, encoders?: LE) =>
|
|
20
|
-
bind('kernel32.dll', name, sig, encoders)
|
|
21
|
-
|
|
22
|
-
// ============ 管道 / 进程 ============
|
|
23
|
-
|
|
24
1
|
/** 建匿名管道
|
|
25
2
|
* @returns 成功 → 非 0
|
|
26
3
|
* @param args_0 hReadPipe 出参槽(读端句柄写回,<>ptr 缓冲地址)
|
|
27
4
|
* @param args_1 hWritePipe 出参槽(写端句柄写回,<>ptr 缓冲地址)
|
|
28
5
|
* @param args_2 lpPipeAttributes 安全属性,传 NULL
|
|
29
6
|
* @param args_3 nSize 管道缓冲字节数,0 = 系统默认 */
|
|
30
|
-
export const CreatePipe
|
|
7
|
+
export declare const CreatePipe: (args_0: import("../ffi/ctype.js").MaybePtr<"">, args_1: import("../ffi/ctype.js").MaybePtr<"">, args_2: import("../ffi/ctype.js").MaybePtr<"">, args_3: number) => number;
|
|
31
8
|
/** 设句柄标志
|
|
32
9
|
* @returns 成功 → 非 0
|
|
33
10
|
* @param args_0 hHandle 文件/管道句柄
|
|
34
11
|
* @param args_1 dwMask 要改的标志位掩码(HANDLE_FLAG_*)
|
|
35
12
|
* @param args_2 dwFlags 标志新值(继承 = 1,不继承 = 0) */
|
|
36
|
-
export const SetHandleInformation
|
|
13
|
+
export declare const SetHandleInformation: (args_0: number & {
|
|
14
|
+
readonly ptrBrand: "HFILE";
|
|
15
|
+
}, args_1: number, args_2: number) => number;
|
|
37
16
|
/** 建进程
|
|
38
17
|
* @returns 成功 → 非 0
|
|
39
18
|
* @param args_0 lpApplicationName 可执行文件路径 string 或 NULL
|
|
@@ -46,26 +25,42 @@ export const SetHandleInformation = /*@__PURE__*/ b('SetHandleInformation', '<HF
|
|
|
46
25
|
* @param args_7 lpCurrentDirectory 工作目录 string 或 NULL
|
|
47
26
|
* @param args_8 lpStartupInfo STARTUPINFOW 对象(cb 必填)
|
|
48
27
|
* @param args_9 lpProcessInformation 出参槽,传 PROCESS_INFORMATION.alloc().ptr */
|
|
49
|
-
export const CreateProcess
|
|
50
|
-
|
|
51
|
-
|
|
28
|
+
export declare const CreateProcess: (args_0: string | import("../ffi/ctype.js").MaybePtr<"WCHAR">, args_1: string | import("../ffi/ctype.js").MaybePtr<"WCHAR">, args_2: import("../ffi/ctype.js").MaybePtr<"">, args_3: import("../ffi/ctype.js").MaybePtr<"">, args_4: number, args_5: number, args_6: import("../ffi/ctype.js").MaybePtr<"">, args_7: string | import("../ffi/ctype.js").MaybePtr<"WCHAR">, args_8: {
|
|
29
|
+
cb?: number | undefined;
|
|
30
|
+
cbReserved2?: number | undefined;
|
|
31
|
+
dwFillAttribute?: number | undefined;
|
|
32
|
+
dwFlags?: number | undefined;
|
|
33
|
+
dwX?: number | undefined;
|
|
34
|
+
dwXCountChars?: number | undefined;
|
|
35
|
+
dwXSize?: number | undefined;
|
|
36
|
+
dwY?: number | undefined;
|
|
37
|
+
dwYCountChars?: number | undefined;
|
|
38
|
+
dwYSize?: number | undefined;
|
|
39
|
+
hStdError?: import("../ffi/ctype.js").MaybePtr<"HFILE"> | undefined;
|
|
40
|
+
hStdInput?: import("../ffi/ctype.js").MaybePtr<"HFILE"> | undefined;
|
|
41
|
+
hStdOutput?: import("../ffi/ctype.js").MaybePtr<"HFILE"> | undefined;
|
|
42
|
+
lpDesktop?: import("../ffi/ctype.js").MaybePtr<""> | undefined;
|
|
43
|
+
lpReserved?: import("../ffi/ctype.js").MaybePtr<""> | undefined;
|
|
44
|
+
lpReserved2?: import("../ffi/ctype.js").MaybePtr<""> | undefined;
|
|
45
|
+
lpTitle?: import("../ffi/ctype.js").MaybePtr<""> | undefined;
|
|
46
|
+
wShowWindow?: import("../../constants.js").ShowWindowCmd | undefined;
|
|
47
|
+
} | import("../ffi/ctype.js").MaybePtr<"STARTUPINFOW">, args_9: import("../ffi/ctype.js").MaybePtr<"PROCESS_INFORMATION">) => number;
|
|
52
48
|
/** 等内核对象就绪
|
|
53
49
|
* @returns WAIT_* 码
|
|
54
50
|
* @param args_0 hHandle 内核对象句柄
|
|
55
51
|
* @param args_1 dwMilliseconds 超时毫秒,0xffffffff = 无限等 */
|
|
56
|
-
export const WaitForSingleObject
|
|
52
|
+
export declare const WaitForSingleObject: (args_0: import("../ffi/ctype.js").MaybePtr<"">, args_1: number) => number;
|
|
57
53
|
/** 取进程退出码(带符号读)
|
|
58
54
|
* @returns 成功 → 非 0
|
|
59
55
|
* @param args_0 hProcess 进程句柄
|
|
60
56
|
* @param args_1 lpExitCode 出参槽,传 Int32Array(1).buffer 读回退出码 */
|
|
61
|
-
export const GetExitCodeProcess
|
|
57
|
+
export declare const GetExitCodeProcess: (args_0: number & {
|
|
58
|
+
readonly ptrBrand: "HPROCESS";
|
|
59
|
+
}, args_1: import("../ffi/ctype.js").PtrArrayBuffer<any> | import("../ffi/ctype.js").MaybePtr<"BYTE">) => number;
|
|
62
60
|
/** 关闭内核对象句柄
|
|
63
61
|
* @returns 成功 → 非 0
|
|
64
62
|
* @param args_0 hObject 任意内核对象 */
|
|
65
|
-
export const CloseHandle
|
|
66
|
-
|
|
67
|
-
// ============ 进程快照(toolhelp)============
|
|
68
|
-
|
|
63
|
+
export declare const CloseHandle: (args_0: import("../ffi/ctype.js").MaybePtr<"">) => number;
|
|
69
64
|
/** 建系统快照;用完 CloseHandle(收宽位直通)
|
|
70
65
|
* @returns 成功 → 快照句柄,失败 → -1(INVALID_HANDLE_VALUE——truthy,判 < 0 非判 0,
|
|
71
66
|
* 同 CreateFile)
|
|
@@ -73,33 +68,42 @@ export const CloseHandle = /*@__PURE__*/ b('CloseHandle', '<>ptr -> i32')
|
|
|
73
68
|
* TH32CS_SNAPMODULE(0x8) 指定进程的模块(跨位宽目标另加 SNAPMODULE32(0x10);
|
|
74
69
|
* 可组合不标枚举)
|
|
75
70
|
* @param args_1 th32ProcessID 目标进程 PID(SNAPPROCESS 传 0 = 忽略) */
|
|
76
|
-
export const CreateToolhelp32Snapshot
|
|
77
|
-
|
|
78
|
-
|
|
71
|
+
export declare const CreateToolhelp32Snapshot: (args_0: number, args_1: number) => number & {
|
|
72
|
+
readonly ptrBrand: "HSNAPSHOT";
|
|
73
|
+
};
|
|
79
74
|
/** 取快照第一个进程
|
|
80
75
|
* @returns 成功 → 非 0,0 = 迭代尽/失败(ERROR_NO_MORE_FILES=18 等,见 GetLastError)
|
|
81
76
|
* @param args_0 hSnapshot 快照句柄(CreateToolhelp32Snapshot 产物,0 拦截)
|
|
82
77
|
* @param args_1 lppe 迭代缓冲:alloc() 后预写 offset0 dwSize = size(见结构 JSDoc),
|
|
83
78
|
* 每轮 PROCESSENTRY32W.decode(buf) 读回,Next 复用同一 buf */
|
|
84
|
-
export const Process32First
|
|
85
|
-
|
|
79
|
+
export declare const Process32First: (args_0: number & {
|
|
80
|
+
readonly ptrBrand: "HSNAPSHOT";
|
|
81
|
+
}, args_1: number & {
|
|
82
|
+
readonly ptrBrand: "PROCESSENTRY32W";
|
|
83
|
+
}) => number;
|
|
86
84
|
/** 取快照下一进程(First 后循环调用);参数同 First
|
|
87
85
|
* @returns 成功 → 非 0,0 = 迭代完毕 */
|
|
88
|
-
export const Process32Next
|
|
89
|
-
|
|
86
|
+
export declare const Process32Next: (args_0: number & {
|
|
87
|
+
readonly ptrBrand: "HSNAPSHOT";
|
|
88
|
+
}, args_1: number & {
|
|
89
|
+
readonly ptrBrand: "PROCESSENTRY32W";
|
|
90
|
+
}) => number;
|
|
90
91
|
/** 取指定进程的第一个模块(可执行 + 已加载 DLL)
|
|
91
92
|
* @returns 成功 → 非 0,0 = 迭代尽/失败
|
|
92
93
|
* @param args_0 hSnapshot 快照句柄(TH32CS_SNAPMODULE 建)
|
|
93
94
|
* @param args_1 lpme 迭代缓冲:alloc() 后预写 offset0 dwSize = size,MODULEENTRY32W.decode 读回 */
|
|
94
|
-
export const Module32First
|
|
95
|
-
|
|
95
|
+
export declare const Module32First: (args_0: number & {
|
|
96
|
+
readonly ptrBrand: "HSNAPSHOT";
|
|
97
|
+
}, args_1: number & {
|
|
98
|
+
readonly ptrBrand: "MODULEENTRY32W";
|
|
99
|
+
}) => number;
|
|
96
100
|
/** 取下一模块;参数同 First
|
|
97
101
|
* @returns 成功 → 非 0,0 = 迭代完毕 */
|
|
98
|
-
export const Module32Next
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
102
|
+
export declare const Module32Next: (args_0: number & {
|
|
103
|
+
readonly ptrBrand: "HSNAPSHOT";
|
|
104
|
+
}, args_1: number & {
|
|
105
|
+
readonly ptrBrand: "MODULEENTRY32W";
|
|
106
|
+
}) => number;
|
|
103
107
|
/** 按 PID 开进程;配对 CloseHandle
|
|
104
108
|
* @returns 成功 → 句柄,失败 → NULL(0 保真)
|
|
105
109
|
* @param args_0 dwDesiredAccess 访问掩码组合:PROCESS_QUERY_INFORMATION(0x400) /
|
|
@@ -107,25 +111,21 @@ export const Module32Next = /*@__PURE__*/ b('Module32NextW',
|
|
|
107
111
|
* (可组合不标枚举)
|
|
108
112
|
* @param args_1 bInheritHandle 句柄继承,传 0
|
|
109
113
|
* @param args_2 dwProcessId 目标 PID(不存在 → NULL) */
|
|
110
|
-
export const OpenProcess
|
|
114
|
+
export declare const OpenProcess: (args_0: number, args_1: number, args_2: number) => import("../ffi/ctype.js").MaybePtr<"HPROCESS">;
|
|
111
115
|
/** 结束进程
|
|
112
116
|
* @returns 成功 → 非 0(自身/无 PROCESS_TERMINATE 权限失败)
|
|
113
117
|
* @param args_0 hProcess 进程句柄(须 PROCESS_TERMINATE 权限)
|
|
114
118
|
* @param args_1 uExitCode 退出码(GetExitCodeProcess 读回;STILL_ACTIVE=259 是系统保留值,
|
|
115
119
|
* 杀进程时避开) */
|
|
116
|
-
export const TerminateProcess
|
|
120
|
+
export declare const TerminateProcess: (args_0: number & {
|
|
121
|
+
readonly ptrBrand: "HPROCESS";
|
|
122
|
+
}, args_1: number) => number;
|
|
117
123
|
/** 取当前进程 PID(互证锚点)
|
|
118
124
|
* @returns 当前进程 PID */
|
|
119
|
-
export const GetCurrentProcessId
|
|
125
|
+
export declare const GetCurrentProcessId: () => number;
|
|
120
126
|
/** 当前进程伪句柄(-1,不需 CloseHandle——OpenProcess 真句柄的零成本替代,纯本进程
|
|
121
127
|
* 场景如 IsWow64Process 探位宽用) */
|
|
122
|
-
export const GetCurrentProcess
|
|
123
|
-
|
|
124
|
-
// ============ 远程内存(跨进程 SendMessage 的输出缓冲)============
|
|
125
|
-
// 普通跨进程 SendMessage **不 marshal 指针**:出参 buffer 写在接收方线程执行,指针值
|
|
126
|
-
// 原样透传——落在本进程地址空间会被 explorer 直接写穿。正解 = VirtualAllocEx 在目标
|
|
127
|
-
// 进程分配 → 发消息 → ReadProcessMemory 读回(见 examples/execd/tray.ts /tray_list 用例)。
|
|
128
|
-
|
|
128
|
+
export declare const GetCurrentProcess: () => import("../ffi/ctype.js").MaybePtr<"HPROCESS">;
|
|
129
129
|
/** 在目标进程地址空间分配内存;配对 VirtualFreeEx
|
|
130
130
|
* @returns 成功 → 远程基址,失败 → 0(0 保真)
|
|
131
131
|
* @param args_0 hProcess OpenProcess 句柄(本场景须 PROCESS_VM_OPERATION(0x8) |
|
|
@@ -134,15 +134,14 @@ export const GetCurrentProcess = /*@__PURE__*/ b('GetCurrentProcess', ' -> <HPRO
|
|
|
134
134
|
* @param args_2 dwSize 字节数(SIZE_T 随位宽 = <>ptr 的 ptr 宽,非指针语义)
|
|
135
135
|
* @param args_3 flAllocationType MEM_COMMIT|MEM_RESERVE(0x1000|0x2000 = 0x3000)
|
|
136
136
|
* @param args_4 flProtect PAGE_READWRITE(0x04) */
|
|
137
|
-
export const VirtualAllocEx
|
|
138
|
-
'<HPROCESS>ptr <>ptr <>ptr u32 u32 -> <>ptr')
|
|
137
|
+
export declare const VirtualAllocEx: (args_0: import("../ffi/ctype.js").MaybePtr<"HPROCESS">, args_1: import("../ffi/ctype.js").MaybePtr<"">, args_2: import("../ffi/ctype.js").MaybePtr<"">, args_3: number, args_4: number) => import("../ffi/ctype.js").MaybePtr<"">;
|
|
139
138
|
/** 释放 VirtualAllocEx 内存(须同一进程句柄)
|
|
140
139
|
* @returns 成功 → 非 0
|
|
141
140
|
* @param args_0 hProcess 同 VirtualAllocEx
|
|
142
141
|
* @param args_1 lpAddress VirtualAllocEx 返回的远程基址
|
|
143
142
|
* @param args_2 dwSize 0(MEM_RELEASE 时必须 0)
|
|
144
143
|
* @param args_3 dwFreeType MEM_RELEASE(0x8000) */
|
|
145
|
-
export const VirtualFreeEx
|
|
144
|
+
export declare const VirtualFreeEx: (args_0: import("../ffi/ctype.js").MaybePtr<"HPROCESS">, args_1: import("../ffi/ctype.js").MaybePtr<"">, args_2: import("../ffi/ctype.js").MaybePtr<"">, args_3: number) => number;
|
|
146
145
|
/** 读目标进程内存(远程 SendMessage 写完 → 本调用读回本地;远程指针字段如托盘
|
|
147
146
|
* dwData 内容的二次解引用同样走这里)
|
|
148
147
|
* @returns 成功 → 非 0(目标地址不可读/句柄无 PROCESS_VM_READ)
|
|
@@ -151,11 +150,7 @@ export const VirtualFreeEx = /*@__PURE__*/ b('VirtualFreeEx', '<HPROCESS>ptr <>p
|
|
|
151
150
|
* @param args_2 lpBuffer 本地接收缓冲,传 BYTE.alloc(n)(DataView/TypedArray 原地读回)
|
|
152
151
|
* @param args_3 nSize 字节数(SIZE_T → <>ptr ptr 宽)
|
|
153
152
|
* @param args_4 lpNumberOfBytesRead 实读字节数出参槽 PtrArrayBuffer(8) 可选,或 NULL */
|
|
154
|
-
export const ReadProcessMemory
|
|
155
|
-
'<HPROCESS>ptr <>ptr <BYTE>ptr <>ptr <>ptr -> i32')
|
|
156
|
-
|
|
157
|
-
// ============ 文件 I/O ============
|
|
158
|
-
|
|
153
|
+
export declare const ReadProcessMemory: (args_0: import("../ffi/ctype.js").MaybePtr<"HPROCESS">, args_1: import("../ffi/ctype.js").MaybePtr<"">, args_2: import("../ffi/ctype.js").PtrArrayBuffer<any> | import("../ffi/ctype.js").MaybePtr<"BYTE">, args_3: import("../ffi/ctype.js").MaybePtr<"">, args_4: import("../ffi/ctype.js").MaybePtr<"">) => number;
|
|
159
154
|
/** 同步读文件 / 管道
|
|
160
155
|
* @returns 成功 → 非 0,管道写端全部关闭后读返回 0(EOF)
|
|
161
156
|
* @param args_0 hFile 文件/管道句柄
|
|
@@ -163,8 +158,9 @@ export const ReadProcessMemory = /*@__PURE__*/ b('ReadProcessMemory',
|
|
|
163
158
|
* @param args_2 nNumberOfBytesToRead 请求读取的字节数
|
|
164
159
|
* @param args_3 lpNumberOfBytesRead 出参槽,传 Uint32Array(1).buffer 读实际字节数
|
|
165
160
|
* @param args_4 lpOverlapped 重叠结构,传 NULL(同步读) */
|
|
166
|
-
export const ReadFile
|
|
167
|
-
|
|
161
|
+
export declare const ReadFile: (args_0: number & {
|
|
162
|
+
readonly ptrBrand: "HFILE";
|
|
163
|
+
}, args_1: import("../ffi/ctype.js").PtrArrayBuffer<any> | import("../ffi/ctype.js").MaybePtr<"BYTE">, args_2: number, args_3: import("../ffi/ctype.js").PtrArrayBuffer<any> | import("../ffi/ctype.js").MaybePtr<"BYTE">, args_4: import("../ffi/ctype.js").MaybePtr<"">) => number;
|
|
168
164
|
/** 创建/打开文件
|
|
169
165
|
* @returns 成功 → 句柄,失败 → INVALID_HANDLE_VALUE(-1——truthy,须 === -1 判失败,
|
|
170
166
|
* 0 由返回位 ! 运行时检查兜底)
|
|
@@ -176,8 +172,11 @@ export const ReadFile = /*@__PURE__*/ b('ReadFile', '<HFILE>ptr! <BYTE>ptr u32 <
|
|
|
176
172
|
* @param args_4 dwCreationDisposition 创建处置 FileCreation.*(互斥单选)
|
|
177
173
|
* @param args_5 dwFlagsAndAttributes 属性:FILE_ATTRIBUTE_NORMAL(0x80) 等(可组合不标)
|
|
178
174
|
* @param args_6 hTemplateFile 模板文件句柄,传 NULL */
|
|
179
|
-
export const CreateFile
|
|
180
|
-
|
|
175
|
+
export declare const CreateFile: (args_0: string | (number & {
|
|
176
|
+
readonly ptrBrand: "WCHAR";
|
|
177
|
+
}), args_1: number, args_2: number, args_3: import("../ffi/ctype.js").MaybePtr<"">, args_4: import("../../constants.js").FileCreation, args_5: number, args_6: import("../ffi/ctype.js").MaybePtr<"">) => number & {
|
|
178
|
+
readonly ptrBrand: "HFILE";
|
|
179
|
+
};
|
|
181
180
|
/** 同步写文件 / 管道
|
|
182
181
|
* @returns 成功 → 非 0(失败原因见 GetLastError)
|
|
183
182
|
* @param args_0 hFile 文件/管道句柄
|
|
@@ -185,68 +184,98 @@ export const CreateFile = /*@__PURE__*/ b('CreateFileW',
|
|
|
185
184
|
* @param args_2 nNumberOfBytesToWrite 写入字节数
|
|
186
185
|
* @param args_3 lpNumberOfBytesWritten 出参槽,传 PtrArrayBuffer(4) 读实际写入字节数
|
|
187
186
|
* @param args_4 lpOverlapped 重叠结构,传 NULL(同步写) */
|
|
188
|
-
export const WriteFile
|
|
187
|
+
export declare const WriteFile: (args_0: number & {
|
|
188
|
+
readonly ptrBrand: "HFILE";
|
|
189
|
+
}, args_1: import("../ffi/ctype.js").PtrArrayBuffer<any> | import("../ffi/ctype.js").MaybePtr<"BYTE">, args_2: number, args_3: import("../ffi/ctype.js").PtrArrayBuffer<any> | import("../ffi/ctype.js").MaybePtr<"BYTE">, args_4: import("../ffi/ctype.js").MaybePtr<"">) => number;
|
|
189
190
|
/** 删除文件
|
|
190
191
|
* @returns 成功 → 非 0 */
|
|
191
|
-
export const DeleteFile
|
|
192
|
+
export declare const DeleteFile: (args_0: string | (number & {
|
|
193
|
+
readonly ptrBrand: "WCHAR";
|
|
194
|
+
})) => number;
|
|
192
195
|
/** 读文件属性掩码
|
|
193
196
|
* @returns 属性掩码(FILE_ATTRIBUTE_DIRECTORY=0x10 / NORMAL=0x80 / READONLY=0x1 等,
|
|
194
197
|
* 可组合不标枚举);失败 → 0xFFFFFFFF(INVALID_FILE_ATTRIBUTES) */
|
|
195
|
-
export const GetFileAttributes
|
|
198
|
+
export declare const GetFileAttributes: (args_0: string | (number & {
|
|
199
|
+
readonly ptrBrand: "WCHAR";
|
|
200
|
+
})) => number;
|
|
196
201
|
/** 建目录(不含中间层级——多级须逐级建)
|
|
197
202
|
* @returns 成功 → 非 0 */
|
|
198
|
-
export const CreateDirectory
|
|
203
|
+
export declare const CreateDirectory: (args_0: string | (number & {
|
|
204
|
+
readonly ptrBrand: "WCHAR";
|
|
205
|
+
}), args_1: import("../ffi/ctype.js").MaybePtr<"">) => number;
|
|
199
206
|
/** 删空目录
|
|
200
207
|
* @returns 成功 → 非 0 */
|
|
201
|
-
export const RemoveDirectory
|
|
208
|
+
export declare const RemoveDirectory: (args_0: string | (number & {
|
|
209
|
+
readonly ptrBrand: "WCHAR";
|
|
210
|
+
})) => number;
|
|
202
211
|
/** 复制文件
|
|
203
212
|
* @returns 成功 → 非 0
|
|
204
213
|
* @param args_2 bFailIfExists 非 0:目标已存在则失败 */
|
|
205
|
-
export const CopyFile
|
|
214
|
+
export declare const CopyFile: (args_0: string | (number & {
|
|
215
|
+
readonly ptrBrand: "WCHAR";
|
|
216
|
+
}), args_1: string | (number & {
|
|
217
|
+
readonly ptrBrand: "WCHAR";
|
|
218
|
+
}), args_2: number) => number;
|
|
206
219
|
/** 移动/改名(可跨卷)
|
|
207
220
|
* @returns 成功 → 非 0
|
|
208
221
|
* @param args_2 dwFlags 标志组合:MOVEFILE_REPLACE_EXISTING(0x1) 覆盖目标、
|
|
209
222
|
* MOVEFILE_COPY_ALLOWED(0x2) 跨卷时允许复制删除(flags 位不标枚举) */
|
|
210
|
-
export const MoveFileEx
|
|
223
|
+
export declare const MoveFileEx: (args_0: string | (number & {
|
|
224
|
+
readonly ptrBrand: "WCHAR";
|
|
225
|
+
}), args_1: string | (number & {
|
|
226
|
+
readonly ptrBrand: "WCHAR";
|
|
227
|
+
}), args_2: number) => number;
|
|
211
228
|
/** 移动文件指针
|
|
212
229
|
* @returns 新偏移(32 位),0xFFFFFFFF = 失败(须 GetLastError 区分
|
|
213
230
|
* 与合法的 0xFFFFFFFF 偏移)
|
|
214
231
|
* @param args_1 lDistanceToMove 偏移(LONG,可负)
|
|
215
232
|
* @param args_2 lpDistanceToMoveHigh 64 位偏移高半(出参双向),32 位够用传 NULL
|
|
216
233
|
* @param args_3 dwMoveMethod 起点 FileSeekFrom.BEGIN / CURRENT / END */
|
|
217
|
-
export const SetFilePointer
|
|
234
|
+
export declare const SetFilePointer: (args_0: number & {
|
|
235
|
+
readonly ptrBrand: "HFILE";
|
|
236
|
+
}, args_1: number, args_2: import("../ffi/ctype.js").PtrArrayBuffer<any> | import("../ffi/ctype.js").MaybePtr<"BYTE">, args_3: import("../../constants.js").FileSeekFrom) => number;
|
|
218
237
|
/** 读文件大小
|
|
219
238
|
* @returns 文件大小(低 32 位);0xFFFFFFFF = 失败(INVALID_FILE_SIZE,须 GetLastError 区分)
|
|
220
239
|
* @param args_1 lpFileSizeHigh 高 32 位出参槽(>4GB 文件),不需要传 NULL */
|
|
221
|
-
export const GetFileSize
|
|
240
|
+
export declare const GetFileSize: (args_0: number & {
|
|
241
|
+
readonly ptrBrand: "HFILE";
|
|
242
|
+
}, args_1: import("../ffi/ctype.js").PtrArrayBuffer<any> | import("../ffi/ctype.js").MaybePtr<"BYTE">) => number;
|
|
222
243
|
/** 按通配模式枚举首个匹配('dir\\*.txt');配对 FindClose
|
|
223
244
|
* @returns 成功 → 查找句柄,失败 → INVALID_HANDLE_VALUE(-1)
|
|
224
245
|
* @param args_0 lpFileName 路径/通配模式 string(禁空)
|
|
225
246
|
* @param args_1 lpFindFileData 出参槽,传 WIN32_FIND_DATAW.alloc().ptr、decode 读回 */
|
|
226
|
-
export const FindFirstFile
|
|
227
|
-
|
|
247
|
+
export declare const FindFirstFile: (args_0: string | (number & {
|
|
248
|
+
readonly ptrBrand: "WCHAR";
|
|
249
|
+
}), args_1: number & {
|
|
250
|
+
readonly ptrBrand: "WIN32_FIND_DATAW";
|
|
251
|
+
}) => number & {
|
|
252
|
+
readonly ptrBrand: "HFIND";
|
|
253
|
+
};
|
|
228
254
|
/** 枚举下一匹配
|
|
229
255
|
* @returns 成功 → 非 0,0 = ERROR_NO_MORE_FILES(枚举完毕) */
|
|
230
|
-
export const FindNextFile
|
|
256
|
+
export declare const FindNextFile: (args_0: number & {
|
|
257
|
+
readonly ptrBrand: "HFIND";
|
|
258
|
+
}, args_1: number & {
|
|
259
|
+
readonly ptrBrand: "WIN32_FIND_DATAW";
|
|
260
|
+
}) => number;
|
|
231
261
|
/** 关闭查找句柄(Find 族专用,不用 CloseHandle)
|
|
232
262
|
* @returns 成功 → 非 0 */
|
|
233
|
-
export const FindClose
|
|
263
|
+
export declare const FindClose: (args_0: number & {
|
|
264
|
+
readonly ptrBrand: "HFIND";
|
|
265
|
+
}) => number;
|
|
234
266
|
/** 取临时目录路径(尾带反斜杠)
|
|
235
267
|
* @returns 写入字符数(不含 NUL,0 失败)
|
|
236
268
|
* @param args_0 nBufferLength 缓冲容量(WCHAR 个数,含 NUL 余量)
|
|
237
269
|
* @param args_1 lpBuffer 接收缓冲,传 WCHAR.alloc(n)、WCHAR.decode 读回 */
|
|
238
|
-
export const GetTempPath
|
|
239
|
-
|
|
240
|
-
// ============ 系统 / 错误 ============
|
|
241
|
-
|
|
270
|
+
export declare const GetTempPath: (args_0: number, args_1: import("../ffi/ctype.js").PtrArrayBuffer<any> | import("../ffi/ctype.js").MaybePtr<"BYTE">) => number;
|
|
242
271
|
/** 取调用线程最近一次 Win32 错误码
|
|
243
272
|
* @returns 最近一次失败的线程局部错误码 */
|
|
244
|
-
export const GetLastError
|
|
273
|
+
export declare const GetLastError: () => number;
|
|
245
274
|
/** 取 System32 目录路径(宽字符)
|
|
246
275
|
* @returns 写入的字符数(不含 NUL,0 失败)
|
|
247
276
|
* @param args_0 lpBuffer 接收缓冲,传 WCHAR.alloc(n)
|
|
248
277
|
* @param args_1 uSize 缓冲容量(WCHAR 个数,含 NUL 余量) */
|
|
249
|
-
export const GetSystemDirectory
|
|
278
|
+
export declare const GetSystemDirectory: (args_0: import("../ffi/ctype.js").PtrArrayBuffer<any> | import("../ffi/ctype.js").MaybePtr<"BYTE">, args_1: number) => number;
|
|
250
279
|
/** 错误码 → 可读文字(GetLastError 的搭档)
|
|
251
280
|
* @returns 写入字符数(0 失败)
|
|
252
281
|
* @param args_0 dwFlags 组合标志:FROM_SYSTEM(0x1000) 系统错误表 | IGNORE_INSERTS(0x200)
|
|
@@ -257,87 +286,81 @@ export const GetSystemDirectory = /*@__PURE__*/ b('GetSystemDirectoryW', '<BYTE>
|
|
|
257
286
|
* @param args_4 lpBuffer 接收缓冲,传 WCHAR.alloc(n)
|
|
258
287
|
* @param args_5 nSize 缓冲容量(WCHAR 个数)
|
|
259
288
|
* @param args_6 Arguments 插值参数表,IGNORE_INSERTS 时传 NULL */
|
|
260
|
-
export const FormatMessage
|
|
261
|
-
'u32 <>ptr u32 u32 <BYTE>ptr u32 <>ptr -> u32')
|
|
262
|
-
|
|
263
|
-
// ============ 计时 / 系统信息 ============
|
|
264
|
-
|
|
289
|
+
export declare const FormatMessage: (args_0: number, args_1: import("../ffi/ctype.js").MaybePtr<"">, args_2: number, args_3: number, args_4: import("../ffi/ctype.js").PtrArrayBuffer<any> | import("../ffi/ctype.js").MaybePtr<"BYTE">, args_5: number, args_6: import("../ffi/ctype.js").MaybePtr<"">) => number;
|
|
265
290
|
/** 高精度计数器读数(LARGE_INTEGER,8 字节)
|
|
266
291
|
* @returns 成功 → 非 0
|
|
267
292
|
* @param args_0 lpPerformanceCount 出参缓冲,PtrArrayBuffer(8) + DataView getBigInt64 读回 */
|
|
268
|
-
export const QueryPerformanceCounter
|
|
293
|
+
export declare const QueryPerformanceCounter: (args_0: import("../ffi/ctype.js").PtrArrayBuffer<any> | import("../ffi/ctype.js").MaybePtr<"BYTE">) => number;
|
|
269
294
|
/** 高精度计数器频率(每秒计数,LARGE_INTEGER 8 字节)
|
|
270
295
|
* @returns 成功 → 非 0
|
|
271
296
|
* @param args_0 lpFrequency 出参缓冲,PtrArrayBuffer(8) + DataView getBigInt64 读回 */
|
|
272
|
-
export const QueryPerformanceFrequency
|
|
297
|
+
export declare const QueryPerformanceFrequency: (args_0: import("../ffi/ctype.js").PtrArrayBuffer<any> | import("../ffi/ctype.js").MaybePtr<"BYTE">) => number;
|
|
273
298
|
/** 挂起当前线程毫秒数(0 = 让出剩余时间片);无返回值 */
|
|
274
|
-
export const Sleep
|
|
299
|
+
export declare const Sleep: (args_0: number) => void;
|
|
275
300
|
/** 当前系统时间(UTC FILETIME,8 字节 = 1601 起的 100ns 单元);无返回值
|
|
276
301
|
* @param args_0 lpSystemTimeAsFileTime 出参缓冲,PtrArrayBuffer(8) + DataView getBigUint64 读回 */
|
|
277
|
-
export const GetSystemTimeAsFileTime
|
|
302
|
+
export declare const GetSystemTimeAsFileTime: (args_0: import("../ffi/ctype.js").PtrArrayBuffer<any> | import("../ffi/ctype.js").MaybePtr<"BYTE">) => void;
|
|
278
303
|
/** 本地时间(SYSTEMTIME 出参位不注册 encoder:SYSTEMTIME.alloc().ptr 进、decode 读回);
|
|
279
304
|
* 无返回值
|
|
280
305
|
* @param args_0 lpSystemTime 出参结构缓冲 */
|
|
281
|
-
export const GetLocalTime
|
|
306
|
+
export declare const GetLocalTime: (args_0: import("../ffi/ctype.js").MaybePtr<"SYSTEMTIME">) => void;
|
|
282
307
|
/** 取环境变量值
|
|
283
308
|
* @returns 读取字符数(不含 NUL,0 = 不存在或缓冲不足)
|
|
284
309
|
* @param args_0 lpName 变量名(禁空,如 'PATH')
|
|
285
310
|
* @param args_1 lpBuffer 接收缓冲,传 WCHAR.alloc(n)
|
|
286
311
|
* @param args_2 nSize 缓冲容量(WCHAR 个数,含 NUL 余量) */
|
|
287
|
-
export const GetEnvironmentVariable
|
|
288
|
-
|
|
312
|
+
export declare const GetEnvironmentVariable: (args_0: string | (number & {
|
|
313
|
+
readonly ptrBrand: "WCHAR";
|
|
314
|
+
}), args_1: import("../ffi/ctype.js").PtrArrayBuffer<any> | import("../ffi/ctype.js").MaybePtr<"BYTE">, args_2: number) => number;
|
|
289
315
|
/** 计算机名(*lpnSize 入 = 缓冲 WCHAR 容量,出 = 实际长度不含 NUL)
|
|
290
316
|
* @returns 成功 → 非 0
|
|
291
317
|
* @param args_0 lpBuffer 接收缓冲,传 WCHAR.alloc(n)
|
|
292
318
|
* @param args_1 lpnSize 长度槽(PtrArrayBuffer(4),Uint32Array 写入容量) */
|
|
293
|
-
export const GetComputerName
|
|
319
|
+
export declare const GetComputerName: (args_0: import("../ffi/ctype.js").PtrArrayBuffer<any> | import("../ffi/ctype.js").MaybePtr<"BYTE">, args_1: import("../ffi/ctype.js").PtrArrayBuffer<any> | import("../ffi/ctype.js").MaybePtr<"BYTE">) => number;
|
|
294
320
|
/** 模块文件路径(全路径含扩展名)
|
|
295
321
|
* @returns 写入字符数(不含 NUL,0 失败/缓冲不足)
|
|
296
322
|
* @param args_0 hModule 模块句柄(<HMODULE>ptr 与 win 模块同型),NULL = 当前进程 exe
|
|
297
323
|
* @param args_1 lpFilename 接收缓冲,传 WCHAR.alloc(n)
|
|
298
324
|
* @param args_2 nSize 缓冲容量(WCHAR 个数) */
|
|
299
|
-
export const GetModuleFileName
|
|
325
|
+
export declare const GetModuleFileName: (args_0: import("../ffi/ctype.js").MaybePtr<"HMODULE">, args_1: import("../ffi/ctype.js").PtrArrayBuffer<any> | import("../ffi/ctype.js").MaybePtr<"BYTE">, args_2: number) => number;
|
|
300
326
|
/** 取**已加载**模块的句柄(不加载、不加引用计数;LoadLibrary 的反向查询)
|
|
301
327
|
* @returns 模块句柄(HMODULE/HINSTANCE,与 win 模块同型);失败 → NULL
|
|
302
328
|
* @param args_0 lpModuleName 模块名(大小写不敏感,`.dll` 可省;只认模块名不认路径),
|
|
303
329
|
* 传 NULL = 当前进程主 exe —— `<WCHAR>ptr` 位收 string 或 NULL(JS null/undefined 会 fail-loud) */
|
|
304
|
-
export const GetModuleHandle
|
|
330
|
+
export declare const GetModuleHandle: (args_0: string | import("../ffi/ctype.js").MaybePtr<"WCHAR">) => import("../ffi/ctype.js").MaybePtr<"HMODULE">;
|
|
305
331
|
/** 卸载 LoadLibrary 加载的模块(引用计数减 1);GetModuleHandle 拿到的句柄**不可**传此 API
|
|
306
332
|
* @returns 成功 → 非 0
|
|
307
333
|
* @param args_0 hModule LoadLibrary 返回的模块句柄 */
|
|
308
|
-
export const FreeLibrary
|
|
334
|
+
export declare const FreeLibrary: (args_0: import("../ffi/ctype.js").MaybePtr<"HMODULE">) => number;
|
|
309
335
|
/** 进程命令行(含程序名;进程启动即有值,永不返回 NULL)
|
|
310
336
|
* @returns 命令行整串(返回位 `<WCHAR>ptr!`:内建 WCHAR codec 自动解码为 string,
|
|
311
337
|
* `!` 担保非 NULL 由返回位 0 检查兜底,无需接收缓冲) */
|
|
312
|
-
export const GetCommandLineW
|
|
338
|
+
export declare const GetCommandLineW: () => string;
|
|
313
339
|
/** 本进程是否跑在 WOW64(32 位进程 on 64 位 OS)——判**远程进程/系统位宽**的廉价
|
|
314
340
|
* 探针:x64 进程恒 0(本就是 64 位 OS);x86 进程 1 = OS 64 位(远程序构按 64 位解析,
|
|
315
341
|
* 如 x86 qwin 读 explorer 的 TBBUTTON)。32 位 OS 上恒写 0
|
|
316
342
|
* @returns 成功 → 非 0
|
|
317
343
|
* @param args_0 hProcess GetCurrentProcess() 伪句柄或真句柄
|
|
318
344
|
* @param args_1 lpWow64Process 出参 BOOL 槽,PtrArrayBuffer(4),Uint32Array 读回 */
|
|
319
|
-
export const IsWow64Process
|
|
320
|
-
|
|
321
|
-
// ============ 全局内存(剪贴板数据载体)============
|
|
322
|
-
|
|
345
|
+
export declare const IsWow64Process: (args_0: import("../ffi/ctype.js").MaybePtr<"HPROCESS">, args_1: import("../ffi/ctype.js").PtrArrayBuffer<any> | import("../ffi/ctype.js").MaybePtr<"BYTE">) => number;
|
|
323
346
|
/** 分配全局内存块
|
|
324
347
|
* @returns 成功 → 句柄(0 失败)
|
|
325
348
|
* @param args_0 uFlags GMEM_MOVEABLE(0x2) 可移动(剪贴板要求)等 GMEM_* 组合
|
|
326
349
|
* @param args_1 dwBytes 字节数(SIZE_T 随位宽 = <>ptr 的 ptr 宽,非指针语义) */
|
|
327
|
-
export const GlobalAlloc
|
|
350
|
+
export declare const GlobalAlloc: (args_0: number, args_1: import("../ffi/ctype.js").MaybePtr<"">) => import("../ffi/ctype.js").MaybePtr<"HGLOBAL">;
|
|
328
351
|
/** 句柄 → 内存地址(配 GlobalAlloc 使用,与 SetClipboardData 的自产自收配对)
|
|
329
352
|
* @returns 内存地址(0 失败/已锁定)——地址非句柄,返回位保持裸 <>ptr */
|
|
330
|
-
export const GlobalLock
|
|
353
|
+
export declare const GlobalLock: (args_0: import("../ffi/ctype.js").MaybePtr<"HGLOBAL">) => import("../ffi/ctype.js").MaybePtr<"">;
|
|
331
354
|
/** 解锁(GlobalLock 每次获取须配对一次)
|
|
332
355
|
* @returns 锁定计数归 0 → 非 0 */
|
|
333
|
-
export const GlobalUnlock
|
|
356
|
+
export declare const GlobalUnlock: (args_0: import("../ffi/ctype.js").MaybePtr<"HGLOBAL">) => number;
|
|
334
357
|
/** 释放全局内存(SetClipboardData 成功后所有权转系统,勿再释放)
|
|
335
358
|
* @returns 成功 → NULL */
|
|
336
|
-
export const GlobalFree
|
|
359
|
+
export declare const GlobalFree: (args_0: import("../ffi/ctype.js").MaybePtr<"HGLOBAL">) => import("../ffi/ctype.js").MaybePtr<"">;
|
|
337
360
|
/** 拷贝内存块(dst = 目标进程地址,src = 数据缓冲);无返回值。ffi 只有 readByte,
|
|
338
361
|
* 写远程内存的唯一通道(GlobalLock 后灌数据、自定义窗口类 WNDCLASSEX 的 lpszClassName
|
|
339
362
|
* 等场景同用)
|
|
340
363
|
* @param args_0 dst 目标地址(GlobalLock 返回值等裸地址)
|
|
341
364
|
* @param args_1 src 源数据缓冲(<BYTE>ptr 收 PAB 本体)
|
|
342
365
|
* @param args_2 n 字节数(src.byteLength) */
|
|
343
|
-
export const RtlMoveMemory
|
|
366
|
+
export declare const RtlMoveMemory: (args_0: import("../ffi/ctype.js").MaybePtr<"">, args_1: import("../ffi/ctype.js").PtrArrayBuffer<any> | import("../ffi/ctype.js").MaybePtr<"BYTE">, args_2: number) => void;
|
|
@@ -1,11 +1,3 @@
|
|
|
1
|
-
// msimg32 绑定(透明色键 / 逐像素 alpha 混合,Win2000+ 系统自带 DLL)
|
|
2
|
-
import { bind, type CodecMap } from '../ffi/bind.js'
|
|
3
|
-
import { BLENDFUNCTION } from './structs.js'
|
|
4
|
-
|
|
5
|
-
// dll 名部分应用(工厂转调保泛型 infer,见 lib/windows/user32.ts 头注释;第三参透传 encoders)
|
|
6
|
-
const b = <const S extends string, const LE extends CodecMap = {}>(name: string, sig: S, encoders?: LE) =>
|
|
7
|
-
bind('msimg32.dll', name, sig, encoders)
|
|
8
|
-
|
|
9
1
|
/** 颜色键透明传送(crTransparent 色的源像素不画、透出目标底色;源区与目标可不同大 =
|
|
10
2
|
* 拉伸 + 透明一次完成)
|
|
11
3
|
* @returns 成功 → 非 0
|
|
@@ -20,9 +12,9 @@ const b = <const S extends string, const LE extends CodecMap = {}>(name: string,
|
|
|
20
12
|
* @param args_8 wSrc 源区宽
|
|
21
13
|
* @param args_9 hSrc 源区高
|
|
22
14
|
* @param args_10 crTransparent 键色 0x00BBGGRR(取低 3 字节与源像素 RGB 比较) */
|
|
23
|
-
export const TransparentBlt
|
|
24
|
-
|
|
25
|
-
|
|
15
|
+
export declare const TransparentBlt: (args_0: number & {
|
|
16
|
+
readonly ptrBrand: "HDC";
|
|
17
|
+
}, args_1: number, args_2: number, args_3: number, args_4: number, args_5: import("../ffi/ctype.js").MaybePtr<"HDC">, args_6: number, args_7: number, args_8: number, args_9: number, args_10: number) => number;
|
|
26
18
|
/** 逐像素 alpha 混合(当前 DC 与源 DC 按 AlphaBlend 规则合成,支持半透明)
|
|
27
19
|
* @returns 成功 → 非 0
|
|
28
20
|
* @param args_0 hdcDest 目标 DC
|
|
@@ -40,6 +32,11 @@ export const TransparentBlt = /*@__PURE__*/ b('TransparentBlt',
|
|
|
40
32
|
* AlphaFormat 的值(源带 premultiplied alpha 通道时置位)。GDI 实测:
|
|
41
33
|
* AlphaFormat=0 时源仍按 premultiplied 公式混合(out = src + dst*(1-SCA/255),
|
|
42
34
|
* MS Answers 已知行为),与文档的非预乘公式不同 */
|
|
43
|
-
export const AlphaBlend
|
|
44
|
-
|
|
45
|
-
|
|
35
|
+
export declare const AlphaBlend: (args_0: number & {
|
|
36
|
+
readonly ptrBrand: "HDC";
|
|
37
|
+
}, args_1: number, args_2: number, args_3: number, args_4: number, args_5: import("../ffi/ctype.js").MaybePtr<"HDC">, args_6: number, args_7: number, args_8: number, args_9: number, args_10: {
|
|
38
|
+
AlphaFormat?: number | undefined;
|
|
39
|
+
BlendFlags?: number | undefined;
|
|
40
|
+
BlendOp?: number | undefined;
|
|
41
|
+
SourceConstantAlpha?: number | undefined;
|
|
42
|
+
}) => number;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/** 取真实 OS 版本;缓冲必须用 OSVERSIONINFO_148(148B 特制布局,
|
|
2
|
+
* 标准 OSVERSIONINFOW 会越界写坏调用方堆,见 structs.ts)
|
|
3
|
+
* @returns 0 = 成功
|
|
4
|
+
* @param args_0 lpVersionInformation OSVERSIONINFO_148.encode(...).ptr 出参缓冲 */
|
|
5
|
+
export declare const RtlGetVersion: (args_0: import("../ffi/ctype.js").MaybePtr<"OSVERSIONINFO_148">) => number;
|
|
@@ -1,30 +1,20 @@
|
|
|
1
|
-
// psapi.dll 绑定(进程内存统计 / 模块路径;品牌约定见 lib/windows/user32.ts 头注释):
|
|
2
|
-
// - 句柄位与 kernel32 同型互认:进程 <HPROCESS>ptr(OpenProcess 产物,CloseHandle 收宽
|
|
3
|
-
// 直通)、模块 <HMODULE>ptr(NULL = 主执行模块)
|
|
4
|
-
// - PID 数组 / DWORD 出参槽用 <BYTE>ptr 直收 PtrArrayBuffer(TypedArray 原地读回);
|
|
5
|
-
// 结构出参位收 alloc().ptr、预写首字段后 decode 读回(PROCESSENTRY32W 同法,
|
|
6
|
-
// 见 ./structs.ts JSDoc)
|
|
7
|
-
// - XP 起系统自带 psapi.dll(官方 min XP 桌面应用),XP/Win7 双机直连
|
|
8
|
-
import { bind } from '../ffi/bind.js'
|
|
9
|
-
|
|
10
|
-
// dll 名部分应用(工厂转调保泛型 infer,见 lib/windows/user32.ts 头注释)
|
|
11
|
-
const b = <const S extends string>(name: string, sig: S) => bind('psapi.dll', name, sig)
|
|
12
|
-
|
|
13
1
|
/** 把系统进程 PID 填进数组缓冲
|
|
14
2
|
* @returns 成功 → 非 0
|
|
15
3
|
* @param args_0 lpidProcess PID 数组缓冲(PtrArrayBuffer(count * 4),Uint32Array 读回)
|
|
16
4
|
* @param args_1 cb 缓冲字节数(= count * 4)
|
|
17
5
|
* @param args_2 lpcbNeeded 出参槽(实际写字节数 → PID 数 = /4),PtrArrayBuffer(4) */
|
|
18
|
-
export const EnumProcesses
|
|
19
|
-
'<BYTE>ptr u32 <BYTE>ptr -> i32')
|
|
6
|
+
export declare const EnumProcesses: (args_0: import("../ffi/ctype.js").PtrArrayBuffer<any> | import("../ffi/ctype.js").MaybePtr<"BYTE">, args_1: number, args_2: import("../ffi/ctype.js").PtrArrayBuffer<any> | import("../ffi/ctype.js").MaybePtr<"BYTE">) => number;
|
|
20
7
|
/** 取进程内存统计
|
|
21
8
|
* @returns 成功 → 非 0
|
|
22
9
|
* @param args_0 hProcess 进程句柄(须 PROCESS_QUERY_INFORMATION | PROCESS_VM_READ)
|
|
23
10
|
* @param args_1 ppmc 出参缓冲:alloc() 后预写 offset0 cb = size(new Uint32Array(buf)[0]
|
|
24
11
|
* = PROCESS_MEMORY_COUNTERS.size),decode(buf) 读回
|
|
25
12
|
* @param args_2 cb 结构字节数(= PROCESS_MEMORY_COUNTERS.size) */
|
|
26
|
-
export const GetProcessMemoryInfo
|
|
27
|
-
|
|
13
|
+
export declare const GetProcessMemoryInfo: (args_0: number & {
|
|
14
|
+
readonly ptrBrand: "HPROCESS";
|
|
15
|
+
}, args_1: number & {
|
|
16
|
+
readonly ptrBrand: "PROCESS_MEMORY_COUNTERS";
|
|
17
|
+
}, args_2: number) => number;
|
|
28
18
|
/** 取进程模块完整路径(hModule = NULL → 主执行文件)
|
|
29
19
|
* @returns 写入字符数(0 失败;
|
|
30
20
|
* 缓冲不足 = 截断返回 nSize 不含 NUL)
|
|
@@ -33,5 +23,6 @@ export const GetProcessMemoryInfo = /*@__PURE__*/ b('GetProcessMemoryInfo',
|
|
|
33
23
|
* 目标进程上下文的值,跨进程须同权限下重开句柄才可用——本族先例:NULL 用法)
|
|
34
24
|
* @param args_2 lpFilename 文本出参缓冲(WCHAR.alloc(n) + WCHAR.decode 读回)
|
|
35
25
|
* @param args_3 nSize 缓冲字符数(含 NUL 空间) */
|
|
36
|
-
export const GetModuleFileNameEx
|
|
37
|
-
|
|
26
|
+
export declare const GetModuleFileNameEx: (args_0: number & {
|
|
27
|
+
readonly ptrBrand: "HPROCESS";
|
|
28
|
+
}, args_1: import("../ffi/ctype.js").MaybePtr<"HMODULE">, args_2: import("../ffi/ctype.js").PtrArrayBuffer<any> | import("../ffi/ctype.js").MaybePtr<"BYTE">, args_3: number) => number;
|