Why not make the scanner look like a USB COM Port and run a command
protocol over that? You could probably combine that with USB Mass
Storage in a composite device.
-p
-----Original Message-----
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of Michal Vodicka
Sent: Friday, December 03, 2004 5:02 PM
To: Windows System Software Devs Interest List
Subject: RE: [ntdev] How to communicate with USB drive firmware?
From:
xxxxx@lists.osr.com[SMTP:xxxxx@lists.osr.com
] on behalf of Henry Gabryjelski[SMTP:xxxxx@windows.microsoft.com]
Reply To: Windows System Software Devs Interest List
Sent: Friday, December 03, 2004 9:58 PM
To: Windows System Software Devs Interest List
Subject: RE:[ntdev] How to communicate with USB drive firmware?
What you’re really asking for is the ability to send arbitrary
commands to the device, which is provided (as you say) by
IOCTL_SCSI_PASS_THROUGH (SPT). However, you want to avoid security,
which SPT doesn’t work around.
Exactly. But these arbitrary commands would be carefully checked by
device and can cause no harm. Below I’ll explain how it should work.
Is this device always going to be USB (allows consideration of
USB-only solution)?
Yes.
Approximately how much data will be transferred each way (2 bytes? 16
bytes? 4k? 64k?)?
Max 2 kB per request in both directions. In practice, requests in host
-> device direction are usually shorter; tens or hundreths bytes.
On the other hand, one high level command can consist from many
requests. We’re using communication protocol with which is limited to 2
kB per frame at link layer (i.e. at request level) but allows up to 256
kB transfers at transport layer. Currently the maximal amount of data
transferred from device to host is at once about 80 kB. Speed isn’t a
big problem; we’re able to use serial line at 9600 when necessary.
If necessary, our protocol allows to reduce maximal link layer frame
size. The shortest usable size is 8 bytes; the protocol overhead would
be enormous but we’d live with it. More is better, of course. AFAIK the
shortest size used by real application now is 256 bytes per frame.
Which Windows NT OS do you care about (winnt, win2k, winxp, srv03)?
w2k and above. Maybe it could be limited to XP and above.
What type of device is this USB drive (HDD, SD, CD/DVD, …)?
USB drive only. Let me explain what we really want. We have a
fingerprint sensor with built-in firmware which is able to communicate
using our protocol with PC or other device. Normally the device is
connected directly to PC via serial line or USB. In the case I mention,
sensor is built-in on USB flash drive and connected with it internally
via serial connection. There is no direct sensor connection with PC.
Flash drive firmware can be used in pass-through mode and it will carry
data from PC to sensor and back. This way we would be able to
communicate with sensor fw the same way as if it is connected directly.
The problem is how to transfer data using OS supplied drivers (i.e.
USBSTOR) and how to distinguish our data from data for flash drive which
has to work usual way. We can do necessary changes in flash drive
firmware.
I’m aware that our design leads to composite device instead. But this is
what we don’t want to do. The goal is “no additional drivers
installation, everything has to work automagically without user
intervention”.
Thanks.
Best regards,
Michal Vodicka
UPEK, Inc.
[xxxxx@upek.com, http://www.upek.com]
Questions? First check the Kernel Driver FAQ at
http://www.osronline.com/article.cfm?id=256
You are currently subscribed to ntdev as: unknown lmsubst tag argument:
‘’
To unsubscribe send a blank email to xxxxx@lists.osr.com