何となく Blog by Jitta
Microsoft .NET 考

目次

Blog 利用状況
  • 投稿数 - 761
  • 記事 - 18
  • コメント - 37042
  • トラックバック - 222
ニュース
  • IE7以前では、表示がおかしい。div の解釈に問題があるようだ。
    IE8の場合は、「互換」表示を OFF にしてください。
  • 検索エンジンで来られた方へ:
    お望みの情報は見つかりましたか? よろしければ、コメント欄にどのような情報を探していたのか、ご記入ください。
It's ME!
  • はなおか じった
  • 世界遺産の近くに住んでます。
  • Microsoft MVP for Visual Developer ASP/ASP.NET 10, 2004 - 9, 2011
広告

記事カテゴリ

書庫

日記カテゴリ

ギャラリ

その他

わんくま同盟

同郷

 

エンド ユーザ様より、問い合わせがありました。「オタクのところで作ってるポートモニタね、WMI の WIN32_PRINTERS で問い合わせると PrinterStatus が Unknown になるんやけど、なんでやの?Standard TCP/IP やったら、そんなんならへんで。」

はぁ、まぁ、いろいろ、追加してるからなぁ。。。と、「なぜ」を探すこと、1日半。プログラム コードを見ても、“プリンタの”ステータスを設定しているようなところはない。リファレンスにあたっても、ポートモニタが“プリンタの”ステータスを設定しろなんてことは書いていない。

かる~く、サンプル コードを書いて、スプーラが提供しているステータスと比べると、スプーラ上で「プリンタに送信中」となったときに、PrinterStatus が Unknown になることがわかった。「送信中」に該当するコードは、PrinterStatus にはない。おそらく、対応していないから、「わからない」と返してくるのだろう。

というところまではわかったけど、じゃぁ、なんで対応していないのさ?さっぱりわからなくなったところで、浮かんだ。「そうだ。今月でサポート インシデントの有効期間が切れるじゃないか。どうせなら、使ってしまおう。」


ってことで、電話。「うちで作ってるポートモニタと、STD TCP/IP で PrinterStatus が違うのだけど、この PrinterStatus は、どこを見て出してるの?」

一時受付(インシデントの確認)から、二時受付(問題の切り分け)に回り、担当者からの call back があるまで1時間。ちょっと遅いと思う。

早速、疑問をぶつける。

マ:「SetJob でステータスを設定して…」
え???「SetJob」ですって?PrinterStatus を、SetJob で設定するの??そりゃ、気づかないわ。言い訳:だって、作ったのは他の人なんだもん。ああしろ、こうしろというお約束は、現在のコードを追いかけて知ったんだもん。

で、探すと、設定している。「JOB_CONTROL_SENT_TO_PRINTER」って。ほうほう。スプーラが報告する状態と一緒やね。ほんで、これの時に Unknown になるのは、“仕様”ですね。だって、PrinterStatus にはそんな状態定義されてへんモン。「内部で保持する状態に対応する状態が全て定義されているわけではない。」ってことがわかったので、これでいいか。

マ:「一つ気になりますのは、私どもの方でよくお受けするご要望では、スプーラ サービスが表示している状態と同じものが表示したいというものがございまして。。。」
うん、そうだろうね。でも、うちのエンド ユーザ様は、たぶん、印刷ができる状態かどうかがわかればいいのだと思う。エラーであるということがわかれば、それでいいと思う。
マ:「スプーラと同じ状態は、GetPrinter 関数から、PRINTER_INFO_6 構造体の dwStatus で取れるのですが、これが WIN32_PRINTER.PrinterState の方に入ってきます。KB196805で、PrintMon.exe というツールを紹介していますが、こちらの方にコード例もございますので、ご利用ください。」
え?PrinterState ですか?これ、obsolute って書いてあるですよ?まあ、いいか。
マ:「もし、この電話の内容だけでよろしければ、インシデントは一端キャンセルということにして…」
え~!!そんなこと、いっちゃうの?いってくれちゃうの?
でもね、今月末で期限切れるから、いいよ。でも、説明するのに文書があった方がいいから、メールちょうだい。インシデント消費でかまわないから。ありがとうね。またよろしくね。



ってことで、あっという間に解決してしまったのでした。

MVP インシデント(業務には使えない)なので、公開。

その後の追加調査で、STD TCP/IP ポートは、UNIX の LP デーモンと互換性があるらしいことが判明。LP デーモンに、「プリンタに送信中」というステータスがないから、STD TCP/IP も、それを出さないのかな?

投稿日時 : 2008年9月23日 11:08
コメント
  • # ロレックス gmtマスター 偽物
    svlpbjg@nifty.com
    Posted @ 2022/01/10 8:45
    この度はこちらのミスで番地無しでの注文でした。お店の方にはご迷惑おかけしました。値段の高い安いは別として対応してくれた方ありがとうございました。本日発送の電話をいただき最後まで気持ちよく対応していただき感謝してます。商品は明日到着予定です。楽しみに待っています。
    ★ルイヴィトン★ダミエグラフィット★ブラスレ・キープイット★ブレスレット/バングル/アクセサリー★M6609E★
    まだ来てませんが楽しみにしてます。早くこないかな〓
タイトル
名前
Url
コメント