marvie
驱动牛犊
驱动牛犊
  • 注册日期2004-03-09
  • 最后登录2005-07-26
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1259回复:3

设置接口的信息失败,是哪里的原因?

楼主#
更多 发布于:2004-09-24 00:16
我现在想设置接口传输的参数,以实现数据的传输,可是,我把urb发下去的时候老是出错,错误号是SendAwaitUrb - error -1073741823,我怀疑不是我驱动程序的问题,而是firmware的问题,不知道是不是这样,如果是这样,那么firmware该加入什么样的设置呢?请大侠们指点,谢谢

具体代码如下

interfaces[0].InterfaceDescriptor = pid;
interfaces[0].Interface = NULL;
interfaces[1].InterfaceDescriptor = NULL;
interfaces[1].Interface = NULL;
pii = interfaces[0].Interface;
KdPrint(("XBCDStartDevice - selecting the configuration"));
selurb = USBD_CreateConfigurationRequestEx(pcd, interfaces);

pii->Pipes[0].MaximumTransferSize = 0x0008;
pii->Pipes[0].MaximumPacketSize = 0x0008;
pii->Pipes[0].PipeType = UsbdPipeTypeInterrupt;
pii->Pipes[0].Interval = 0x00;

KdPrint(("Pipe 1 : MaxTransfer %d, MaxPckSize %d, PipeType %d, Interval %d, Handle %d Address %d", pii->Pipes[1].MaximumTransferSize, pii->Pipes[1].MaximumPacketSize, pii->Pipes[1].PipeType, pii->Pipes[1].Interval, pii->Pipes[1].PipeHandle, pii->Pipes[1].EndpointAddress));

pii->Pipes[1].MaximumTransferSize = 0x0006;
pii->Pipes[1].MaximumPacketSize = 0x0008;
pii->Pipes[1].PipeType = UsbdPipeTypeInterrupt;
pii->Pipes[1].Interval = 0x00;

// Submit the set-configuration request
status = SendAwaitUrb(pFdo, selurb);
if (!NT_SUCCESS(status))
{
ExFreePool(urb);
ExFreePool(pcd);
ExFreePool(selurb);
KdPrint(("XBCDStartDevice - Error %X trying to select configuration", status));
KdPrint(("XBCDStartDevice - the last urb send error"));
return status;
}
marvie
驱动牛犊
驱动牛犊
  • 注册日期2004-03-09
  • 最后登录2005-07-26
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-10-01 20:54
有哪位大侠知道吗?
zmwk
驱动中牛
驱动中牛
  • 注册日期2001-05-15
  • 最后登录2009-04-05
  • 粉丝0
  • 关注0
  • 积分59分
  • 威望51点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-10-01 22:54
pii->Pipes[1].MaximumTransferSize = 0x0006;

pii->Pipes[1].Interval = 0x00;

会不会写错了?

要和固件一致。
A strong man can save himself. A great man can save another.
marvie
驱动牛犊
驱动牛犊
  • 注册日期2004-03-09
  • 最后登录2005-07-26
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-10-02 09:34
可是我现在就算是不设置,全都按照默认的,即
selurb = USBD_CreateConfigurationRequestEx(pcd, interfaces);

//pii->Pipes[0].MaximumTransferSize = 0x0008;
//pii->Pipes[0].MaximumPacketSize = 0x0008;
//pii->Pipes[0].PipeType = UsbdPipeTypeInterrupt;
//pii->Pipes[0].Interval = 0x00;

//pii->Pipes[1].MaximumTransferSize = 0x0006;
//pii->Pipes[1].MaximumPacketSize = 0x0008;
//pii->Pipes[1].PipeType = UsbdPipeTypeInterrupt;
//pii->Pipes[1].Interval = 0x00;

// Submit the set-configuration request
status = SendAwaitUrb(pFdo, selurb);
这样还是错误啊,大哥,这个会是会是什么问题啊?
游客

返回顶部