记录一个.NET中的AOT死锁问题
1. 问题现象
项目是 WinUI 3 + Native AOT 发布,在调试时一切正常,但是发布并启动后几秒内一切正常,过几秒后UI 线程随机无响应,处于“模糊状态”——不是崩溃退出,是卡死没反应。

项目是 WinUI 3 + Native AOT 发布,在调试时一切正常,但是发布并启动后几秒内一切正常,过几秒后UI 线程随机无响应,处于“模糊状态”——不是崩溃退出,是卡死没反应。

做 Windows 网络开发,有时需要拦截特定域名的 DNS 查询,返回一个自定义的 IP 地址,从而实现流量引导、本地调试或访问控制。
本文以拦截 www.abc.com 的 DNS A 查询为例,完整说明如何通过 WFP(Windows Filtering Platform)在传输层拦截 DNS 请求,并返回指定 IP(如 192.168.1.100)。重点讲配置流程和关键决策点,辅以必要的代码片段说明。
整个方案分五步走:

做 Windows 网络开发,特别是防火墙、VPN、网络监控这类东西,WFP(Windows Filtering Platform)是绕不开的。不过一说起驱动、内核、Callout,确实容易让人头大。
这篇文章不讲复杂的 API 细节,只希望用最通俗的方式,把“WFP 是什么、能干什么、内部怎么回事”讲明白。
一句话概括:WFP 是 Windows 内核网络协议栈里的一个“万能插线板”。
它把网络数据流经的各个关键节点都预留了“插孔”(也就是过滤层),你可以把自己的处理逻辑(“插头”)插上去,实现对网络流量的拦截、检查、修改和放行/丢弃控制。
Windows 自带的防火墙,就是微软自己在这些“插孔”上插的“插头”。杀毒软件、家长控制、流量监控软件用的也是这套东西。

各位网工、运维老哥、以及被VLAN逼疯的同学们,请留步!
今天咱们聊一个反常识的骚操作。在你以往的认知里,是不是觉得:两台电脑拿网线直连,想互通?那必须得设成同一个网段啊!(比如192.168.1.x 和 192.168.1.y)
没错,这是“政治正确”的做法。但生活嘛,总有那么些“逆反”时刻:
今天,我就带你打破这个魔咒。两台PC直连,即使IP不在一个网段,照样能ping通! 而且不需要额外的路由器,全靠Windows自带的“软路由”功能。

WireGuard 以其简洁、高效和安全性著称,在 Windows 平台上的官方客户端也延续了这一特点。与 Linux 下的命令行操作不同,Windows 版本更侧重于图形化管理与隧道切换,配置逻辑主要围绕生成密钥对和编辑.conf文件展开。
