ztpgiggs
驱动牛犊
驱动牛犊
  • 注册日期2010-07-22
  • 最后登录2010-08-27
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望61点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2473回复:4

崩溃了,调一天SubmitURB( ) 时总是蓝屏

楼主#
更多 发布于:2010-08-10 17:16
VC6 + DDK + DriverStudio    USB过滤驱动

NTSTATUS UsbFilterDevice::InternalDeviceControl(KIrp I)
{
    USHORT USBfunction;

    if (I.IoctlCode() != IOCTL_INTERNAL_USB_SUBMIT_URB)
        return DefaultPnp(I);

    PURB p = I.Urb(CURRENT);    // get URB pointer from IRP
    
    if (p)
    {
        USBfunction = p->UrbHeader.Function;
        switch (USBfunction)
        {
            case URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER:
            {
                if (g_status.m_bCommand == TRUE)
                {
                    PURB pUrb = m_Usb.BuildVendorRequest(
                        g_status.m_comBuffer,
                        8,
       0x22,
       0x9,
       0x0201,
       FALSE,
       FALSE,
       NULL,
       0,
       URB_FUNCTION_CLASS_INTERFACE
       );
                      
                       //就是这句蓝屏了,把它注释掉就没事了. 其中m_Usb是KlowerDevice
                       m_Usb.SubmitUrb(pUrb, NULL, NULL, 0) ;

      g_status.m_bCommand = FALSE;
       delete pUrb;
    
                       return PassThrough(I);
}

自己调半天,上网看的都是说Pipe没有设好。我换KUsbPipe试过也是蓝屏。我是新手,望各位大侠打救,希望说得基础一些。
ztpgiggs
驱动牛犊
驱动牛犊
  • 注册日期2010-07-22
  • 最后登录2010-08-27
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望61点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2010-08-10 22:35
自己顶一个,顺便补充下Pipe的设置,使用EndPoint0
KUsbPipe m_pipe;
m_pipe.Initialize (m_Usb, 0, 0);
znsoft
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2023-10-25
  • 粉丝300
  • 关注6
  • 积分910分
  • 威望14796点
  • 贡献值7点
  • 好评度2410点
  • 原创分5分
  • 专家分100分
  • 社区居民
  • 最爱沙发
  • 社区明星
板凳#
发布于:2010-08-11 10:53
看dump文件,不行就把 verifier 打开
http://www.zndev.com 免费源码交换网 ----------------------------- 软件创造价值,驱动提供力量! 淡泊以明志,宁静以致远。 ---------------------------------- 勤用搜索,多查资料,先搜再问。
zhonghong200
驱动牛犊
驱动牛犊
  • 注册日期2009-12-03
  • 最后登录2012-04-24
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望311点
  • 贡献值2点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2010-08-16 18:05
初始化的端点出错了,使用driverstudio 生成的框架有bug的,必须加上0x

比如
    // Initialize each Pipe object
    m_Endpoint1In.Initialize(m_Lower, 0x81, 16);    
    m_Endpoint1Out.Initialize(m_Lower, 1, 16);    
    m_Endpoint2In.Initialize(m_Lower, 0x82, 64);    
    m_Endpoint2Out.Initialize(m_Lower, 2, 64);    

而向导自动生成的代码在0x81和0x82前面都漏掉了0x,
Pegram
论坛版主
论坛版主
  • 注册日期2005-12-03
  • 最后登录2013-08-23
  • 粉丝13
  • 关注5
  • 积分1333分
  • 威望4717点
  • 贡献值1点
  • 好评度78点
  • 原创分0分
  • 专家分2分
地下室#
发布于:2010-10-03 13:35
再次强烈建议大家,不要再使用DriverStudio做相关开发了!!!!
N次了吧.
《寒江独钓》与《竹林蹊径》的合作作者。精通USB开发,设计了CY001 USB驱动套件(http://bbs.driverdevelop.com/read.php?tid-119314.html)。
游客

返回顶部