« Spartan-3E Starter Kitの写真で予想 | トップページ | WindowsXPでパラレルポートを自分の物に!WarmPollの回避方法 »

2006.02.01

WindowsXPでパラレルポートが勝手にアクセスされる!?

WindowsXPで、パラレルポートが勝手にアクセスされるという不可解な現象に悩まされています。

私のマシンでは、WindowsXPを起動後、パラレルポートのコントロールポート(0x37a)に
書き込みを行うと、この不可解な現象が始まります。

最初、このポートの値は0x0cになっていますが、0x0eを書き込んでみると・・・
なぜか勝手に0x06に書き換わってしまい、その後0x0cになります!

一体全体どのプログラムが値を書き込んでいるのかは不明ですが、パラレルポートのAUTOFXINITとSLCTINという信号線が勝手にアクセスされてしまいます。
OSの何かが何かをしているのでしょうか・・

じっと見てみると、0x06→0x0c→0x06→0x0cという動作を、5秒周期で11回繰り返し、
約50秒間続けた後、この不可解な現象は収まるようです。

古いマシンでも、最近クリーンインストールしたマシンでも、同じ現象が起きてしまいます。デバイスマネージャで見ても、LPT1のプラグアンドプレイが有効になっているわけでもないですし。一体なんなんだろう。

XPでパラレルポートにアクセスするプログラムを作るときには、デバイスドライバから、
バスドライバ(?)のparport.sysにアクセスして、排他的制御権を得なければいけないのでしょうかね。
(DDKのコードを見て、パラレルポート関係を調べるは一苦労です・・)

ちなみに、Windows2000ではこの現象は起きません。

|

« Spartan-3E Starter Kitの写真で予想 | トップページ | WindowsXPでパラレルポートを自分の物に!WarmPollの回避方法 »

コメント

 以前、あるメーカーのプリンタドライバでそのようなことがありました。
要するに、プリンタが接続されたことを検知する為だったようです。Windows2000だったと思います。

投稿: shirou | 2006.02.01 10:54

そのようなこと、と書きましたが。同じということではなく、勝手にパラレルポートがアクセスされるという点です。
ダウンロードケーブルが認識されなかったということです。

投稿: shirou | 2006.02.01 10:59

はじめまして、ししうといいます。
XP上でLPT接続の機器を製作していた時これに引っかかったことがあります。
調べるとこういう記事がありました
http://www.microsoft.com/japan/technet/prodtechnol/windowsserver2003/technologies/fileprint/contchov.mspx#e
WinXPはPnPとは別に定期的にLPTポートにポーリングする仕様があるようです。
また、下記アドレスに同問題の解決方法が記載されていました。ご参考までに。
http://forums.belution.com/ja/vc/000/238/42s.shtml

投稿: ししう | 2006.02.02 11:15

shirouさん、ししうさん、情報ありがとうございます。

情報を辿ってみると、レジストリにDisableWarmPollというキーと値を設定すればよいというところへたどり着きました。
試してみると、とりあえず解決しました。

どうやら、parport.sysというバスデバイスドライバのしわざのようですので、安全止める方法がないかどうか、WinXP DDKのソースを読んでます。

すると、該当する部分がありました!
この機能は、WarmPollという機能だそうで、DDKの中の
\src\kernel\parport\fdopnp.cというファイルの中で、そのレジストリを読み込んでいる部分がありました。

というわけで、WarmPoll機能の解明と、安全に止める方法を研究することにしました。

投稿: なひたふ | 2006.02.02 22:06

コメントを書く



(ウェブ上には掲載しません)




« Spartan-3E Starter Kitの写真で予想 | トップページ | WindowsXPでパラレルポートを自分の物に!WarmPollの回避方法 »