houhaijun
驱动牛犊
驱动牛犊
  • 注册日期2007-03-11
  • 最后登录2007-07-26
  • 粉丝0
  • 关注0
  • 积分640分
  • 威望65点
  • 贡献值0点
  • 好评度64点
  • 原创分0分
  • 专家分0分
阅读:1445回复:4

usb驱动高手请进

楼主#
更多 发布于:2007-03-30 12:52
  我这个月要作一个usb驱动,五一前交任务,可现在我对 usb驱动的机制还不是很懂,这个协议在驱动中怎么用,还有irp和urb如何理解,我用driverworks生成的框架如何去改,请指教

最新喜欢:

duguxunduguxu...
tracera
禁止发言
禁止发言
  • 注册日期2006-01-09
  • 最后登录2018-09-25
  • 粉丝8
  • 关注0
  • 积分-5788分
  • 威望135321点
  • 贡献值0点
  • 好评度625点
  • 原创分1分
  • 专家分0分
  • 社区居民
沙发#
发布于:2007-04-02 10:26
用户被禁言,该主题自动屏蔽!
houhaijun
驱动牛犊
驱动牛犊
  • 注册日期2007-03-11
  • 最后登录2007-07-26
  • 粉丝0
  • 关注0
  • 积分640分
  • 威望65点
  • 贡献值0点
  • 好评度64点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2007-04-02 21:59
 先谢谢版主了,我不做硬件,只写驱动,协议我看过了,用driver works 生成代码应如何改,我的板子用端点一批传输读写,改如何下手改框架,是不是只改read(kirp,i)和write(kirp,i)
还有 deviceiocontrol  怎么用?
liming1980710
驱动牛犊
驱动牛犊
  • 注册日期2007-04-26
  • 最后登录2007-04-28
  • 粉丝0
  • 关注0
  • 积分80分
  • 威望9点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
地板#
发布于:2007-04-26 13:05
你的端点用批传输读写!恭喜你!你不需要修改任何东西你就可以使用DS向导出来的(BULK)驱动了,当然如果你要用异步方式发送及读取USB设备,仅在你的应用程序中做如下小改动:
               hDev = CreateFile(
        DevInterface.DevicePath(),
        GENERIC_READ | GENERIC_WRITE,
        FILE_SHARE_READ | FILE_SHARE_WRITE,
        NULL,
        OPEN_EXISTING,
        FILE_ATTRIBUTE_NORMAL|FILE_FLAG_OVERLAPPED,//异步方式!!!!!
        NULL
        );

关于应用程序的写法,关键注意以上一点。具体写法主要是用到READFILE 与WRITEFILE。

    ULONG    nWritten;
                HANDLE AAA=::CreateEvent(NULL,TRUE,FALSE,NULL);
    OVERLAPPED os;
    memset(&os,0,sizeof(OVERLAPPED));
    os.hEvent=AAA;

    WriteFile(hDevice, bufout, 5, &nWritten, &os);

        if (WaitForSingleObject(os.hEvent, 1000)==WAIT_OBJECT_0)//等待事件发生
        {
         //得到数据了!!做你想做的,呵呵!
        }
fanzi
驱动小牛
驱动小牛
  • 注册日期2004-12-09
  • 最后登录2013-12-19
  • 粉丝1
  • 关注0
  • 积分1004分
  • 威望754点
  • 贡献值0点
  • 好评度93点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2007-04-30 15:33
DDK中有个bulkusb例子,我觉得挺好的,基本是一个万能usb驱动,驱动不用改,把应用程序改改就能用了
张帆的内核学习论坛 http://bbs.kerneldev.com
游客

返回顶部