阅读:1125回复:8
这是为什么,斑主?
我用DS 做了一个简单的USB驱动,代码如下,可以发送成功,但是
在重新插拔设备后,机子就会重启. ------------------------------ PURB pUrb=m_Lower.BuildClassRequest( pBuffer, // TransferBufferMDL 8, // TransferBufferLength=dwTotalSize 0, // RequestTypeReservedBits=0 0x09, //Request =0x09 just for the dog set_port 0x0200, //Value =0x0200,for Unknow reason FALSE, //BOOLEAN FALSE from the host to device //BOOLEAN bShortOk=FALSE NULL, //PURB Link=NULL 0, //UCHAR Index=0 URB_FUNCTION_CLASS_DEVICE, //USHORT Function=URB_FUNCTION_CLASS_DEVICE NULL //PURB Link=NULL ); // Submit the URB to our USB device if ( pUrb != NULL) { // Submit the URB to our USB device, synchronously - say less is OK // pUrb->UrbBulkOrInterruptTransfer.TransferFlags = // (USBD_TRANSFER_DIRECTION_IN | USBD_SHORT_TRANSFER_OK);//这一句十重要, status = m_Lower.SubmitUrb(pUrb,NULL,NULL,5000); ------------------------------ |
|
沙发#
发布于:2002-11-28 09:11
最好是用SoftIce跟踪一下,这样就可以知道是哪以行代码出错了。
以前我在W2000下面调过驱动程序,也是一旦重新插把就重新启动,后来发现是一个Debug编译环境的ASSERT语句出现问题。 |
|
板凳#
发布于:2002-11-27 15:48
我现在设备是HID类的所以我必须用这种请求,
用这个做稳定后再定义自己的请求! |
|
地板#
发布于:2002-11-27 15:05
我从来不用class request!
|
|
|
地下室#
发布于:2002-11-26 11:45
斑主若有兴趣可以将上面的代码放在生成的工程中,
,你执行你测试程序一次,再执行一次, 就会发现第二不能成功执行写打操作。 且在重新插拔后机器就会重启! 我的设备的零端点最大可以接收8个字节的数据。 |
|
5楼#
发布于:2002-11-26 11:25
那你最少也应该把这个参数写上啊!否则编译的时候,就用另外一个形式的函数来编译了。
|
|
|
6楼#
发布于:2002-11-26 11:15
谢谢你斑主,问题不在这儿,用了这个参数就不会发送成功。
我正在找。。。 我发现用DS不如用DDK来的直观。 |
|
7楼#
发布于:2002-11-25 23:21
//BOOLEAN bShortOk=FALSE
这行好像没有写参数嘛! |
|
|
8楼#
发布于:2002-11-25 23:19
1. SubmitUrb之后,有没有delete pUrb
2. 可能别的地方有问题。 |
|
|