阅读:1445回复:4
usb驱动高手请进
我这个月要作一个usb驱动,五一前交任务,可现在我对 usb驱动的机制还不是很懂,这个协议在驱动中怎么用,还有irp和urb如何理解,我用driverworks生成的框架如何去改,请指教
|
|
最新喜欢:duguxu... |
沙发#
发布于:2007-04-02 10:26
用户被禁言,该主题自动屏蔽! |
|
板凳#
发布于:2007-04-02 21:59
先谢谢版主了,我不做硬件,只写驱动,协议我看过了,用driver works 生成代码应如何改,我的板子用端点一批传输读写,改如何下手改框架,是不是只改read(kirp,i)和write(kirp,i)
还有 deviceiocontrol 怎么用? |
|
地板#
发布于: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)//等待事件发生 { //得到数据了!!做你想做的,呵呵! } |
|
地下室#
发布于:2007-04-30 15:33
DDK中有个bulkusb例子,我觉得挺好的,基本是一个万能usb驱动,驱动不用改,把应用程序改改就能用了
|
|
|