DOBON.NET DOBON.NETプログラミング掲示板過去ログ

USB接続されたプリンタのMIB情報の取得

環境/言語:[OS:Windows XP/7 言語:VC6.0/VB6.0]
分類:[VB6以前]

はじめまして。

プリンタが使用可能なページ記述言語を取得したいと考えています。

DeviceCapabilities 関数に DC_PERSONALITY を渡すと一覧が得られるのですが、プリンタ側の設定で使用不可にしている言語も取得してしまいます。
プリンタの MIB 情報(1.3.6.1.2.1.43.15.1.1.5.X)を参照すれば取得できました。
 (コマンドプロンプトで "snmpwalk -c public -v1 プリンタのIP .1.3.6.1.2.1.43.15.1.1.5" としてデータが得られるのを確認しました。)

SnmpMgrRequest などの関数を使用してネットワークプリンタの MIB 情報を参照することはできましたが、USBプリンタで同じ方法が使えなくて困っています。

他の方法として WMI を使用して Win32_Printer クラスを抽出してみましたが、ページ記述言語に関する情報があるかは分かりませんでした。


以下のどちらかが分かれば先に進めるので、情報がありましたらお教えいただきたいと思います。
・snmp エージェントとして USB接続されたプリンタを指定する方法
 (「プリンタがつながっているコンピュータのIPアドレス」「"USB001"」を指定してみましたが、エラーで機械に接続できませんでした)
・その他の方法で記述言語一覧を得る方法

どうかよろしくお願いします。
■No32068に返信(ひろこさんの記事)
> SnmpMgrRequest などの関数を使用してネットワークプリンタの MIB 情報を参照することはできましたが、USBプリンタで同じ方法が使えなくて困っています。

  本末転倒と言うか・・・
  MIBとは、SNMP(Simple Network Management Protocol)を利用しているネット
  ワーク機器が、その機器の状態を外部に知らせるために公開する情報のことで
  ある

  と記述されていますので、USBプリンターには当然同じ方法では取得できません。

> 以下のどちらかが分かれば先に進めるので、情報がありましたらお教えいただきたいと思います。
> ・snmp エージェントとして USB接続されたプリンタを指定する方法

  SNMPも、ネットワーク対象だから無理

> ・その他の方法で記述言語一覧を得る方法

  う〜ん・・・
  どこのプリンター?
  キャノンの場合、USB接続では取得できません。
  と、結構な数、検索ヒットした。

  USBプリンタドライバーにその提供機能が搭載されていないと
  無理っぽい。

  エプソンの場合は、エプソンプリンター監視SDK と言うものがあ
  って、それを使えば取得できるみたい。

  要は、ネットワーク接続の場合は、仕様としてそれら情報を公開
  する機能が提供されているが、以外の場合は、代替する機能を、
  メーカーのドライバーに搭載されているか、提供されているSDK
  等を使って行わない限り、取得できない。

  と言うことになっているようです。

以上。参考まで
追伸

● USBデバイスサーバーにUSBプリンターを接続しても・・・
  USBポートを仮想化しているだけなので、プリンタドライバ側
  に提供機能が搭載されていないので、取得できない。と思う。

以上。
■No32069に返信(オショウさんの記事)
>   要は、ネットワーク接続の場合は、仕様としてそれら情報を公開
>   する機能が提供されているが、以外の場合は、代替する機能を、
>   メーカーのドライバーに搭載されているか、提供されているSDK
>   等を使って行わない限り、取得できない。
>
>   と言うことになっているようです。

オショウ様。遅い時間にもかかわらず回答ありがとうございます。

最初に「プリンタの MIB 情報を取れば分かるらしい」と上司に言われて始めて、ネットワークプリンタでうまくいったので USB 接続でも何かあるのではと思っていました。

ドライバーやメーカー提供の SDK ではできないことを確認済みですので、仕様の変更も視野に入れて考えたいと思います。
USBのときはこのチェックを行わないという仕様に 変更しました。
よってこの件は解決済みとさせていただきます。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板