mpf125
驱动牛犊
驱动牛犊
  • 注册日期2007-09-01
  • 最后登录2011-11-16
  • 粉丝0
  • 关注0
  • 积分25分
  • 威望211点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1739回复:2

请大侠分析下面代码蓝屏问题,谢谢了,给分

楼主#
更多 发布于:2009-12-29 12:02
ULONG urbSize = GET_SELECT_INTERFACE_REQUEST_SIZE(pid->bNumEndpoints);
PURB urb = (PURB)ExAllocatePool(NonPagedPool,urbSize);

if (!urb)
{
    status = STATUS_NO_MEMORY;
    KdPrint((" - ErrorSTATUS_NO_MEMORYn\n"));
}

RtlZeroMemory(urb,urbSize);

UsbBuildSelectInterfaceRequest(urb,urbSize,pdx->hconfig,2,(UCHAR)0);
KdPrint(("...Start select interface \n"));
status = SendAwaitUrb(fdo, urb);//此句就蓝屏了
if (!NT_SUCCESS(status))
{
    KdPrint(( " - Error %X trying to select interface\n", status));
    return status;
}
else
{
    KdPrint((" select interface OK\n"));
}
jally76
驱动牛犊
驱动牛犊
  • 注册日期2005-04-28
  • 最后登录2010-11-23
  • 粉丝0
  • 关注0
  • 积分59分
  • 威望590点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2010-01-27 14:34
蓝屏到SendAwaitUrb里面去找,另外蓝屏代码是什么
xzyee
驱动牛犊
驱动牛犊
  • 注册日期2005-08-08
  • 最后登录2010-07-01
  • 粉丝0
  • 关注0
  • 积分48分
  • 威望185点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2010-02-19 02:54
好像你urb没有设置完,参考以下代码(来自Programming the Microsoft Windows Driver Model(2nd) )

UsbBuildSelectInterfaceRequest(urb, size, pdx->hconfig, 0, 1);
urb->UrbSelectInterface.Interface.Length = GET_USBD_INTERFACE_SIZE(npipes);
urb->UrbSelectInterface.Interface.Pipes[0].MaximumTransferSize =  PAGE_SIZE;
NTSTATUS status = SendAwaitUrb(fdo, &urb);

另外,那个2和0 是不是放反了?
游客

返回顶部