首 页文档资料下载资料维修视频包年699元
请登录  |  免费注册
当前位置:精通维修下载 > 文档资料 > 家电技术 > 单元电路介绍 > 其它电路
USB设备驱动程序的设计
来源:本站整理  作者:佚名  2009-06-16 10:22:42



  ULONG numData;

  numData=*(PUCHAR)I.IoctlBuffer();//设置读取的数据个数

  pUrb=m_Lower.BuildVendorRequest(

  (PUCHAR)I.IoctlBuffer(),//驱动程序存放读取的数据的内存区

  numData,//wLength,读取的数据个数

  0,

  0x0c,//bRequest

  0,//wValue

  TRUE,//input

  TRUE,

  NULL,

  0x0472,//wIndex,传输到固件程序的读数命令码

  URB_FUNCTION_VENDOR_ENDPOINT,

  NULL

  );

  if(pUrb==NULL)

  {

  I.Information() =0;

  status=STATUS_INSUFFICIENT_RESOURCES;

  }

  else

  {

  I.Information() =numData;

  status=m_Lower.SubmitUrb(pUrb,NULL,NULL,0);

  delete pUrb;

  }

  return status;

  }

  对象I包含了应用程序下传的IRP内容,包括命令或数据等参数,函数BuildVendorRequest用来分配并初始化一个用于厂商请求的URB(USB Request Block),该URB将作为下传IRP的一个参数,通过函数SubmitUrb发送给总线驱动程序,以便完成与硬件的通信。

  在初始化URB时需要了解USB的传输方式及传输协议,该功能使用了USB的控制传输方式,该方式包括三个阶段:设置阶段、数据阶段和状态阶段,其中数据阶段可选,开发者主要关注设置阶段中的8个关键字节的定义,8字节分成了5个字段,定义了传输请求及相关信息,这8个字节的格式如图3所示。

  bmRequestType

  bRequest

  wValue

  wIndex

  wLength

上一页  [1] [2] [3] [4]  下一页

关键词:

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分)

推荐阅读

图文阅读

热门阅读

Copyright © 2007-2017 down.gzweix.Com. All Rights Reserved .
页面执行时间:200,589.80000 毫秒