阅读:1767回复:10
请教――usb客户端驱动的两个问题:
1>Write(Kirp I)函数:
PURB pUrb = m_PipeIn.BuildBulkTransfer(pBuffer, // Where is data coming from? dwTotalSize, // How much data to read? FALSE, // direction (FALSE = OUT) NULL); status = m_PipeIn.SubmitUrb(pUrb, NULL, NULL,4000); 参数dwTotalSize被限为4KB(一页大小),但事实上dwTotalSize应当为64KB以下都行才是啊。 2>Write(Kirp I)函数: 参数pBuffer(类型为PUCHAR),事实上(KMemory )Mdl(pBuffer,dwTotalSize)也应当能通过 但是以下就没通过――死机!! PURB pUrb = m_Pipe0.BuildBulkTransfer(Mdl , // Where is data coming from? dwTotalSize, // How much data to read? FALSE, // direction (FALSE = OUT) NULL); status = m_PipeIn.SubmitUrb(pUrb, NULL, NULL,4000); |
|
沙发#
发布于:2001-09-13 09:01
1. KUsbPipe::SetMaximumTransferSize
2. 你的MDL是怎么构造的? |
|
|
板凳#
发布于:2001-09-14 12:15
1。KUsbPipe::SetMaximumTransferSize 有这个函数吗?
我用DS向导生成的驱动,除了用softice4.05跟踪初始化例程 Activeconfiguration(...)未发现SetMaximumTransferSize 况且KUsbPipe::MaximumTransferSize =0xffff; 2。构造?我只知道――KMemory Mdl(pBuffer,dwTotalSize); 其它一无所知。求救!!!! |
|
地板#
发布于:2001-09-16 11:20
[QUOTE]原本由 zhf 发表
[B]1。KUsbPipe::SetMaximumTransferSize 有这个函数吗? 我用DS向导生成的驱动,除了用softice4.05跟踪初始化例程 Activeconfiguration(...)未发现SetMaximumTransferSize 况且KUsbPipe::MaximumTransferSize =0xffff; 2。构造?我只知道――KMemory Mdl(pBuffer,dwTotalSize); 其它一无所知。求救!!!! [/B][/QUOTE] 1.wizard不会帮你生成,你要自己加在程序里面。具体的用法看driver works的help. 2. 没有看到你的代码,不知道具体的原因。 |
|
|
地下室#
发布于:2001-09-17 06:50
如何给你加分,因为总报
“你所给的分与你的总分不符,你将转到给分处重新给分! ” 我试了1~20均不成。 还有,我水平很菜,看了DW的HELP也无济于事――KUsbPipe::MaximumPacketSize(void); 如果你来设置MaximumPacketSize,如何做请教教我, 在下感激不尽!!!! |
|
5楼#
发布于:2001-09-18 11:13
[QUOTE]原本由 zhf 发表
[B]如何给你加分,因为总报 “你所给的分与你的总分不符,你将转到给分处重新给分! ” 我试了1~20均不成。 还有,我水平很菜,看了DW的HELP也无济于事――KUsbPipe::MaximumPacketSize(void); 如果你来设置MaximumPacketSize,如何做请教教我, 在下感激不尽!!!! [/B][/QUOTE] 你看错函数了。我让你用的是KUsbPipe::SetMaximumTransferSize。你看的这个函数是返回对应的pipe的packet size。 |
|
|
6楼#
发布于:2001-09-18 12:14
对不起我打错了,应当是
看了DW的HELP也无济于事――KUsbPipe::MaximumTransferSize(void); Driverworks2.1版本的Help的索引把SetMaximumTransferSize拷上去 没有该函数。再找到KUsbPipe类也没看见SetMaximumTransferSize该成员请版主明查!!!! |
|
7楼#
发布于:2001-09-19 09:17
[QUOTE]原本由 zhf 发表
[B]对不起我打错了,应当是 看了DW的HELP也无济于事――KUsbPipe::MaximumTransferSize(void); Driverworks2.1版本的Help的索引把SetMaximumTransferSize拷上去 没有该函数。再找到KUsbPipe类也没看见SetMaximumTransferSize该成员请版主明查!!!! [/B][/QUOTE] 你怎么会没有???我这里可是看的很清楚的。你别装错版本了? 重新弄一个。 |
|
|
8楼#
发布于:2001-09-19 19:37
老大,你用的是DS2.0的版本不是DW2.1的版本我在www.driverdevelop.com的本地下载里下载DS2.0几回了(40多MB),
因为只允许单线程所以都下载不了。版主帮帮忙在哪能当到DS2.0; 2>既然你的DS2.0版本有KUsbPipe:SetMaximumTransferSize( )功能; 我想知道98DDK是怎样为KUsbPipe:SetMaximumTransferSize( )函数具体实现的?劳驾请把这段具体实现的代码告诉我好吗??在下感激不尽。 [zhf 编辑于 2001-09-20 00:32] |
|
9楼#
发布于:2001-09-20 10:52
[QUOTE]原本由 zhf 发表
[B]老大,你用的是DS2.0的版本不是DW2.1的版本我在www.driverdevelop.com的本地下载里下载DS2.0几回了(40多MB), 因为只允许单线程所以都下载不了。版主帮帮忙在哪能当到DS2.0; 2>既然你的DS2.0版本有KUsbPipe:SetMaximumTransferSize( )功能; 我想知道98DDK是怎样为KUsbPipe:SetMaximumTransferSize( )函数具体实现的?劳驾请把这段具体实现的代码告诉我好吗??在下感激不尽。 [zhf 编辑于 2001-09-20 00:32] [/B][/QUOTE] 我用的是DS2.01,而且是正版的。里面就有这个函数。我记得站上下的2.01里面也有的。 至于DDK的实现方式,我也没有用过。你看看DDK的例子里面有没有。 |
|
|
10楼#
发布于:2001-09-20 12:10
How much your DS2.01 ????
北京有卖的吗?Where? [zhf 编辑于 2001-09-20 12:14] |
|