首页
社区
课程
招聘
WDF如何发送URB请求
发表于: 2012-12-12 16:32 4469

WDF如何发送URB请求

2012-12-12 16:32
4469
原来基于WDM的驱动大量使用URB, 现在有一个逻辑,需要在prepareHarware(原来是startDevice)的时候,主动给设备发送发送一点东西,发送的是URB请求。

现在我的做法如下,但是在执行WdfUsbTargetPipeSendUrbSynchronously时发生了崩溃, dump文件经分析后,也没看到啥价值.就是wdfFunctions[**]();崩溃.

求wdf可替代方案

URB urb;
NTSTATUS ntStatus     = STATUS_SUCCESS;
PURB pUrb             = &urb;
PDEVICE_CONTEXT          pDevContext;
WDFUSBPIPE               stUSBPipe;

RtlZeroMemory(pUrb,sizeof(struct _URB_CONTROL_VENDOR_OR_CLASS_REQUEST));

pUrb->UrbHeader.Length   = sizeof(struct _URB_CONTROL_VENDOR_OR_CLASS_REQUEST);
pUrb->UrbHeader.Function = URB_FUNCTION_VENDOR_DEVICE;
pUrb->UrbControlVendorClassRequest.TransferBufferLength = ptr->Length;
pUrb->UrbControlVendorClassRequest.TransferBuffer       = ptr->Data;
pUrb->UrbControlVendorClassRequest.Request              = 0xA3;
pUrb->UrbControlVendorClassRequest.Value                = ptr->Address;
pUrb->UrbControlVendorClassRequest.Index                = 0;

pDevContext = CyGetDeviceContext(device);
stUSBPipe = WdfUsbInterfaceGetConfiguredPipe(WdfUsbTargetDeviceGetInterface(pDevContext->CyUsbDevice, 0), 0, NULL);

return WdfUsbTargetPipeSendUrbSynchronously(stUSBPipe, NULL, WDF_NO_SEND_OPTIONS, pUrb); 

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 53
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
问题解决了, 换了一个函数,这个问题就搞定了。 WdfUsbTargetDeviceSendUrbSynchronously(pDevContext->CyUsbDevice, NULL, WDF_NO_SEND_OPTIONS, pUrb);

帖子该怎么处理呢? 来个人吧,准备结贴了
2012-12-14 12:52
0
雪    币: 2242
活跃值: (488)
能力值: ( LV9,RANK:200 )
在线值:
发帖
回帖
粉丝
3
友情接分
2012-12-14 23:13
0
游客
登录 | 注册 方可回帖
返回
//