dazzy
驱动中牛
驱动中牛
  • 注册日期2001-03-23
  • 最后登录2008-08-12
  • 粉丝1
  • 关注0
  • 积分0分
  • 威望10点
  • 贡献值1点
  • 好评度10点
  • 原创分0分
  • 专家分0分
20楼#
发布于:2002-10-10 12:27
如果bulk pipe不够,你可以在发送或接收数据前发送一个vendor request来指定相应的portnumber。

usb 串口还应该定义一个一个vendor request来取得每个port的特性,比如最大传输波特率等,每次最大传输字节数等。

对于windows driver,你还需将上层传来的IRP拆分为多个IRP,然后传递给usbd。
OS_Dev
驱动中牛
驱动中牛
  • 注册日期2002-01-09
  • 最后登录2004-03-04
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
21楼#
发布于:2002-10-12 02:59
dazzy大虾,这里又有问题要请教你了:

我根据你的建议,写了两个驱动,一个是bus driver,一个是串口的driver。
在串口 driver中,当IoCreateDeviceObject时,我指定设备类型为FILE_DEVICE_SERIAL_PORT。不知道是不是这样处理?

另外,这两个DRIVER的INF文件应该怎么写?
BUS DRIVER需要模拟成某个新的BUS类的总线DRIVER吗?
串口DRIVER怎么指定设备类?
I know nothing!
dazzy
驱动中牛
驱动中牛
  • 注册日期2001-03-23
  • 最后登录2008-08-12
  • 粉丝1
  • 关注0
  • 积分0分
  • 威望10点
  • 贡献值1点
  • 好评度10点
  • 原创分0分
  • 专家分0分
22楼#
发布于:2002-10-15 09:29
最近工作太忙,来不及立即回答,请谅!

我说的写一个bus driver,一个串口driver,是根据ms的driver分层原则而写的。你也可以用一个driver搞定它。

当串口driver处理IoCreateDevice()时,Type为FILE_DEVICE_SERIAL_PORT。

bus driver的AddDevice处理IoCreateDevice()时,Type可以为FILE_DEVICE_USB,在处理PNP的IRP_MN_START_DEVICE时,根据所得的PortNumber来建立设备对象(DeviceObject),在此处理IoCreateDevice()时,Type为FILE_DEVICE_SERIAL_PORT。


关于inf的编写:
bus driver:
[Version]
Signature = \"$CHICAGO$\"
Class=USB
Provider=%ProviderName%
DriverVer=07/18/2001,1.2.0.0
CatalogFile=Yourdriver.CAT

其它部分为正常driver的 inf.

串口driver的inf:
[Version]
Signature = \"$CHICAGO$\"
Provider=%ProviderName%
ClassGuid={4D36E978-E325-11CE-BFC1-08002BE10318} ; PORTS
DriverVer=07/18/2001,1.2.0.0
CatalogFile=Yourdriver.CAT

你应加入一句(用于枚举):
HKR,,\"UpperFilters\",0x00010000,\"serenum\"

串口driver用IOCallDriver()来与bus driver通讯。
OS_Dev
驱动中牛
驱动中牛
  • 注册日期2002-01-09
  • 最后登录2004-03-04
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
23楼#
发布于:2002-10-16 22:21
ddk说一般只有hub和host controller会使用Class=USB。
我想自己定义一个总线类,你看怎么样?
I know nothing!
上一页 下一页
游客

返回顶部