- 題名: 汎用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
以上の内容に関して、何かご存じの方、御教示ください。