4480|5

74

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

求助:WriteFile写USB设备出错 [复制链接]

写数据都返回成功了,用WriteFile()函数写,而且也返回实际写的字节数了,但USB设备就没什么反应,请教各位大虾是应用程序的问题呢还是驱动程序的原因,驱动是自动生成的,没做改动

最新回复

通信方面 的最好也要知道 usb 设备firmware 是怎么接受的阿。。 不知道两边通信 协议 沟通 就困难了  详情 回复 发表于 2007-3-19 15:08
点赞 关注

回复
举报

61

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
这种问题可就难讲了,你能跟踪driver吗?你能跟踪那个USB设备的F/W吗?你有USB协议分析仪抓包吗?只能一个个试了。
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
用BusHounds抓包看看,数据有没有真正写过去
 
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

4
 
用BusHonds检测,没有数据写进去
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

5
 
写数据的驱动程序如下
NTSTATUS Test11Device::Write(KIrp I)
{
        T.Trace(TraceInfo, __FUNCTION__"++.  IRP %p\n", I);

        NTSTATUS status = STATUS_SUCCESS;

        // TODO: Validate the parameters of the IRP.  Replace "FALSE"
        //                 in the following line with error checking code that
        //                 evaulates to TRUE if the request is not valid.
        if (FALSE)
        {
                status = STATUS_INVALID_PARAMETER;
                I.Information() = 0;
                I.PnpComplete(status);

                T.Trace(TraceWarning, __FUNCTION__"--.  IRP %p, STATUS %x\n", I, status);

                return status;
        }

        // Always ok to write 0 elements
        if (I.WriteSize() == 0)
        {
                I.Information() = 0;
                I.PnpComplete(this, status);

                T.Trace(TraceInfo, __FUNCTION__"--.  IRP %p, STATUS %x\n", I, status);

                return status;
        }

        KMemory Mem(I.Mdl());        // Declare a memory object

        // Get a pointer to the caller's buffer.  Note that this
        // routine is safe on all platforms.
        PUCHAR pBuffer = (PUCHAR) Mem.MapToSystemSpace();
        ULONG writeSize = I.WriteSize();
        ULONG bytesSent = writeSize;
        // TODO: At this point, perform any processing for IRP_MJ_WRITE
        //                 To satisfy the write now, transfer data to the driver
        //                 from the caller's buffer at "pBuffer".  Then, indicate
        //                 how much data was transferred:

        ULONG   dwBytesSent = writeSize
       


        I.Information() = bytesSent;

        I.PnpComplete(this, status);

        T.Trace(TraceInfo, __FUNCTION__"--.  IRP %p, STATUS %x\n", I, status);

        return status;
}

是驱动程序的问题吗?请教各位大虾
 
 
 

回复

83

帖子

0

TA的资源

一粒金砂(初级)

6
 
通信方面 的最好也要知道 usb 设备firmware 是怎么接受的阿。。

不知道两边通信 协议 沟通 就困难了
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表