后端 PDO 循环改为按在线槽收缩状态窗口,稀疏总线下单槽每周期都能刷新, 并补上尾部槽的发现扫描游标;新增自旋节拍源(阈值/显式覆盖)、P 核识别 与线程级钉核,自旋期间释放 GIL 以免 HTTP 线程被饿死;启动时先关停旧实例, 避免两个进程争用 Npcap 适配器。 记录每拍完整时间线、GC stop-the-world 事件与网格跳拍数,经 /api/motor/dbg 导出用于归因固定频率的超时;配
29 lines
938 B
Python
29 lines
938 B
Python
"""exports2def.py — 把 dumpbin /exports 的输出转成 .def(给 lib.exe 生成导入库用)。
|
|
|
|
用法: python exports2def.py <exports.txt> <out.def> <LIBRARY名>
|
|
"""
|
|
import re
|
|
import sys
|
|
|
|
def main():
|
|
src, dst, libname = sys.argv[1], sys.argv[2], sys.argv[3]
|
|
names = set()
|
|
pat = re.compile(r"^\s+\d+\s+[0-9A-Fa-f]+\s+[0-9A-Fa-f]+\s+(\S+)")
|
|
with open(src, encoding="utf-8", errors="ignore") as f:
|
|
for line in f:
|
|
m = pat.match(line)
|
|
if m:
|
|
names.add(m.group(1))
|
|
if not names:
|
|
print("exports2def: 没解析出任何导出名", file=sys.stderr)
|
|
return 1
|
|
with open(dst, "w", encoding="ascii", newline="\r\n") as f:
|
|
f.write(f"LIBRARY {libname}\nEXPORTS\n")
|
|
for n in sorted(names):
|
|
f.write(n + "\n")
|
|
print(f"exports2def: {len(names)} 个导出 → {dst}")
|
|
return 0
|
|
|
|
if __name__ == "__main__":
|
|
sys.exit(main())
|