archill
驱动牛犊
驱动牛犊
  • 注册日期2004-07-28
  • 最后登录2004-09-10
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1207回复:3

控制代码CTL怎么编写的啊

楼主#
更多 发布于:2004-09-03 15:27
USB应用程序:
目前我的应用程序自己社定的两个双向PIPE
CTL_CODE怎么编写的,它的默认PIPE是0吗?
DeviceIoControl,DeviceControl,**_IOCTL_**_Handler之间的关系如何?
能请你帮忙解答一下我这菜鸟?



yachli
驱动小牛
驱动小牛
  • 注册日期2004-04-12
  • 最后登录2016-03-08
  • 粉丝1
  • 关注0
  • 积分7分
  • 威望111点
  • 贡献值0点
  • 好评度59点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-09-03 16:02
我也是菜鸟,说的不对请见谅。
CTL_CODE里面就是你自己的应用程序了
默认的pipe就是0,control方式
应用程序里面调用DeviceIOcontrol,对应着驱动程序里面的Devicecontrol,就是说参数在这俩函数之间相互传递。
再DeviceControl里面用switch看I.IoctlCode值,转到相对应得,**_IOCTL_**_Handler
yachli
驱动小牛
驱动小牛
  • 注册日期2004-04-12
  • 最后登录2016-03-08
  • 粉丝1
  • 关注0
  • 积分7分
  • 威望111点
  • 贡献值0点
  • 好评度59点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-09-03 16:03
switch (I.IoctlCode())
{
case POCKETDV_IOCTL_Read:
status = POCKETDV_IOCTL_Read_Handler(I);
break;

case POCKETDV_IOCTL_Write:
status = POCKETDV_IOCTL_Write_Handler(I);
break;

case POCKETDV_IOCTL_ReadWrite:
status = POCKETDV_IOCTL_ReadWrite_Handler(I);
break;

default:
// Unrecognized IOCTL request
status = STATUS_INVALID_PARAMETER;
break;
}
archill
驱动牛犊
驱动牛犊
  • 注册日期2004-07-28
  • 最后登录2004-09-10
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-09-03 16:24
你好,感谢你的解答!!!!
我最终是想清楚**_IOCTL_handler_**
里面的代码怎么编写

就如论坛里面有篇"10分钟开发一个USB驱动程序"

最后在**_IOCTL_handler_**里面加入了控制LED ON/OFF
的代码,可是我不清楚他是怎么工作的,能请你帮我解释一下吗

游客

返回顶部