Windows プラットフォームのスプーラにフックする小さな DLL があります。関数をフックするStartDocPrinter
と、結果として、印刷ジョブがスプーラにヒットするたびに DLL が呼び出されます。この DLL は、Windows 8 より前のすべてのプラットフォームで正常に動作しました。
DLL は、Windows 8 スプーラーにフックすることもできます。
DLL は、ローカル マシンまたはリモート サーバーで実行できるサービスへの TCP/IP 接続を確立します。
問題は:
Windows 8 には、ネイティブの Metro デスクトップと Windows 7 に似たデスクトップの 2 つの「デスクトップ」があります。
サービスが同じマシンで実行されていて、Windows 7 と同様のデスクトップから印刷ジョブを送信すると、印刷ジョブがスプーラーに入り、DLL が呼び出されてサービスに接続できますが、Metro から印刷ジョブを送信するとデスクトップ (たとえば、Internet Explorer から印刷を選択)、印刷ジョブがスプーラーに入り、DLL が呼び出されますが、サービスに接続できず、10060 TCP/IP errorcode
. サービスがリモート サーバー上にある場合、両方のデスクトップから印刷ジョブを送信すると正常に動作します。
サービスをローカルで実行しているときに、両方127.0.0.1
のマシンとマシン独自の IPV4 アドレスを使用しようとしましたが、Metro デスクトップから印刷を送信しても結果は同じです。ファイアウォールを無効にしようとしましたが、問題は解決しません。
この動作の原因を知っている人はいますか?