我有一个小 DLL,可以连接到 Windows 平台上的假脱机程序。它将函数挂钩StartDocPrinter
,结果每次打印作业命中假脱机程序时都会调用我的 DLL。此 DLL 在 Windows 8 之前的所有平台上都能正常工作。
该 DLL 还能够挂接到 Windows 8 假脱机程序。
DLL 与可以在本地计算机或远程服务器上运行的服务建立 TCP/IP 连接。
问题是:
在 Windows 8 上,有两个“桌面”,即本机 Metro 桌面和一个类似 Windows 7 的桌面。
如果服务在同一台机器上运行,并且我从类似 Windows 7 的桌面提交打印作业,则打印作业进入后台处理程序,调用 DLL 并能够连接到服务,但如果我从 Metro 提交打印作业桌面(例如从 Internet Explorer 中选择打印),打印作业进入假脱机程序,调用 DLL 但无法连接到服务并收到10060 TCP/IP errorcode
. 如果该服务位于远程服务器上,则从两个桌面提交打印作业都可以正常工作。
在本地运行服务时,我尝试同时使用这两者127.0.0.1
,并且机器拥有自己的 IPV4 地址,但是从 Metro 桌面提交打印时结果是相同的。我试图禁用防火墙,但这并不能解决问题。
有谁知道什么可能导致这种行为?