chenxinyu
驱动牛犊
驱动牛犊
  • 注册日期2004-04-09
  • 最后登录2004-12-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1875回复:11

用DS开发的USB驱程出现问题,20分请教!

楼主#
更多 发布于:2004-11-02 16:48
我想从设备读取64字节的数据到计算机。驱程部分如下:
NTSTATUS D12testDevice::READ_D12_Handler(KIrp I)
{
    NTSTATUS status = STATUS_INSUFFICIENT_RESOURCES;
    KMemory Mem(I.Mdl());
    ULONG dwTotalSize = I.ReadSize(CURRENT);
    ULONG dwMaxSize = m_Endpoint4IN.MaximumTransferSize(); if ( dwTotalSize > dwMaxSize )
{
ASSERT(dwMaxSize);
dwTotalSize = dwMaxSize;
}

    ULONG dwBytesRead = 0;

    // Create an URB to do actual Bulk read from Pipe0
    PURB pUrb = m_Endpoint4IN.BuildBulkTransfer(
Mem,  // Where is data coming from?
dwTotalSize,  // How much data to read?
TRUE,         // direction (TRUE = IN)
NULL      // Link to next URB
);

  
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_Endpoint4IN.SubmitUrb(pUrb, NULL, NULL);

        if ( NT_SUCCESS(status) )
        {
           dwBytesRead = pUrb->UrbBulkOrInterruptTransfer.TransferBufferLength;

   }

delete pUrb;
}


    I.Information() = dwBytesRead;
    return I.PnpComplete(this, status, IO_NO_INCREMENT);

}
应用程序部分相关代码如下:
char  bufOutput[64];
ULONG nOutput=0; // Call device IO Control interface (READ_WORD) in driver
    
if (!DeviceIoControl(m_hDevice,
READ_D12,
NULL,
0,
bufOutput,
64,
&nOutput,
NULL)
  )
{
              return -1;
}
设备能够打开,但当执行上面代码,计算机就重起。请高手们指教。万分感谢。
lake
驱动小牛
驱动小牛
  • 注册日期2001-09-04
  • 最后登录2004-11-12
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-11-03 10:02
看看你的固件endport4是否支持bulk传输,再有如果你的ds版本为2。5或2。6的,在usb的bulk传输中有bug
chenxinyu
驱动牛犊
驱动牛犊
  • 注册日期2004-04-09
  • 最后登录2004-12-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-11-03 13:01
感谢你顶一下,我给你5分。我用的是周立功的开发板。刚开始学驱程。用DS开发。想做个BULK的读端点。请指点一下。
babyzh
驱动牛犊
驱动牛犊
  • 注册日期2002-10-12
  • 最后登录2005-05-10
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-11-04 22:20
m_Endpoint4IN?
D12没有这么多端点啊!
chenxinyu
驱动牛犊
驱动牛犊
  • 注册日期2004-04-09
  • 最后登录2004-12-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-11-05 08:01
其实就是端点2。我用DS自动生成了BULK读写。但是一调用就重起。如果真的是DS有BUG,那我该怎么办。
lake
驱动小牛
驱动小牛
  • 注册日期2001-09-04
  • 最后登录2004-11-12
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-11-09 12:49
周立功班子的endpoint2为bulk传输,所以可能是ds的版本的问题,参考
zzxiaohua
驱动牛犊
驱动牛犊
  • 注册日期2004-04-09
  • 最后登录2004-11-27
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-11-11 17:10
的确是ds版本的问题,我也遇到了同样的问题,在xp环境下,装的ds2.5;ds3.0版本里的BuildBulkTransfer定义为:
PURB BuildBulkTransfer(
   KMemory& Mdl,
   ULONG Length,
   BOOLEAN bIn,
   PURB Link=NULL,
   BOOLEAN bShortOk=FALSE,
   PURB pUrb=NULL
);

FORM 2:

PURB BuildBulkTransfer(
   PVOID Buffer,
   ULONG Length,
   BOOLEAN bIn,
   PURB Link=NULL,
   BOOLEAN bShortOk=FALSE,
   PURB pUrb=NULL
);

chenxinyu
驱动牛犊
驱动牛犊
  • 注册日期2004-04-09
  • 最后登录2004-12-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-11-12 08:49
[quote]周立功班子的endpoint2为bulk传输,所以可能是ds的版本的问题,参考
zzxiaohua
驱动牛犊
驱动牛犊
  • 注册日期2004-04-09
  • 最后登录2004-11-27
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2004-11-12 12:04
改用ds3.1即可,但编译vdwlibs.dsw时可能会出错,从98ddk里拷了一个头文件到2000ddk里就ok啦!
不过,好像我用的ds3.1只能用14天,谁有无限制版的ds3。1呀
luohx75622186
驱动牛犊
驱动牛犊
  • 注册日期2004-11-17
  • 最后登录2004-12-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2004-11-24 11:46
我这里也发生过,不过我分别用win2000ddk下编译通过的驱动程序(XP下),win98ddk下编译的在(win98下),问题就没有发生了.不知道这样有没有问题.
lujunql
驱动小牛
驱动小牛
  • 注册日期2004-06-09
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分21分
  • 威望3点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2004-11-26 09:43
我也遇到过同样的问题!看了“解
xx_focus
驱动中牛
驱动中牛
  • 注册日期2003-08-06
  • 最后登录2007-06-08
  • 粉丝0
  • 关注0
  • 积分96分
  • 威望10点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2004-11-29 11:23
那么2.7版又怎么解决?我没有找到“解
游客

返回顶部