20楼#
发布于:2002-10-10 12:27
如果bulk pipe不够,你可以在发送或接收数据前发送一个vendor request来指定相应的portnumber。
usb 串口还应该定义一个一个vendor request来取得每个port的特性,比如最大传输波特率等,每次最大传输字节数等。 对于windows driver,你还需将上层传来的IRP拆分为多个IRP,然后传递给usbd。 |
|
21楼#
发布于:2002-10-12 02:59
dazzy大虾,这里又有问题要请教你了:
我根据你的建议,写了两个驱动,一个是bus driver,一个是串口的driver。 在串口 driver中,当IoCreateDeviceObject时,我指定设备类型为FILE_DEVICE_SERIAL_PORT。不知道是不是这样处理? 另外,这两个DRIVER的INF文件应该怎么写? BUS DRIVER需要模拟成某个新的BUS类的总线DRIVER吗? 串口DRIVER怎么指定设备类? |
|
|
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通讯。 |
|
23楼#
发布于:2002-10-16 22:21
ddk说一般只有hub和host controller会使用Class=USB。
我想自己定义一个总线类,你看怎么样? |
|
|
上一页
下一页