阅读:2197回复:2
做的USB驱动,一用WriteFile/ReadFile就重起,请教一下?
做的USB驱动,一用WriteFile/ReadFile就重起,请教一下?
用的二个端点 1 IN BULK 16 2 OUT BULK 64 其它没有了。全是DS自动生成的代码,装上去之后,我找了个U盘插上,然后运行DS生成的测试代码 hDevice = OpenByInterface( &ClassGuid, 0, &Error); 这步没有问题,并且在Monitor中看了 正确的消息 904.826075 Default MonUsb: Entering MonUsbDevice::DefaultPnp with IRP minor function=IRP_MN_QUERY_DEVICE_RELATIONS 904.826104 Default MonUsb: Entering MonUsbDevice::DefaultPnp with IRP minor function=IRP_MN_QUERY_DEVICE_RELATIONS 904.852690 Default MonUsb: Entering MonUsbDevice::OnRemoveDevice 904.852746 Default MonUsb: Entering MonUsbDevice::~MonUsbDevice() (destructor) 907.053092 Default MonUsb: In DriverEntry 907.053152 Default MonUsb: m_bBreakOnEntry loaded from registry, resulting value: [0x00000000] 907.053537 Default MonUsb: AddDevice called 907.053741 Default MonUsb: Entering MonUsbDevice::MonUsbDevice (constructor) 907.053806 Default MonUsb: Entering MonUsbDevice::DefaultPnp with IRP minor function=<unknown minor function> 907.053969 Default MonUsb: Entering MonUsbDevice::DefaultPnp with IRP minor function=IRP_MN_QUERY_RESOURCE_REQUIREMENTS 907.054108 Default MonUsb: Entering MonUsbDevice::DefaultPnp with IRP minor function=IRP_MN_FILTER_RESOURCE_REQUIREMENTS 907.055241 Default MonUsb: Entering MonUsbDevice::OnStartDevice 907.073224 Default MonUsb: USB Configuration OK 907.074044 Default MonUsb: Entering MonUsbDevice::DefaultPnp with IRP minor function=IRP_MN_QUERY_CAPABILITIES 907.074159 Default MonUsb: Entering MonUsbDevice::DefaultPnp with IRP minor function=IRP_MN_QUERY_DEVICE_RELATIONS Default -- end -- 可就是运行到ReadFile或WriteFile时就会自动重起,请问一下怎么回事呀?你们有遇过这样的情况吗 会不会是我的U盘不支持USB2.0协议会这样?还是其它什么原因? QQ:69944601 刚开始学做驱动,如果您也是大家互相交流一下。 其实我知道什么数据也读不出来的也写不了,只是想测试下读写函数的运行。可是这样会导致自己重起??? create也是对的 7.693751 Default MonUsb: In DriverEntry 7.693811 Default MonUsb: m_bBreakOnEntry loaded from registry, resulting value: [0x00000000] 7.694229 Default MonUsb: AddDevice called 7.694479 Default MonUsb: Entering MonUsbDevice::MonUsbDevice (constructor) 7.694544 Default MonUsb: Entering MonUsbDevice::DefaultPnp with IRP minor function=<unknown minor function> 7.694711 Default MonUsb: Entering MonUsbDevice::DefaultPnp with IRP minor function=IRP_MN_QUERY_RESOURCE_REQUIREMENTS 7.694864 Default MonUsb: Entering MonUsbDevice::DefaultPnp with IRP minor function=IRP_MN_FILTER_RESOURCE_REQUIREMENTS 7.695316 Default MonUsb: Entering MonUsbDevice::OnStartDevice 7.713772 Default MonUsb: USB Configuration OK 7.714697 Default MonUsb: Entering MonUsbDevice::DefaultPnp with IRP minor function=IRP_MN_QUERY_CAPABILITIES 7.714822 Default MonUsb: Entering MonUsbDevice::DefaultPnp with IRP minor function=IRP_MN_QUERY_DEVICE_RELATIONS 113.446114 Default MonUsb: Entering MonUsbDevice::Create, IRP: Major=IRP_MJ_CREATE Minor=0x0 Flags=0x884 113.446121 Default MonUsb: 113.446141 Default MonUsb: MonUsbDevice::Create Status 0x00000000 Default -- end -- NTSTATUS status; status = m_Endpoint1IN.SubmitUrb(I, pUrb, LinkTo(ReadComplete), pCompInfo, 0); return status; 把这句改成 NTSTATUS status= STATUS_TIMEOUT; // status = m_Endpoint1IN.SubmitUrb(I, pUrb, LinkTo(ReadComplete), pCompInfo, 0); return status; 就不会了,请问这是为什么呀? |
|
沙发#
发布于:2007-01-21 18:09
难到就没有人知道吗?
|
|
板凳#
发布于:2007-01-22 06:45
用WinDbg调试
|
|
|