- 題名: 汎用USBドライバについて
- 日時: 2010/07/06 15:38:48
- ID: 27030
- この記事の返信元:
- (なし)
- この記事への返信:
- [27038] Re[1]: 汎用USBドライバについて2010/07/07 10:45:22
- [27042] Re[1]: 汎用USBドライバについて2010/07/07 12:44:11
- ツリーを表示
■No27054に返信(Hondaさんの記事) >> 実際のコードを提示するわけにはいかないのでしょうか? > お世話になります。遅くなりました。 ざっと見た限りでは、Uusbd_Open_mask にしても Uusbd_OpenPipe にしても、 宣言が間違っていると思いますよ。 とりあえず、Uusbd_Open_mask の方を見てみましょう。 (以下、引用元の原文を加工し、改行や行継続文字を追加しています) > *マスク設定Open > Private Declare Function Uusbd_Open_mask Lib "uusbd.dll" ( _ > ByVal s1 As Integer, _ > ByVal v1 As Byte, _ > ByVal v2 As Byte, _ > ByVal v3 As Integer, _ > ByVal v4 As Integer, _ > ByVal v5 As Byte _ > ) As IntPtr API一覧.doc および uusbd.h を見たところ、 Uusbd_Open_mask 関数の定義は、以下のようになっています。 HUSB APIENTRY Uusbd_Open_mask( ULONG flag, UCHAR Class, UCHAR SubClass, USHORT Vendor, USHORT Product, BYTE bcdDevice ); そして、それぞれの型の意味は、Windows SDK によれば 下記のように定義されています。 http://msdn.microsoft.com/en-us/library/cc230309%28PROT.10%29.aspx ULONG : 32-bit unsigned integer (range: 0 through 4294967295 decimal) UCHAR : 8-bit integer (range: 0 through 255 decimal) USHORT : 16-bit unsigned integer (range: 0 through 65535 decimal). BYTE : 8-bit unsigned value ということは、Uusbd_Open_mask の引数はすべて ByVal で、 UInteger, Byte, Byte, UShort, UShort, Byte あたりが 正しい宣言であると予想します。 符号無し整数型を使うか、符号付き整数型を使うかは任意ですけれども。 > 引数 ByRef→ByValの変更しても同じでした。 意味を把握せずに、闇雲に変換しているわけでは無いですよね…? 質問内容からでは、どの引数を変更したのかが読み取れませんでしたが、 その ByRef → ByVal の変更というのは、どのような基準で行っていますか?
分類:[その他]
【解決したい問題】
お世話になります。
汎用USBドライバー(uusbd.sys、uusbd.dll)での通信実験中です。
USB経由でプリントデータ(バイナリ)を送信したい。
環境:WindowsXP Vb.Net USB接続先:プリンタ
<問題点>
ドライバーのインストールは、正常に完了して、プリンタの接続も
認識する。
アプリ(Vb.Net)で、ハンドル取得のための"UsbOpen()”を実行した
ときの戻り値が、異常となる。
プリンタ接続なし:Hex 200000FFFFFFFF (仕様では、-1)
プリンタ接続あり:Hex 230001FFFFFFFF
以上の内容に関して、何かご存じの方、御教示ください。