阅读:1341回复:2
急问一问题,给50分
根据项目的资料要求
bmRequestType bRequest wValue windex wLength Data 10100001b DFU_GETSTATUS 0 interface 6 Status DFU_GETSTATUS的直为0 用DS生成驱动框架后,我自己添入: NTSTATUS DescriptorDevice::DFU_IOCTL_GETSTATUS_Handler(KIrp I){ NTSTATUS status = STATUS_SUCCESS; PVOID pBuffer = I.IoctlBuffer(); ULONG dwInputBufferSize = I.IoctlInputBufferSize(); ULONG dwOutputBufferSize = I.IoctlOutputBufferSize(); I.Information() = 0; I.Status() = STATUS_SUCCESS; URB u; RtlZeroMemory(&u,sizeof(URB)); m_Lower.BuildClassRequest( reinterpret_cast<PUCHAR>(pBuffer), dwOutputBufferSize, 0, 3, 0, TRUE, TRUE, NULL, 0, URB_FUNCTION_CLASS_INTERFACE , &u ); status = m_Interface.SubmitUrb(&u); if( NT_SUCCESS(status) ) { I.Information() = 6; status = STATUS_SUCCESS; } else { status = STATUS_UNSUCCESSFUL; } return status; } 在应用程序中利用deviceiocontrol调用相关的IOCTROL时,返回错误. 发现问题在于这个操作里边的m_Lower.SubmitUrb(&u);出错,究竟是什么原因呢??? 此外:我利用标准的getstatus命令时: 利用函数usbbuildgetstatus(),或m_Interface.GetStatus(), 发送URB就不会有错.为什么,为什么??????我想很久了,都解决不了,求各位大侠帮我想想办法,急呀!!!! |
|
沙发#
发布于:2005-04-26 00:28
具体发送什么URB?
|
|
|
板凳#
发布于:2005-04-26 13:28
估计你是在m_Interface.submit(&u)时该函数一直不返回所以驱动不响应了啊.
试试设置同步时间m_Interface.submit(&u,NULL,NULL,100);//以ms为单位. 如果找到好的方法可以不设置这个时间,请贴出来看看:) [编辑 - 4/26/05 by searchone] |
|