TO USB驱动开发的例程问题

oushengfen 2007-07-23 03:22:27
本人使用Cy7c68013A进行开发,其它例程都已经完成,控制传输找资料已经完成.
只是剩下 DriverObject->MajorFunction[IRP_MJ_WRITE] = Ezusb_Write; //写入数据
DriverObject->MajorFunction[IRP_MJ_READ] = Ezusb_Read; //读取数据


这两个例程没有完成,本人没有写过此类例程,不知如何下手,有知道的朋友告知一下相关的消息也行,谢谢了.
...全文
841 28 打赏 收藏 转发到动态 举报
写回复
用AI写文章
28 条回复
切换为时间正序
请发表友善的回复…
发表回复
footway 2008-01-04
  • 打赏
  • 举报
回复
实际上,在XP下也有问题的。只是屏幕没有显示而已!
试着My computer->property->Advanced->Startup and Recovery auto restart选项勾掉,看看是否能重现问题?
oushengfen 2007-11-19
  • 打赏
  • 举报
回复
zswolf2000

帮我看下这一贴,我的问题好怪的,我这个电源管理例程在XP下都没有任何问题,在2003下就有问题,不知道为什么?
http://topic.csdn.net/u/20070718/11/6f2048d7-9e38-4f36-8d7d-25206b6f8c1b.html?seed=1334204167
oushengfen 2007-11-19
  • 打赏
  • 举报
回复
zswolf2000

你好,你是不是写驱动蛮长时间了。我看了你发的贴子,水平不错啊。

你看那些书籍及例子,有什么心得,可说来听听么?
zswolf2000 2007-10-24
  • 打赏
  • 举报
回复
哪不明白,一起研究嘛
zswolf2000 2007-10-23
  • 打赏
  • 举报
回复
ddk提供的代码,你觉得不够好?
oushengfen 2007-10-23
  • 打赏
  • 举报
回复
呵呵,不是不够好的,还是蛮好的,但是针对实现,他是否有点过于复杂了.呵呵
oushengfen 2007-10-22
  • 打赏
  • 举报
回复
if(fileObject && fileObject- >FsContext)

这个文件对象是需要创建的,在驱动加载时,这个不好控制, 我没有采用此方法,这种方法是DDK的例子的方法.
footway 2007-10-22
  • 打赏
  • 举报
回复
摘抄的代码貌似\WINDDK\2600.1106\src\wdm\usb\bulkusb\sys\bulkdev.c中的。这个是用pipe的方式。
处理irp,也可以将scsi指令放在urb中,传给下一层的设备栈。
zswolf2000 2007-10-22
  • 打赏
  • 举报
回复
对了,你可以把你的驱动发给我,我帮你看看,fanzier@gmail.com
zswolf2000 2007-10-22
  • 打赏
  • 举报
回复
是因为你fileObject- >FsContext为null,fileObject- >FsContext可以记录任意信息,但从这里可以看出是记录PUSBD_PIPE_INFORMATION pipeInformation信息的。
Ezusb驱动我没用过,但大体应该和ddk中的例子bulkusb差不多,fileObject- >FsContext应该在IRP_CREATE中就被赋值了,但你的程序没有成功赋值。
下面摘抄一段bulkusb中的代码

NTSTATUS
BulkUsb_DispatchCreate(
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp
)
{
。。。。
for(i=0; i<interface->NumberOfPipes; i++) {

if(pipeContext == &deviceExtension->PipeContext[i]) {

//
// found a match
//
BulkUsb_DbgPrint(3, ("open pipe %d\n", i));

fileObject->FsContext = &interface->Pipes[i];

ASSERT(fileObject->FsContext);

pipeContext->PipeOpen = TRUE;

ntStatus = STATUS_SUCCESS;

//
// increment OpenHandleCounts
//
InterlockedIncrement(&deviceExtension->OpenHandleCount);

//
// the device is idle if it has no open handles or pending PnP Irps
// since we just received an open handle request, cancel idle req.
//
if(deviceExtension->SSEnable) {

CancelSelectSuspend(deviceExtension);
}
}
}
}

oushengfen 2007-10-22
  • 打赏
  • 举报
回复
是抄的咯,呵呵
对于驱动的读写,直接I/O方式,大伙有没有好的代码.
zswolf2000 2007-10-22
  • 打赏
  • 举报
回复
footway ,你说的没错!
footway 2007-10-20
  • 打赏
  • 举报
回复
那最终是firmware的问题,还是driver的问题?
如果是driver的问题,if(fileObject && fileObject- >FsContext) 判断为false的原因是什么?
想知道下...
oushengfen 2007-10-19
  • 打赏
  • 举报
回复
呵呵,这个问题,我早就解决了,而且这方面已经比较熟悉了,一直放在这里就是想让更多的人来认识来讨论.至cypress没有提供driver sample code么?好像《usb原理与工程开发》有提供实例

这个是没有提供实例的,没实现IRP_MJ_READ的例程的,他们都是使用IRP_MJ_DEVICE_CONTROL这个例程来传输数据的
footway 2007-10-19
  • 打赏
  • 举报
回复
先确认68013A的firmware好了没有?
cypress没有提供driver sample code么?好像《usb原理与工程开发》有提供实例。



oushengfen 2007-10-18
  • 打赏
  • 举报
回复
谢谢各位了,也别光顶了,谁来提供一点信息咯.
oushengfen 2007-09-21
  • 打赏
  • 举报
回复
谢谢各位了,也别光顶了,谁来提供一点信息咯.
FirerFirerFirer 2007-09-20
  • 打赏
  • 举报
回复
帮顶一下
oushengfen 2007-09-19
  • 打赏
  • 举报
回复
谁来帮我顶一下咯.
亮仔86 2007-08-30
  • 打赏
  • 举报
回复
FsContext这个具体内容不太清楚,最有可能这个东西没有搞好。
加载更多回复(8)

21,597

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
  • 驱动开发/核心开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧